[INFO] cloning repository https://github.com/EliasLittle/Errand [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/EliasLittle/Errand" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEliasLittle%2FErrand", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEliasLittle%2FErrand'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cdb1af2cf403618c1e5ea13245f79c15d4c50899 [INFO] linting EliasLittle/Errand against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEliasLittle%2FErrand" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/EliasLittle/Errand [INFO] finished tweaking git repo https://github.com/EliasLittle/Errand [INFO] tweaked toml for git repo https://github.com/EliasLittle/Errand written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/EliasLittle/Errand on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/EliasLittle/Errand already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded cranelift-module v0.121.1 [INFO] [stderr] Downloaded cranelift-control v0.121.1 [INFO] [stderr] Downloaded unicode-ident v1.0.15 [INFO] [stderr] Downloaded cranelift-bitset v0.121.1 [INFO] [stderr] Downloaded cranelift v0.121.1 [INFO] [stderr] Downloaded cranelift-object v0.121.1 [INFO] [stderr] Downloaded cranelift-codegen-shared v0.121.1 [INFO] [stderr] Downloaded cranelift-native v0.121.1 [INFO] [stderr] Downloaded wasmtime-math v34.0.1 [INFO] [stderr] Downloaded target-lexicon v0.13.2 [INFO] [stderr] Downloaded humantime v2.2.0 [INFO] [stderr] Downloaded cranelift-srcgen v0.121.1 [INFO] [stderr] Downloaded cranelift-bforest v0.121.1 [INFO] [stderr] Downloaded cranelift-entity v0.121.1 [INFO] [stderr] Downloaded cranelift-assembler-x64 v0.121.1 [INFO] [stderr] Downloaded cranelift-assembler-x64-meta v0.121.1 [INFO] [stderr] Downloaded cranelift-frontend v0.121.1 [INFO] [stderr] Downloaded cranelift-codegen-meta v0.121.1 [INFO] [stderr] Downloaded cranelift-isle v0.121.1 [INFO] [stderr] Downloaded regex v1.11.2 [INFO] [stderr] Downloaded regalloc2 v0.12.2 [INFO] [stderr] Downloaded regex-automata v0.4.10 [INFO] [stderr] Downloaded cranelift-codegen v0.121.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ef590f53f28c113979b7a6fad7c478ded566fdc3a6f1cf84baac978246ac4688 [INFO] running `Command { std: "docker" "start" "-a" "ef590f53f28c113979b7a6fad7c478ded566fdc3a6f1cf84baac978246ac4688", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ef590f53f28c113979b7a6fad7c478ded566fdc3a6f1cf84baac978246ac4688", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ef590f53f28c113979b7a6fad7c478ded566fdc3a6f1cf84baac978246ac4688", kill_on_drop: false }` [INFO] [stdout] ef590f53f28c113979b7a6fad7c478ded566fdc3a6f1cf84baac978246ac4688 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c9357b0fa631de8abe681b7f910f20902fc05fd6fe9d58a9aa47e01c16f6185c [INFO] running `Command { std: "docker" "start" "-a" "c9357b0fa631de8abe681b7f910f20902fc05fd6fe9d58a9aa47e01c16f6185c", kill_on_drop: false }` [INFO] [stderr] Compiling cranelift-srcgen v0.121.1 [INFO] [stderr] Compiling cranelift-isle v0.121.1 [INFO] [stderr] Compiling cranelift-codegen-shared v0.121.1 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking cranelift-bitset v0.121.1 [INFO] [stderr] Compiling target-lexicon v0.13.2 [INFO] [stderr] Checking arbitrary v1.4.1 [INFO] [stderr] Compiling unicode-ident v1.0.15 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Checking hashbrown v0.15.4 [INFO] [stderr] Checking memchr v2.7.5 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Checking anstyle-query v1.1.3 [INFO] [stderr] Checking regex-syntax v0.8.6 [INFO] [stderr] Compiling object v0.36.7 [INFO] [stderr] Compiling proc-macro2 v1.0.93 [INFO] [stderr] Checking anstyle v1.0.11 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking cranelift-entity v0.121.1 [INFO] [stderr] Compiling cranelift-assembler-x64-meta v0.121.1 [INFO] [stderr] Compiling thiserror v1.0.65 [INFO] [stderr] Checking anstream v0.6.19 [INFO] [stderr] Checking clap_lex v0.7.5 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking cranelift-bforest v0.121.1 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Checking bumpalo v3.19.0 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Checking clap_builder v4.5.41 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking cranelift-control v0.121.1 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Checking regalloc2 v0.12.2 [INFO] [stderr] Compiling cranelift-codegen-meta v0.121.1 [INFO] [stderr] Checking gimli v0.31.1 [INFO] [stderr] Checking wasmtime-math v34.0.1 [INFO] [stderr] Compiling cranelift-assembler-x64 v0.121.1 [INFO] [stderr] Checking regex-automata v0.4.10 [INFO] [stderr] Compiling cranelift-codegen v0.121.1 [INFO] [stderr] Compiling clap_derive v4.5.41 [INFO] [stderr] Compiling thiserror-impl v1.0.65 [INFO] [stderr] Checking regex v1.11.2 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking clap v4.5.41 [INFO] [stderr] Checking cranelift-module v0.121.1 [INFO] [stderr] Checking cranelift-frontend v0.121.1 [INFO] [stderr] Checking cranelift-native v0.121.1 [INFO] [stderr] Checking cranelift v0.121.1 [INFO] [stderr] Checking cranelift-object v0.121.1 [INFO] [stderr] Checking Errand v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/frontend/parser.rs:529:13 [INFO] [stdout] | [INFO] [stdout] 529 | else_branch: else_branch [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_branch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TypeExpression` [INFO] [stdout] --> src/frontend/resolver.rs:4:53 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::frontend::ast::{Expression, Program, Id, TypeExpression}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/frontend/lower.rs:31:21 [INFO] [stdout] | [INFO] [stdout] 31 | body: body, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lower::*` [INFO] [stdout] --> src/frontend/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use lower::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/backend/interpreter.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Linkage` and `ModuleError` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use cranelift_module::{Module, Linkage, ModuleError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ExternalName` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:8:39 [INFO] [stdout] | [INFO] [stdout] 8 | use cranelift_codegen::ir::{AbiParam, ExternalName}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FuncRef` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:9:36 [INFO] [stdout] | [INFO] [stdout] 9 | use cranelift_codegen::ir::{Value, FuncRef}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cranelift_codegen::print_errors::pretty_error` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use cranelift_codegen::print_errors::pretty_error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/frontend/parser.rs:529:13 [INFO] [stdout] | [INFO] [stdout] 529 | else_branch: else_branch [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_branch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TypeExpression` [INFO] [stdout] --> src/frontend/resolver.rs:4:53 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::frontend::ast::{Expression, Program, Id, TypeExpression}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/frontend/lower.rs:31:21 [INFO] [stdout] | [INFO] [stdout] 31 | body: body, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/backend/preir_gen.rs:261:17 [INFO] [stdout] | [INFO] [stdout] 261 | iterator: iterator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `iterator` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `backend::interpreter` [INFO] [stdout] --> src/backend/preir.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::{backend::interpreter, frontend::ast::{BinaryOperator, FieldDefinition, Parameter, TypeExpression, UnaryOperator}}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `instr_index` should have an upper camel case name [INFO] [stdout] --> src/backend/preir.rs:204:10 [INFO] [stdout] | [INFO] [stdout] 204 | pub type instr_index = i64; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `InstrIndex` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `decl_index` should have an upper camel case name [INFO] [stdout] --> src/backend/preir.rs:205:10 [INFO] [stdout] | [INFO] [stdout] 205 | pub type decl_index = i64; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `DeclIndex` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/backend/worklist.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / /// Adapted from System-F-ω to work with imperative instruction sequences [INFO] [stdout] 9 | | [INFO] [stdout] | |_^ [INFO] [stdout] 10 | pub type TyVar = String; [INFO] [stdout] | -------------- the comment documents this type alias [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lower::*` [INFO] [stdout] --> src/frontend/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use lower::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/backend/interpreter.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Linkage` and `ModuleError` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:7:32 [INFO] [stdout] | [INFO] [stdout] 7 | use cranelift_module::{Module, Linkage, ModuleError}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ExternalName` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:8:39 [INFO] [stdout] | [INFO] [stdout] 8 | use cranelift_codegen::ir::{AbiParam, ExternalName}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FuncRef` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:9:36 [INFO] [stdout] | [INFO] [stdout] 9 | use cranelift_codegen::ir::{Value, FuncRef}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `cranelift_codegen::print_errors::pretty_error` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use cranelift_codegen::print_errors::pretty_error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/backend/preir_gen.rs:261:17 [INFO] [stdout] | [INFO] [stdout] 261 | iterator: iterator, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `iterator` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `backend::interpreter` [INFO] [stdout] --> src/backend/preir.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::{backend::interpreter, frontend::ast::{BinaryOperator, FieldDefinition, Parameter, TypeExpression, UnaryOperator}}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `instr_index` should have an upper camel case name [INFO] [stdout] --> src/backend/preir.rs:204:10 [INFO] [stdout] | [INFO] [stdout] 204 | pub type instr_index = i64; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `InstrIndex` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `decl_index` should have an upper camel case name [INFO] [stdout] --> src/backend/preir.rs:205:10 [INFO] [stdout] | [INFO] [stdout] 205 | pub type decl_index = i64; [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `DeclIndex` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/backend/worklist.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / /// Adapted from System-F-ω to work with imperative instruction sequences [INFO] [stdout] 9 | | [INFO] [stdout] | |_^ [INFO] [stdout] 10 | pub type TyVar = String; [INFO] [stdout] | -------------- the comment documents this type alias [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/frontend/parser.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | ... Expression::Identifier { id, type_expr } => Ok(Expression::BinaryOp { operator: BinaryOperator::Assignment, left: Box::new(lh... [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/frontend/parser.rs:226:50 [INFO] [stdout] | [INFO] [stdout] 226 | ... Expression::Identifier { id, type_expr } => Ok(Expression::BinaryOp { operator: BinaryOperator::Assignment, left: Box::new(lh... [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/frontend/resolver.rs:58:68 [INFO] [stdout] | [INFO] [stdout] 58 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign: _ } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `return_type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/frontend/type_inference.rs:303:66 [INFO] [stdout] | [INFO] [stdout] 303 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign: _ } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field_ty` [INFO] [stdout] --> src/frontend/type_inference.rs:491:45 [INFO] [stdout] | [INFO] [stdout] 491 | ... if let Some(field_ty) = fields.get(field_name) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/frontend/type_inference.rs:585:35 [INFO] [stdout] | [INFO] [stdout] 585 | let mut changed = false; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/frontend/parser.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | ... Expression::Identifier { id, type_expr } => Ok(Expression::BinaryOp { operator: BinaryOperator::Assignment, left: Box::new(lh... [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/frontend/parser.rs:226:50 [INFO] [stdout] | [INFO] [stdout] 226 | ... Expression::Identifier { id, type_expr } => Ok(Expression::BinaryOp { operator: BinaryOperator::Assignment, left: Box::new(lh... [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var` [INFO] [stdout] --> src/frontend/type_inference.rs:617:28 [INFO] [stdout] | [INFO] [stdout] 617 | (Type::Unknown(var), _) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var` [INFO] [stdout] --> src/frontend/type_inference.rs:624:31 [INFO] [stdout] | [INFO] [stdout] 624 | (_, Type::Unknown(var)) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interpreter` [INFO] [stdout] --> src/backend/interpreter.rs:98:20 [INFO] [stdout] | [INFO] [stdout] 98 | fn call(&self, interpreter: &mut Interpreter, arguments: Vec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interpreter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/backend/interpreter.rs:158:44 [INFO] [stdout] | [INFO] [stdout] 158 | Some(t.fields.iter().map(|(k, v)| Value::Type(*v.clone()).to_type_expr()).collect()) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/backend/interpreter.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ControlFlow::Return(val) => unreachable!(), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iterator` [INFO] [stdout] --> src/backend/interpreter.rs:279:31 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `iterator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `range` [INFO] [stdout] --> src/backend/interpreter.rs:279:41 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^^ help: try ignoring the field: `range: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/backend/interpreter.rs:279:48 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/backend/interpreter.rs:285:40 [INFO] [stdout] | [INFO] [stdout] 285 | fn eval_identifier(&self, id: &Id, type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/backend/interpreter.rs:328:34 [INFO] [stdout] | [INFO] [stdout] 328 | fn handle_div_by_zero(&self, operator: &BinaryOperator, left: &Value, right: &Value) -> Result src/backend/interpreter.rs:367:42 [INFO] [stdout] | [INFO] [stdout] 367 | (BinaryOperator::Assignment, left_val, right_val) => { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/backend/interpreter.rs:368:53 [INFO] [stdout] | [INFO] [stdout] 368 | if let Expression::Identifier { id, type_expr } = left { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:391:49 [INFO] [stdout] | [INFO] [stdout] 391 | (BinaryOperator::Divide, Value::Int(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:391:64 [INFO] [stdout] | [INFO] [stdout] 391 | (BinaryOperator::Divide, Value::Int(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:392:51 [INFO] [stdout] | [INFO] [stdout] 392 | (BinaryOperator::Divide, Value::Float(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:392:68 [INFO] [stdout] | [INFO] [stdout] 392 | (BinaryOperator::Divide, Value::Float(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:393:49 [INFO] [stdout] | [INFO] [stdout] 393 | (BinaryOperator::Divide, Value::Int(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:393:66 [INFO] [stdout] | [INFO] [stdout] 393 | (BinaryOperator::Divide, Value::Int(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:394:51 [INFO] [stdout] | [INFO] [stdout] 394 | (BinaryOperator::Divide, Value::Float(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:394:66 [INFO] [stdout] | [INFO] [stdout] 394 | (BinaryOperator::Divide, Value::Float(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/frontend/resolver.rs:58:68 [INFO] [stdout] | [INFO] [stdout] 58 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign: _ } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `return_type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:187:81 [INFO] [stdout] | [INFO] [stdout] 187 | ...: &[Parameter], return_type_expr: &Option) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:216:89 [INFO] [stdout] | [INFO] [stdout] 216 | ...: &[Parameter], return_type_expr: &Option) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:279:75 [INFO] [stdout] | [INFO] [stdout] 279 | fn add_function_to_module(&mut self, name: &str, func: &mut Function, parameters: &[Parameter]) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parameters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/frontend/type_inference.rs:303:66 [INFO] [stdout] | [INFO] [stdout] 303 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign: _ } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/backend/cranelift_compiler.rs:346:13 [INFO] [stdout] | [INFO] [stdout] 346 | let mut ffi_functions = if format!("{}", arch) == "aarch64" && format!("{}", os) == "darwin" { [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field_ty` [INFO] [stdout] --> src/frontend/type_inference.rs:491:45 [INFO] [stdout] | [INFO] [stdout] 491 | ... if let Some(field_ty) = fields.get(field_name) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_field_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `changed` is never read [INFO] [stdout] --> src/frontend/type_inference.rs:585:35 [INFO] [stdout] | [INFO] [stdout] 585 | let mut changed = false; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var` [INFO] [stdout] --> src/frontend/type_inference.rs:617:28 [INFO] [stdout] | [INFO] [stdout] 617 | (Type::Unknown(var), _) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `var` [INFO] [stdout] --> src/frontend/type_inference.rs:624:31 [INFO] [stdout] | [INFO] [stdout] 624 | (_, Type::Unknown(var)) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_var` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interpreter` [INFO] [stdout] --> src/backend/interpreter.rs:98:20 [INFO] [stdout] | [INFO] [stdout] 98 | fn call(&self, interpreter: &mut Interpreter, arguments: Vec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interpreter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/backend/interpreter.rs:158:44 [INFO] [stdout] | [INFO] [stdout] 158 | Some(t.fields.iter().map(|(k, v)| Value::Type(*v.clone()).to_type_expr()).collect()) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/backend/interpreter.rs:252:41 [INFO] [stdout] | [INFO] [stdout] 252 | ControlFlow::Return(val) => unreachable!(), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iterator` [INFO] [stdout] --> src/backend/interpreter.rs:279:31 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `iterator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `range` [INFO] [stdout] --> src/backend/interpreter.rs:279:41 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^^ help: try ignoring the field: `range: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/backend/interpreter.rs:279:48 [INFO] [stdout] | [INFO] [stdout] 279 | ... Expression::For { iterator, range, body } => Err(ControlFlow::Err("For loops not implemented in interpreter, please desugar".... [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/backend/interpreter.rs:285:40 [INFO] [stdout] | [INFO] [stdout] 285 | fn eval_identifier(&self, id: &Id, type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/backend/interpreter.rs:328:34 [INFO] [stdout] | [INFO] [stdout] 328 | fn handle_div_by_zero(&self, operator: &BinaryOperator, left: &Value, right: &Value) -> Result src/backend/cranelift_compiler.rs:685:42 [INFO] [stdout] | [INFO] [stdout] 685 | Expression::Identifier { id, type_expr } => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:46 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:50 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:62 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:68 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `return_type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1088:44 [INFO] [stdout] | [INFO] [stdout] 1088 | Expression::StructDefinition { id, fields } => { [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fields` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1088:48 [INFO] [stdout] | [INFO] [stdout] 1088 | Expression::StructDefinition { id, fields } => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `fields: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `func` [INFO] [stdout] --> src/backend/ir_lowering.rs:29:48 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn compile_clif_to_machine_code(&self, func: Function) -> Result, String> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_func` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `left_val` [INFO] [stdout] --> src/backend/interpreter.rs:367:42 [INFO] [stdout] | [INFO] [stdout] 367 | (BinaryOperator::Assignment, left_val, right_val) => { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/backend/interpreter.rs:368:53 [INFO] [stdout] | [INFO] [stdout] 368 | if let Expression::Identifier { id, type_expr } = left { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:391:49 [INFO] [stdout] | [INFO] [stdout] 391 | (BinaryOperator::Divide, Value::Int(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:391:64 [INFO] [stdout] | [INFO] [stdout] 391 | (BinaryOperator::Divide, Value::Int(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:392:51 [INFO] [stdout] | [INFO] [stdout] 392 | (BinaryOperator::Divide, Value::Float(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `program` [INFO] [stdout] --> src/backend/ir_lowering.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn lower_to_llvm(&self, program: &Program) -> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:392:68 [INFO] [stdout] | [INFO] [stdout] 392 | (BinaryOperator::Divide, Value::Float(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:393:49 [INFO] [stdout] | [INFO] [stdout] 393 | (BinaryOperator::Divide, Value::Int(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:393:66 [INFO] [stdout] | [INFO] [stdout] 393 | (BinaryOperator::Divide, Value::Int(l), Value::Float(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `l` [INFO] [stdout] --> src/backend/interpreter.rs:394:51 [INFO] [stdout] | [INFO] [stdout] 394 | (BinaryOperator::Divide, Value::Float(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `r` [INFO] [stdout] --> src/backend/interpreter.rs:394:66 [INFO] [stdout] | [INFO] [stdout] 394 | (BinaryOperator::Divide, Value::Float(l), Value::Int(r)) => self.handle_div_by_zero(operator, &left_val, &right_val), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:47:36 [INFO] [stdout] | [INFO] [stdout] 47 | Instr::VarDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:48:37 [INFO] [stdout] | [INFO] [stdout] 48 | Instr::FuncDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:49:39 [INFO] [stdout] | [INFO] [stdout] 49 | Instr::StructDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:187:81 [INFO] [stdout] | [INFO] [stdout] 187 | ...: &[Parameter], return_type_expr: &Option) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:216:89 [INFO] [stdout] | [INFO] [stdout] 216 | ...: &[Parameter], return_type_expr: &Option) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:279:75 [INFO] [stdout] | [INFO] [stdout] 279 | fn add_function_to_module(&mut self, name: &str, func: &mut Function, parameters: &[Parameter]) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parameters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/backend/cranelift_compiler.rs:346:13 [INFO] [stdout] | [INFO] [stdout] 346 | let mut ffi_functions = if format!("{}", arch) == "aarch64" && format!("{}", os) == "darwin" { [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:685:42 [INFO] [stdout] | [INFO] [stdout] 685 | Expression::Identifier { id, type_expr } => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:46 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:50 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:62 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `return_type_expr` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1058:68 [INFO] [stdout] | [INFO] [stdout] 1058 | Expression::FunctionDefinition { id, parameters, body, return_type_expr, foreign } => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try ignoring the field: `return_type_expr: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1088:44 [INFO] [stdout] | [INFO] [stdout] 1088 | Expression::StructDefinition { id, fields } => { [INFO] [stdout] | ^^ help: try ignoring the field: `id: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fields` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1088:48 [INFO] [stdout] | [INFO] [stdout] 1088 | Expression::StructDefinition { id, fields } => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `fields: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `func` [INFO] [stdout] --> src/backend/ir_lowering.rs:29:48 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn compile_clif_to_machine_code(&self, func: Function) -> Result, String> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_func` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `program` [INFO] [stdout] --> src/backend/ir_lowering.rs:51:33 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn lower_to_llvm(&self, program: &Program) -> Result { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:47:36 [INFO] [stdout] | [INFO] [stdout] 47 | Instr::VarDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:48:37 [INFO] [stdout] | [INFO] [stdout] 48 | Instr::FuncDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data` [INFO] [stdout] --> src/backend/preir.rs:49:39 [INFO] [stdout] | [INFO] [stdout] 49 | Instr::StructDecl(data) => format!(" {}", self.format_instr_with_context(instr)), [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `tokens` is never read [INFO] [stdout] --> src/frontend/lexer.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 207 | pub struct Lexer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 208 | source: String, [INFO] [stdout] 209 | tokens: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_identifier_start` and `read_multiline_comment` are never used [INFO] [stdout] --> src/frontend/lexer.rs:281:8 [INFO] [stdout] | [INFO] [stdout] 217 | impl Lexer { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 281 | fn is_identifier_start(&self, c: char) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | fn read_multiline_comment(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `current` is never used [INFO] [stdout] --> src/frontend/parser.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 16 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | fn current(&self) -> Result<&Token, String> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_subset` is never used [INFO] [stdout] --> src/frontend/type_inference.rs:691:8 [INFO] [stdout] | [INFO] [stdout] 267 | impl TypeInferencer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 691 | fn is_subset(&self, s1: &[Type], s2: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_numeric`, `is_subset`, and `is_disjoint` are never used [INFO] [stdout] --> src/frontend/type_inference.rs:698:8 [INFO] [stdout] | [INFO] [stdout] 697 | impl Type { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 698 | fn is_numeric(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 712 | fn is_subset(&self, other: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 719 | fn is_disjoint(&self, other: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_any` is never used [INFO] [stdout] --> src/backend/interpreter.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 24 | trait Callable { [INFO] [stdout] | -------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 29 | fn as_any(&self) -> &dyn Any; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `builder_ctx` is never read [INFO] [stdout] --> src/backend/cranelift_compiler.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct CraneliftCompiler { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 21 | builder_ctx: FunctionBuilderContext, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | return std::mem::discriminant(self) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 - return std::mem::discriminant(self) [INFO] [stdout] 73 + std::mem::discriminant(self) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | / match self { [INFO] [stdout] 101 | | TokenType::Carrot [INFO] [stdout] 102 | | | TokenType::Assignment => true, [INFO] [stdout] 103 | | _ => false, [INFO] [stdout] 104 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 100 ~ matches!(self, TokenType::Carrot [INFO] [stdout] 101 + | TokenType::Assignment) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | / match self { [INFO] [stdout] 109 | | TokenType::Plus [INFO] [stdout] 110 | | | TokenType::Minus [INFO] [stdout] 111 | | | TokenType::Asterisk [INFO] [stdout] ... | [INFO] [stdout] 126 | | _ => false, [INFO] [stdout] 127 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 108 ~ matches!(self, TokenType::Plus [INFO] [stdout] 109 + | TokenType::Minus [INFO] [stdout] 110 + | TokenType::Asterisk [INFO] [stdout] 111 + | TokenType::Slash [INFO] [stdout] 112 + | TokenType::Modulo [INFO] [stdout] 113 + | TokenType::Carrot [INFO] [stdout] 114 + | TokenType::And [INFO] [stdout] 115 + | TokenType::Or [INFO] [stdout] 116 + | TokenType::Pipe [INFO] [stdout] 117 + | TokenType::Dot [INFO] [stdout] 118 + | TokenType::LessThan [INFO] [stdout] 119 + | TokenType::GreaterThan [INFO] [stdout] 120 + | TokenType::LessThanEqual [INFO] [stdout] 121 + | TokenType::GreaterThanEqual [INFO] [stdout] 122 + | TokenType::Equal [INFO] [stdout] 123 + | TokenType::NotEqual [INFO] [stdout] 124 + | TokenType::Assignment) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / match self { [INFO] [stdout] 132 | | TokenType::Minus [INFO] [stdout] 133 | | | TokenType::Bang => true, [INFO] [stdout] 134 | | _ => false, [INFO] [stdout] 135 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 131 ~ matches!(self, TokenType::Minus [INFO] [stdout] 132 + | TokenType::Bang) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/frontend/lexer.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | / match self { [INFO] [stdout] 140 | | _ => false, [INFO] [stdout] 141 | | } [INFO] [stdout] | |_________^ help: consider using the match body instead: `false` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | / match self { [INFO] [stdout] 146 | | TokenType::Comment(_) [INFO] [stdout] 147 | | |TokenType::BlockComment(_, _, _) => true, [INFO] [stdout] 148 | | _ => false, [INFO] [stdout] 149 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 145 ~ matches!(self, TokenType::Comment(_) [INFO] [stdout] 146 + |TokenType::BlockComment(_, _, _)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:278:9 [INFO] [stdout] | [INFO] [stdout] 278 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 278 - return false; [INFO] [stdout] 278 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:386:13 [INFO] [stdout] | [INFO] [stdout] 386 | return self.read_block_comment() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 386 - return self.read_block_comment() [INFO] [stdout] 386 + self.read_block_comment() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:388:13 [INFO] [stdout] | [INFO] [stdout] 388 | return self.read_inline_comment() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 388 - return self.read_inline_comment() [INFO] [stdout] 388 + self.read_inline_comment() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/frontend/lexer.rs:398:15 [INFO] [stdout] | [INFO] [stdout] 398 | while self.current_char.is_digit(10) || (self.current_char == '.' && !has_decimal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:606:9 [INFO] [stdout] | [INFO] [stdout] 606 | return tok [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 606 - return tok [INFO] [stdout] 606 + tok [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/frontend/lexer.rs:630:12 [INFO] [stdout] | [INFO] [stdout] 630 | if file_path != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!file_path.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:660:5 [INFO] [stdout] | [INFO] [stdout] 660 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 660 - return false; [INFO] [stdout] 660 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/frontend/parser.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | while let Some(next) = self.tokens.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for next in self.tokens.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/frontend/parser.rs:165:16 [INFO] [stdout] | [INFO] [stdout] 165 | if !(current.precedence()? >= min_precedence) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(current.precedence()? < min_precedence)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `tokens` is never read [INFO] [stdout] --> src/frontend/lexer.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 207 | pub struct Lexer { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 208 | source: String, [INFO] [stdout] 209 | tokens: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_identifier_start` and `read_multiline_comment` are never used [INFO] [stdout] --> src/frontend/lexer.rs:281:8 [INFO] [stdout] | [INFO] [stdout] 217 | impl Lexer { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 281 | fn is_identifier_start(&self, c: char) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | fn read_multiline_comment(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `current` is never used [INFO] [stdout] --> src/frontend/parser.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 16 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | fn current(&self) -> Result<&Token, String> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_subset` is never used [INFO] [stdout] --> src/frontend/type_inference.rs:691:8 [INFO] [stdout] | [INFO] [stdout] 267 | impl TypeInferencer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 691 | fn is_subset(&self, s1: &[Type], s2: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_numeric`, `is_subset`, and `is_disjoint` are never used [INFO] [stdout] --> src/frontend/type_inference.rs:698:8 [INFO] [stdout] | [INFO] [stdout] 697 | impl Type { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 698 | fn is_numeric(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 712 | fn is_subset(&self, other: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 719 | fn is_disjoint(&self, other: &[Type]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_any` is never used [INFO] [stdout] --> src/backend/interpreter.rs:29:8 [INFO] [stdout] | [INFO] [stdout] 24 | trait Callable { [INFO] [stdout] | -------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 29 | fn as_any(&self) -> &dyn Any; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `builder_ctx` is never read [INFO] [stdout] --> src/backend/cranelift_compiler.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct CraneliftCompiler { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 21 | builder_ctx: FunctionBuilderContext, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/frontend/ast.rs:190:73 [INFO] [stdout] | [INFO] [stdout] 190 | let fields_str: Vec = fields.iter().map(|field| format!("{}", field.id.name)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `field.id.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | return std::mem::discriminant(self) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 73 - return std::mem::discriminant(self) [INFO] [stdout] 73 + std::mem::discriminant(self) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | / match self { [INFO] [stdout] 101 | | TokenType::Carrot [INFO] [stdout] 102 | | | TokenType::Assignment => true, [INFO] [stdout] 103 | | _ => false, [INFO] [stdout] 104 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 100 ~ matches!(self, TokenType::Carrot [INFO] [stdout] 101 + | TokenType::Assignment) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | / match self { [INFO] [stdout] 109 | | TokenType::Plus [INFO] [stdout] 110 | | | TokenType::Minus [INFO] [stdout] 111 | | | TokenType::Asterisk [INFO] [stdout] ... | [INFO] [stdout] 126 | | _ => false, [INFO] [stdout] 127 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 108 ~ matches!(self, TokenType::Plus [INFO] [stdout] 109 + | TokenType::Minus [INFO] [stdout] 110 + | TokenType::Asterisk [INFO] [stdout] 111 + | TokenType::Slash [INFO] [stdout] 112 + | TokenType::Modulo [INFO] [stdout] 113 + | TokenType::Carrot [INFO] [stdout] 114 + | TokenType::And [INFO] [stdout] 115 + | TokenType::Or [INFO] [stdout] 116 + | TokenType::Pipe [INFO] [stdout] 117 + | TokenType::Dot [INFO] [stdout] 118 + | TokenType::LessThan [INFO] [stdout] 119 + | TokenType::GreaterThan [INFO] [stdout] 120 + | TokenType::LessThanEqual [INFO] [stdout] 121 + | TokenType::GreaterThanEqual [INFO] [stdout] 122 + | TokenType::Equal [INFO] [stdout] 123 + | TokenType::NotEqual [INFO] [stdout] 124 + | TokenType::Assignment) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / match self { [INFO] [stdout] 132 | | TokenType::Minus [INFO] [stdout] 133 | | | TokenType::Bang => true, [INFO] [stdout] 134 | | _ => false, [INFO] [stdout] 135 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 131 ~ matches!(self, TokenType::Minus [INFO] [stdout] 132 + | TokenType::Bang) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/frontend/lexer.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | / match self { [INFO] [stdout] 140 | | _ => false, [INFO] [stdout] 141 | | } [INFO] [stdout] | |_________^ help: consider using the match body instead: `false` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/frontend/lexer.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | / match self { [INFO] [stdout] 146 | | TokenType::Comment(_) [INFO] [stdout] 147 | | |TokenType::BlockComment(_, _, _) => true, [INFO] [stdout] 148 | | _ => false, [INFO] [stdout] 149 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 145 ~ matches!(self, TokenType::Comment(_) [INFO] [stdout] 146 + |TokenType::BlockComment(_, _, _)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Resolver` [INFO] [stdout] --> src/frontend/resolver.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new() -> Self { [INFO] [stdout] 15 | | Resolver { [INFO] [stdout] 16 | | scopes: VecDeque::new(), [INFO] [stdout] 17 | | errors: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 13 + impl Default for Resolver { [INFO] [stdout] 14 + fn default() -> Self { [INFO] [stdout] 15 + Self::new() [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/frontend/resolver.rs:78:47 [INFO] [stdout] | [INFO] [stdout] 78 | ... self.resolve_expr(&expr)?; [INFO] [stdout] | ^^^^^ help: change this to: `expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:278:9 [INFO] [stdout] | [INFO] [stdout] 278 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 278 - return false; [INFO] [stdout] 278 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/resolver.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 - return Ok(()); [INFO] [stdout] 179 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:386:13 [INFO] [stdout] | [INFO] [stdout] 386 | return self.read_block_comment() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 386 - return self.read_block_comment() [INFO] [stdout] 386 + self.read_block_comment() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:388:13 [INFO] [stdout] | [INFO] [stdout] 388 | return self.read_inline_comment() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 388 - return self.read_inline_comment() [INFO] [stdout] 388 + self.read_inline_comment() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/frontend/lexer.rs:398:15 [INFO] [stdout] | [INFO] [stdout] 398 | while self.current_char.is_digit(10) || (self.current_char == '.' && !has_decimal) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_char.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:606:9 [INFO] [stdout] | [INFO] [stdout] 606 | return tok [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 606 - return tok [INFO] [stdout] 606 + tok [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:179:23 [INFO] [stdout] | [INFO] [stdout] 179 | fn lower_field_access(left: Box, right: Box) -> Expression { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:179:46 [INFO] [stdout] | [INFO] [stdout] 179 | fn lower_field_access(left: Box, right: Box) -> Expression { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/frontend/lexer.rs:630:12 [INFO] [stdout] | [INFO] [stdout] 630 | if file_path != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!file_path.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/lexer.rs:660:5 [INFO] [stdout] | [INFO] [stdout] 660 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 660 - return false; [INFO] [stdout] 660 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/frontend/lower.rs:245:13 [INFO] [stdout] | [INFO] [stdout] 245 | else_branch.as_ref().map_or(false, |e| has_return_statement(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 245 - else_branch.as_ref().map_or(false, |e| has_return_statement(e)) [INFO] [stdout] 245 + else_branch.as_ref().is_some_and(|e| has_return_statement(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:254:33 [INFO] [stdout] | [INFO] [stdout] 254 | fn lower_for_loop(iterator: Id, range: Box, body: Box) -> Expression { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/frontend/parser.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | while let Some(next) = self.tokens.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for next in self.tokens.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TypeEnvironment` [INFO] [stdout] --> src/frontend/type_inference.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | / pub fn new() -> Self { [INFO] [stdout] 87 | | TypeEnvironment { [INFO] [stdout] 88 | | types: HashMap::new(), [INFO] [stdout] 89 | | constraints: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 85 + impl Default for TypeEnvironment { [INFO] [stdout] 86 + fn default() -> Self { [INFO] [stdout] 87 + Self::new() [INFO] [stdout] 88 + } [INFO] [stdout] 89 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/frontend/parser.rs:165:16 [INFO] [stdout] | [INFO] [stdout] 165 | if !(current.precedence()? >= min_precedence) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(current.precedence()? < min_precedence)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/frontend/type_inference.rs:162:54 [INFO] [stdout] | [INFO] [stdout] 162 | Type::Function { parameters, .. } if parameters == ¶m_types[..] => { [INFO] [stdout] | ^^^^^^^^^^^^^^---------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `param_types[..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/frontend/type_inference.rs:181:22 [INFO] [stdout] | [INFO] [stdout] 181 | .map(|te| Type::from(te)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Type::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TypeInferencer` [INFO] [stdout] --> src/frontend/type_inference.rs:268:5 [INFO] [stdout] | [INFO] [stdout] 268 | / pub fn new() -> Self { [INFO] [stdout] 269 | | TypeInferencer { [INFO] [stdout] 270 | | env: TypeEnvironment::new(), [INFO] [stdout] 271 | | } [INFO] [stdout] 272 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 267 + impl Default for TypeInferencer { [INFO] [stdout] 268 + fn default() -> Self { [INFO] [stdout] 269 + Self::new() [INFO] [stdout] 270 + } [INFO] [stdout] 271 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `match` [INFO] [stdout] --> src/frontend/type_inference.rs:343:21 [INFO] [stdout] | [INFO] [stdout] 343 | / if let Some(ty) = type_expr { [INFO] [stdout] 344 | | self.env.set_type( [INFO] [stdout] 345 | | id.name.clone(), [INFO] [stdout] 346 | | Type::from(ty.clone()) [INFO] [stdout] 347 | | ); [INFO] [stdout] 348 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/frontend/type_inference.rs:342:46 [INFO] [stdout] | [INFO] [stdout] 342 | Expression::Identifier { id, type_expr } => { [INFO] [stdout] | ^^^^^^^^^ replace this binding [INFO] [stdout] 343 | if let Some(ty) = type_expr { [INFO] [stdout] | ^^^^^^^^ with this pattern, prefixed by `type_expr: ` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:380:33 [INFO] [stdout] | [INFO] [stdout] 380 | ... return Err(format!("Type mismatch for identifier: {:?}", id.name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 380 - return Err(format!("Type mismatch for identifier: {:?}", id.name)); [INFO] [stdout] 380 + Err(format!("Type mismatch for identifier: {:?}", id.name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:383:33 [INFO] [stdout] | [INFO] [stdout] 383 | / ... return Ok(Expression::Identifier { [INFO] [stdout] 384 | | ... id: id.clone(), [INFO] [stdout] 385 | | ... type_expr: Some(TypeExpression::from(ty.clone())), [INFO] [stdout] 386 | | ... }); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 383 ~ Ok(Expression::Identifier { [INFO] [stdout] 384 + id: id.clone(), [INFO] [stdout] 385 + type_expr: Some(TypeExpression::from(ty.clone())), [INFO] [stdout] 386 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:392:29 [INFO] [stdout] | [INFO] [stdout] 392 | / ... return Ok(Expression::Identifier { [INFO] [stdout] 393 | | ... id: id.clone(), [INFO] [stdout] 394 | | ... type_expr: Some(id_type_expr.clone()), [INFO] [stdout] 395 | | ... }); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 ~ Ok(Expression::Identifier { [INFO] [stdout] 393 + id: id.clone(), [INFO] [stdout] 394 + type_expr: Some(id_type_expr.clone()), [INFO] [stdout] 395 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:402:29 [INFO] [stdout] | [INFO] [stdout] 402 | ... return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 402 - return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] 402 + Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:407:29 [INFO] [stdout] | [INFO] [stdout] 407 | ... return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 407 - return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] 407 + Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/frontend/type_inference.rs:588:25 [INFO] [stdout] | [INFO] [stdout] 588 | / if let Err(err) = self.unify(&t1, &t2) { [INFO] [stdout] 589 | | return Err(err); [INFO] [stdout] 590 | | } [INFO] [stdout] | |_________________________^ help: replace it with: `self.unify(&t1, &t2)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/frontend/type_inference.rs:594:25 [INFO] [stdout] | [INFO] [stdout] 594 | / if let Err(err) = self.subset(&t1, &t2) { [INFO] [stdout] 595 | | return Err(err); [INFO] [stdout] 596 | | } [INFO] [stdout] | |_________________________^ help: replace it with: `self.subset(&t1, &t2)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/frontend/ast.rs:190:73 [INFO] [stdout] | [INFO] [stdout] 190 | let fields_str: Vec = fields.iter().map(|field| format!("{}", field.id.name)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `field.id.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:142:32 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn is_truthy(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Resolver` [INFO] [stdout] --> src/frontend/resolver.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new() -> Self { [INFO] [stdout] 15 | | Resolver { [INFO] [stdout] 16 | | scopes: VecDeque::new(), [INFO] [stdout] 17 | | errors: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 13 + impl Default for Resolver { [INFO] [stdout] 14 + fn default() -> Self { [INFO] [stdout] 15 + Self::new() [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Interpreter` [INFO] [stdout] --> src/backend/interpreter.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | / pub fn new() -> Self { [INFO] [stdout] 235 | | Interpreter { [INFO] [stdout] 236 | | environment: Environment::new_global(), [INFO] [stdout] 237 | | local_scope: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 240 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 233 + impl Default for Interpreter { [INFO] [stdout] 234 + fn default() -> Self { [INFO] [stdout] 235 + Self::new() [INFO] [stdout] 236 + } [INFO] [stdout] 237 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:260:57 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 260 | fn eval_expression(&mut self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:285:79 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 285 | fn eval_identifier(&self, id: &Id, type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:295:50 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 295 | fn eval_literal(&self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/frontend/resolver.rs:78:47 [INFO] [stdout] | [INFO] [stdout] 78 | ... self.resolve_expr(&expr)?; [INFO] [stdout] | ^^^^^ help: change this to: `expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:306:84 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 306 | fn eval_unary_op(&mut self, operator: &UnaryOperator, operand: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:328:93 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 328 | fn handle_div_by_zero(&self, operator: &BinaryOperator, left: &Value, right: &Value) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:362:103 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 362 | fn eval_binary_op(&mut self, operator: &BinaryOperator, left: &Expression, right: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/resolver.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 - return Ok(()); [INFO] [stdout] 179 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:422:67 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 422 | fn eval_call(&mut self, id: &Id, arguments: &[Expression]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this closure is very large [INFO] [stdout] --> src/backend/interpreter.rs:429:18 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 429 | .map(|arg| self.eval_expression(arg)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:440:144 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 440 | fn eval_function_definition(&mut self, id: &Id, parameters: &[Parameter], body: &Expression, return_type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:179:23 [INFO] [stdout] | [INFO] [stdout] 179 | fn lower_field_access(left: Box, right: Box) -> Expression { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:456:82 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 456 | fn eval_struct_definition(&mut self, id: &Id, fields: &[FieldDefinition]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:179:46 [INFO] [stdout] | [INFO] [stdout] 179 | fn lower_field_access(left: Box, right: Box) -> Expression { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:483:119 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 483 | fn eval_if(&mut self, condition: &Expression, then_branch: &Expression, else_branch: &Option>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:500:76 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 500 | fn eval_while(&mut self, condition: &Expression, body: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/frontend/lower.rs:245:13 [INFO] [stdout] | [INFO] [stdout] 245 | else_branch.as_ref().map_or(false, |e| has_return_statement(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 245 - else_branch.as_ref().map_or(false, |e| has_return_statement(e)) [INFO] [stdout] 245 + else_branch.as_ref().is_some_and(|e| has_return_statement(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/frontend/lower.rs:254:33 [INFO] [stdout] | [INFO] [stdout] 254 | fn lower_for_loop(iterator: Id, range: Box, body: Box) -> Expression { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/interpreter.rs:508:43 [INFO] [stdout] | [INFO] [stdout] 508 | result = self.eval_expression(&body); [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:515:97 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 515 | fn eval_block(&mut self, expressions: &[Box], env: Rc>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:528:72 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 528 | fn eval_inner_block(&mut self, expressions: &[Box]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:536:66 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 536 | fn eval_return(&mut self, expr: &Option>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:554:52 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 554 | fn eval_print(&mut self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Bytecode` [INFO] [stdout] --> src/backend/bytecode.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> Self { [INFO] [stdout] 14 | | Bytecode { [INFO] [stdout] 15 | | instructions: Vec::new(), [INFO] [stdout] 16 | | } [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for Bytecode { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TypeEnvironment` [INFO] [stdout] --> src/frontend/type_inference.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | / pub fn new() -> Self { [INFO] [stdout] 87 | | TypeEnvironment { [INFO] [stdout] 88 | | types: HashMap::new(), [INFO] [stdout] 89 | | constraints: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 85 + impl Default for TypeEnvironment { [INFO] [stdout] 86 + fn default() -> Self { [INFO] [stdout] 87 + Self::new() [INFO] [stdout] 88 + } [INFO] [stdout] 89 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backend/environment.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / self.parent_env.as_ref().map_or(false, |parent| { [INFO] [stdout] 75 | | parent.borrow().exists(name) [INFO] [stdout] 76 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 74 - self.parent_env.as_ref().map_or(false, |parent| { [INFO] [stdout] 74 + self.parent_env.as_ref().is_some_and(|parent| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/frontend/type_inference.rs:162:54 [INFO] [stdout] | [INFO] [stdout] 162 | Type::Function { parameters, .. } if parameters == ¶m_types[..] => { [INFO] [stdout] | ^^^^^^^^^^^^^^---------------- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `param_types[..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/frontend/type_inference.rs:181:22 [INFO] [stdout] | [INFO] [stdout] 181 | .map(|te| Type::from(te)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Type::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CraneliftCompiler` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | / pub fn new() -> Self { [INFO] [stdout] 37 | | CraneliftCompiler { [INFO] [stdout] 38 | | builder_ctx: FunctionBuilderContext::new(), [INFO] [stdout] 39 | | variables: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 48 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 35 + impl Default for CraneliftCompiler { [INFO] [stdout] 36 + fn default() -> Self { [INFO] [stdout] 37 + Self::new() [INFO] [stdout] 38 + } [INFO] [stdout] 39 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TypeInferencer` [INFO] [stdout] --> src/frontend/type_inference.rs:268:5 [INFO] [stdout] | [INFO] [stdout] 268 | / pub fn new() -> Self { [INFO] [stdout] 269 | | TypeInferencer { [INFO] [stdout] 270 | | env: TypeEnvironment::new(), [INFO] [stdout] 271 | | } [INFO] [stdout] 272 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 267 + impl Default for TypeInferencer { [INFO] [stdout] 268 + fn default() -> Self { [INFO] [stdout] 269 + Self::new() [INFO] [stdout] 270 + } [INFO] [stdout] 271 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `match` [INFO] [stdout] --> src/frontend/type_inference.rs:343:21 [INFO] [stdout] | [INFO] [stdout] 343 | / if let Some(ty) = type_expr { [INFO] [stdout] 344 | | self.env.set_type( [INFO] [stdout] 345 | | id.name.clone(), [INFO] [stdout] 346 | | Type::from(ty.clone()) [INFO] [stdout] 347 | | ); [INFO] [stdout] 348 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/frontend/type_inference.rs:342:46 [INFO] [stdout] | [INFO] [stdout] 342 | Expression::Identifier { id, type_expr } => { [INFO] [stdout] | ^^^^^^^^^ replace this binding [INFO] [stdout] 343 | if let Some(ty) = type_expr { [INFO] [stdout] | ^^^^^^^^ with this pattern, prefixed by `type_expr: ` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:380:33 [INFO] [stdout] | [INFO] [stdout] 380 | ... return Err(format!("Type mismatch for identifier: {:?}", id.name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 380 - return Err(format!("Type mismatch for identifier: {:?}", id.name)); [INFO] [stdout] 380 + Err(format!("Type mismatch for identifier: {:?}", id.name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:383:33 [INFO] [stdout] | [INFO] [stdout] 383 | / ... return Ok(Expression::Identifier { [INFO] [stdout] 384 | | ... id: id.clone(), [INFO] [stdout] 385 | | ... type_expr: Some(TypeExpression::from(ty.clone())), [INFO] [stdout] 386 | | ... }); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 383 ~ Ok(Expression::Identifier { [INFO] [stdout] 384 + id: id.clone(), [INFO] [stdout] 385 + type_expr: Some(TypeExpression::from(ty.clone())), [INFO] [stdout] 386 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:392:29 [INFO] [stdout] | [INFO] [stdout] 392 | / ... return Ok(Expression::Identifier { [INFO] [stdout] 393 | | ... id: id.clone(), [INFO] [stdout] 394 | | ... type_expr: Some(id_type_expr.clone()), [INFO] [stdout] 395 | | ... }); [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 392 ~ Ok(Expression::Identifier { [INFO] [stdout] 393 + id: id.clone(), [INFO] [stdout] 394 + type_expr: Some(id_type_expr.clone()), [INFO] [stdout] 395 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:402:29 [INFO] [stdout] | [INFO] [stdout] 402 | ... return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 402 - return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] 402 + Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/frontend/type_inference.rs:407:29 [INFO] [stdout] | [INFO] [stdout] 407 | ... return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 407 - return Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }); [INFO] [stdout] 407 + Ok(Expression::Identifier { id: id.clone(), type_expr: Some(TypeExpression::from(ty.clone())) }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/backend/cranelift_compiler.rs:209:59 [INFO] [stdout] | [INFO] [stdout] 209 | let entry = self.functions.entry(id.name.clone()).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/backend/cranelift_compiler.rs:237:59 [INFO] [stdout] | [INFO] [stdout] 237 | let entry = self.functions.entry(id.name.clone()).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/frontend/type_inference.rs:588:25 [INFO] [stdout] | [INFO] [stdout] 588 | / if let Err(err) = self.unify(&t1, &t2) { [INFO] [stdout] 589 | | return Err(err); [INFO] [stdout] 590 | | } [INFO] [stdout] | |_________________________^ help: replace it with: `self.unify(&t1, &t2)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/frontend/type_inference.rs:594:25 [INFO] [stdout] | [INFO] [stdout] 594 | / if let Err(err) = self.subset(&t1, &t2) { [INFO] [stdout] 595 | | return Err(err); [INFO] [stdout] 596 | | } [INFO] [stdout] | |_________________________^ help: replace it with: `self.subset(&t1, &t2)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/backend/cranelift_compiler.rs:324:9 [INFO] [stdout] | [INFO] [stdout] 324 | / if let Err(e) = define_result { [INFO] [stdout] 325 | | return Err(e); [INFO] [stdout] 326 | | } [INFO] [stdout] | |_________^ help: replace it with: `define_result?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/backend/cranelift_compiler.rs:346:102 [INFO] [stdout] | [INFO] [stdout] 346 | let mut ffi_functions = if format!("{}", arch) == "aarch64" && format!("{}", os) == "darwin" { [INFO] [stdout] | ______________________________________________________________________________________________________^ [INFO] [stdout] 347 | | vec![ [INFO] [stdout] 348 | | // ("printf", vec![types::I64; 9], types::I32, cranelift_module::Linkage::Import), [INFO] [stdout] 349 | | ("malloc", vec![types::I64], types::I64, cranelift_module::Linkage::Import), [INFO] [stdout] ... | [INFO] [stdout] 355 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/backend/cranelift_compiler.rs:355:16 [INFO] [stdout] | [INFO] [stdout] 355 | } else { [INFO] [stdout] | ________________^ [INFO] [stdout] 356 | | vec![ [INFO] [stdout] 357 | | // ("printf", vec![types::I64, types::I32], types::I32, cranelift_module::Linkage::Import), [INFO] [stdout] 358 | | ("malloc", vec![types::I64], types::I64, cranelift_module::Linkage::Import), [INFO] [stdout] ... | [INFO] [stdout] 364 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/backend/cranelift_compiler.rs:426:29 [INFO] [stdout] | [INFO] [stdout] 426 | if *foreign { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 427 | | let signature = self.create_function_signature(parameters, return_type_expr)?; [INFO] [stdout] 428 | | self.function_signatures.insert(id.name.clone(), signature); [INFO] [stdout] 429 | | } else { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/backend/cranelift_compiler.rs:429:24 [INFO] [stdout] | [INFO] [stdout] 429 | } else { [INFO] [stdout] | ________________________^ [INFO] [stdout] 430 | | let signature = self.create_function_signature(parameters, return_type_expr)?; [INFO] [stdout] 431 | | self.function_signatures.insert(id.name.clone(), signature); [INFO] [stdout] 432 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:142:32 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn is_truthy(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/backend/cranelift_compiler.rs:632:63 [INFO] [stdout] | [INFO] [stdout] 632 | let result = builder.ins().iconst(types::I64, *n as i64); [INFO] [stdout] | ^^^^^^^^^ help: try: `(*n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Interpreter` [INFO] [stdout] --> src/backend/interpreter.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | / pub fn new() -> Self { [INFO] [stdout] 235 | | Interpreter { [INFO] [stdout] 236 | | environment: Environment::new_global(), [INFO] [stdout] 237 | | local_scope: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 240 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 233 + impl Default for Interpreter { [INFO] [stdout] 234 + fn default() -> Self { [INFO] [stdout] 235 + Self::new() [INFO] [stdout] 236 + } [INFO] [stdout] 237 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:260:57 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 260 | fn eval_expression(&mut self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:678:67 [INFO] [stdout] | [INFO] [stdout] 678 | let symbol = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:285:79 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 285 | fn eval_identifier(&self, id: &Id, type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:295:50 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 295 | fn eval_literal(&self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:306:84 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 306 | fn eval_unary_op(&mut self, operator: &UnaryOperator, operand: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:328:93 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 328 | fn handle_div_by_zero(&self, operator: &BinaryOperator, left: &Value, right: &Value) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:362:103 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 362 | fn eval_binary_op(&mut self, operator: &BinaryOperator, left: &Expression, right: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:915:101 [INFO] [stdout] | [INFO] [stdout] 915 | let func_ref = self.module.as_mut().unwrap().declare_func_in_func(*func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:422:67 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 422 | fn eval_call(&mut self, id: &Id, arguments: &[Expression]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:926:105 [INFO] [stdout] | [INFO] [stdout] 926 | ... let func_ref = self.module.as_mut().unwrap().declare_func_in_func(*func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this closure is very large [INFO] [stdout] --> src/backend/interpreter.rs:429:18 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 429 | .map(|arg| self.eval_expression(arg)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:440:144 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 440 | fn eval_function_definition(&mut self, id: &Id, parameters: &[Parameter], body: &Expression, return_type_expr: &Option) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `func_sig.returns.get(0)` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1036:40 [INFO] [stdout] | [INFO] [stdout] 1036 | if let Some(abi) = func_sig.returns.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `func_sig.returns.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:456:82 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 456 | fn eval_struct_definition(&mut self, id: &Id, fields: &[FieldDefinition]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `func_sig.returns.get(0)` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1080:36 [INFO] [stdout] | [INFO] [stdout] 1080 | if let Some(abi) = func_sig.returns.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `func_sig.returns.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:483:119 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 483 | fn eval_if(&mut self, condition: &Expression, then_branch: &Expression, else_branch: &Option>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:500:76 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 500 | fn eval_while(&mut self, condition: &Expression, body: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/interpreter.rs:508:43 [INFO] [stdout] | [INFO] [stdout] 508 | result = self.eval_expression(&body); [INFO] [stdout] | ^^^^^ help: change this to: `body` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:515:97 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 515 | fn eval_block(&mut self, expressions: &[Box], env: Rc>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1107:67 [INFO] [stdout] | [INFO] [stdout] 1107 | let symbol = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:528:72 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 528 | fn eval_inner_block(&mut self, expressions: &[Box]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:536:66 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 536 | fn eval_return(&mut self, expr: &Option>) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/backend/interpreter.rs:554:52 [INFO] [stdout] | [INFO] [stdout] 14 | Return(R), [INFO] [stdout] | --------- the largest variant contains at least 216 bytes [INFO] [stdout] ... [INFO] [stdout] 554 | fn eval_print(&mut self, expr: &Expression) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `backend::interpreter::ControlFlow`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Bytecode` [INFO] [stdout] --> src/backend/bytecode.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn new() -> Self { [INFO] [stdout] 14 | | Bytecode { [INFO] [stdout] 15 | | instructions: Vec::new(), [INFO] [stdout] 16 | | } [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 12 + impl Default for Bytecode { [INFO] [stdout] 13 + fn default() -> Self { [INFO] [stdout] 14 + Self::new() [INFO] [stdout] 15 + } [INFO] [stdout] 16 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IRLoweringPass` [INFO] [stdout] --> src/backend/ir_lowering.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | IRLoweringPass [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for IRLoweringPass { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/backend/environment.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | / self.parent_env.as_ref().map_or(false, |parent| { [INFO] [stdout] 75 | | parent.borrow().exists(name) [INFO] [stdout] 76 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 74 - self.parent_env.as_ref().map_or(false, |parent| { [INFO] [stdout] 74 + self.parent_env.as_ref().is_some_and(|parent| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CraneliftCompiler` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | / pub fn new() -> Self { [INFO] [stdout] 37 | | CraneliftCompiler { [INFO] [stdout] 38 | | builder_ctx: FunctionBuilderContext::new(), [INFO] [stdout] 39 | | variables: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 48 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 35 + impl Default for CraneliftCompiler { [INFO] [stdout] 36 + fn default() -> Self { [INFO] [stdout] 37 + Self::new() [INFO] [stdout] 38 + } [INFO] [stdout] 39 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/built_in_methods.rs:88:50 [INFO] [stdout] | [INFO] [stdout] 88 | let call_inst = builder.ins().call(func_ref, &compiled_args); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `compiled_args` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/backend/cranelift_compiler.rs:209:59 [INFO] [stdout] | [INFO] [stdout] 209 | let entry = self.functions.entry(id.name.clone()).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/backend/cranelift_compiler.rs:237:59 [INFO] [stdout] | [INFO] [stdout] 237 | let entry = self.functions.entry(id.name.clone()).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/backend/preir_gen.rs:336:17 [INFO] [stdout] | [INFO] [stdout] 336 | assert!(preir.instructions.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!preir.instructions.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/backend/preir_gen.rs:372:17 [INFO] [stdout] | [INFO] [stdout] 372 | assert!(preir.instructions.len() >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!preir.instructions.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/backend/cranelift_compiler.rs:324:9 [INFO] [stdout] | [INFO] [stdout] 324 | / if let Err(e) = define_result { [INFO] [stdout] 325 | | return Err(e); [INFO] [stdout] 326 | | } [INFO] [stdout] | |_________^ help: replace it with: `define_result?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/preir.rs:62:36 [INFO] [stdout] | [INFO] [stdout] 62 | Instr::VarRef(data) => format!("{}", data.name), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `data.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/backend/cranelift_compiler.rs:346:102 [INFO] [stdout] | [INFO] [stdout] 346 | let mut ffi_functions = if format!("{}", arch) == "aarch64" && format!("{}", os) == "darwin" { [INFO] [stdout] | ______________________________________________________________________________________________________^ [INFO] [stdout] 347 | | vec![ [INFO] [stdout] 348 | | // ("printf", vec![types::I64; 9], types::I32, cranelift_module::Linkage::Import), [INFO] [stdout] 349 | | ("malloc", vec![types::I64], types::I64, cranelift_module::Linkage::Import), [INFO] [stdout] ... | [INFO] [stdout] 355 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/backend/cranelift_compiler.rs:355:16 [INFO] [stdout] | [INFO] [stdout] 355 | } else { [INFO] [stdout] | ________________^ [INFO] [stdout] 356 | | vec![ [INFO] [stdout] 357 | | // ("printf", vec![types::I64, types::I32], types::I32, cranelift_module::Linkage::Import), [INFO] [stdout] 358 | | ("malloc", vec![types::I64], types::I64, cranelift_module::Linkage::Import), [INFO] [stdout] ... | [INFO] [stdout] 364 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/backend/cranelift_compiler.rs:426:29 [INFO] [stdout] | [INFO] [stdout] 426 | if *foreign { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 427 | | let signature = self.create_function_signature(parameters, return_type_expr)?; [INFO] [stdout] 428 | | self.function_signatures.insert(id.name.clone(), signature); [INFO] [stdout] 429 | | } else { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/backend/cranelift_compiler.rs:429:24 [INFO] [stdout] | [INFO] [stdout] 429 | } else { [INFO] [stdout] | ________________________^ [INFO] [stdout] 430 | | let signature = self.create_function_signature(parameters, return_type_expr)?; [INFO] [stdout] 431 | | self.function_signatures.insert(id.name.clone(), signature); [INFO] [stdout] 432 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/preir.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | format!("ret_node()") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"ret_node()".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/preir.rs:163:59 [INFO] [stdout] | [INFO] [stdout] 163 | let body = self.format_instr_with_context(&self.get_instruction(data.body_index).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.get_instruction(data.body_index).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i64` -> `i64`) [INFO] [stdout] --> src/backend/cranelift_compiler.rs:632:63 [INFO] [stdout] | [INFO] [stdout] 632 | let result = builder.ins().iconst(types::I64, *n as i64); [INFO] [stdout] | ^^^^^^^^^ help: try: `(*n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:678:67 [INFO] [stdout] | [INFO] [stdout] 678 | let symbol = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:915:101 [INFO] [stdout] | [INFO] [stdout] 915 | let func_ref = self.module.as_mut().unwrap().declare_func_in_func(*func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:926:105 [INFO] [stdout] | [INFO] [stdout] 926 | ... let func_ref = self.module.as_mut().unwrap().declare_func_in_func(*func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ErrandInference` [INFO] [stdout] --> src/backend/worklist.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | / pub fn new() -> Self { [INFO] [stdout] 208 | | ErrandInference { [INFO] [stdout] 209 | | worklist: Worklist::new(), [INFO] [stdout] 210 | | trace: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 206 + impl Default for ErrandInference { [INFO] [stdout] 207 + fn default() -> Self { [INFO] [stdout] 208 + Self::new() [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/backend/worklist.rs:244:24 [INFO] [stdout] | [INFO] [stdout] 244 | for (_, ty) in &data_constructors { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 244 - for (_, ty) in &data_constructors { [INFO] [stdout] 244 + for ty in data_constructors.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `func_sig.returns.get(0)` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1036:40 [INFO] [stdout] | [INFO] [stdout] 1036 | if let Some(abi) = func_sig.returns.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `func_sig.returns.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `func_sig.returns.get(0)` [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1080:36 [INFO] [stdout] | [INFO] [stdout] 1080 | if let Some(abi) = func_sig.returns.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `func_sig.returns.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/cranelift_compiler.rs:1107:67 [INFO] [stdout] | [INFO] [stdout] 1107 | let symbol = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IRLoweringPass` [INFO] [stdout] --> src/backend/ir_lowering.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | IRLoweringPass [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for IRLoweringPass { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/built_in_methods.rs:88:50 [INFO] [stdout] | [INFO] [stdout] 88 | let call_inst = builder.ins().call(func_ref, &compiled_args); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `compiled_args` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1005:45 [INFO] [stdout] | [INFO] [stdout] 1005 | self.add_etvars_to_worklist(&*t1); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1005 - self.add_etvars_to_worklist(&*t1); [INFO] [stdout] 1005 + self.add_etvars_to_worklist(t1); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1005 | self.add_etvars_to_worklist(&**t1); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1006:45 [INFO] [stdout] | [INFO] [stdout] 1006 | self.add_etvars_to_worklist(&*t2); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1006 - self.add_etvars_to_worklist(&*t2); [INFO] [stdout] 1006 + self.add_etvars_to_worklist(t2); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1006 | self.add_etvars_to_worklist(&**t2); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1009:45 [INFO] [stdout] | [INFO] [stdout] 1009 | self.add_etvars_to_worklist(&*t); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1009 - self.add_etvars_to_worklist(&*t); [INFO] [stdout] 1009 + self.add_etvars_to_worklist(t); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1009 | self.add_etvars_to_worklist(&**t); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1013:49 [INFO] [stdout] | [INFO] [stdout] 1013 | self.add_etvars_to_worklist(&*t); [INFO] [stdout] | ^^^ help: if you would like to reborrow, try removing `&*`: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/worklist.rs:1129:43 [INFO] [stdout] | [INFO] [stdout] 1129 | ...ct(types) => format!("{}", types.iter().map(|t| self.type_to_string(t)).collect::>().join(" × ")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `types.iter().map(|t| self.type_to_string(t)).collect::>().join(" × ").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/worklist.rs:1130:39 [INFO] [stdout] | [INFO] [stdout] 1130 | ...um(types) => format!("{}", types.iter().map(|t| self.type_to_string(t)).collect::>().join(" + ")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `types.iter().map(|t| self.type_to_string(t)).collect::>().join(" + ").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/preir.rs:62:36 [INFO] [stdout] | [INFO] [stdout] 62 | Instr::VarRef(data) => format!("{}", data.name), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `data.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/preir.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | format!("ret_node()") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"ret_node()".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/preir.rs:163:59 [INFO] [stdout] | [INFO] [stdout] 163 | let body = self.format_instr_with_context(&self.get_instruction(data.body_index).unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.get_instruction(data.body_index).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SIRLoweringPass` [INFO] [stdout] --> src/backend/sir_lowering.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / pub fn new() -> Self { [INFO] [stdout] 55 | | SIRLoweringPass { [INFO] [stdout] 56 | | module: None, [INFO] [stdout] 57 | | isa: None, [INFO] [stdout] ... | [INFO] [stdout] 66 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 53 + impl Default for SIRLoweringPass { [INFO] [stdout] 54 + fn default() -> Self { [INFO] [stdout] 55 + Self::new() [INFO] [stdout] 56 + } [INFO] [stdout] 57 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sig [INFO] [stdout] .returns.get(0)` [INFO] [stdout] --> src/backend/sir_lowering.rs:339:28 [INFO] [stdout] | [INFO] [stdout] 339 | let ret_type = sig [INFO] [stdout] | ____________________________^ [INFO] [stdout] 340 | | .returns [INFO] [stdout] 341 | | .get(0) [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 339 ~ let ret_type = sig [INFO] [stdout] 340 + .returns.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ErrandInference` [INFO] [stdout] --> src/backend/worklist.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | / pub fn new() -> Self { [INFO] [stdout] 208 | | ErrandInference { [INFO] [stdout] 209 | | worklist: Worklist::new(), [INFO] [stdout] 210 | | trace: Vec::new(), [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 206 + impl Default for ErrandInference { [INFO] [stdout] 207 + fn default() -> Self { [INFO] [stdout] 208 + Self::new() [INFO] [stdout] 209 + } [INFO] [stdout] 210 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/backend/worklist.rs:244:24 [INFO] [stdout] | [INFO] [stdout] 244 | for (_, ty) in &data_constructors { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 244 - for (_, ty) in &data_constructors { [INFO] [stdout] 244 + for ty in data_constructors.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `builder [INFO] [stdout] .func [INFO] [stdout] .signature [INFO] [stdout] .returns.get(0)` [INFO] [stdout] --> src/backend/sir_lowering.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | let func_ret_type = builder [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 693 | | .func [INFO] [stdout] 694 | | .signature [INFO] [stdout] 695 | | .returns [INFO] [stdout] 696 | | .get(0) [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 692 ~ let func_ret_type = builder [INFO] [stdout] 693 + .func [INFO] [stdout] 694 + .signature [INFO] [stdout] 695 + .returns.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:823:56 [INFO] [stdout] | [INFO] [stdout] 823 | .declare_func_in_func(func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/backend/sir_lowering.rs:840:5 [INFO] [stdout] | [INFO] [stdout] 840 | / fn emit_fn_call( [INFO] [stdout] 841 | | &mut self, [INFO] [stdout] 842 | | name: &str, [INFO] [stdout] 843 | | arg_indices: &[instr_index], [INFO] [stdout] ... | [INFO] [stdout] 848 | | var_counter: &mut usize, [INFO] [stdout] 849 | | ) -> Result { [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:991:52 [INFO] [stdout] | [INFO] [stdout] 991 | .declare_func_in_func(func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:1021:55 [INFO] [stdout] | [INFO] [stdout] 1021 | let gv = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1005:45 [INFO] [stdout] | [INFO] [stdout] 1005 | self.add_etvars_to_worklist(&*t1); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1005 - self.add_etvars_to_worklist(&*t1); [INFO] [stdout] 1005 + self.add_etvars_to_worklist(t1); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1005 | self.add_etvars_to_worklist(&**t1); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1006:45 [INFO] [stdout] | [INFO] [stdout] 1006 | self.add_etvars_to_worklist(&*t2); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1006 - self.add_etvars_to_worklist(&*t2); [INFO] [stdout] 1006 + self.add_etvars_to_worklist(t2); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1006 | self.add_etvars_to_worklist(&**t2); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1009:45 [INFO] [stdout] | [INFO] [stdout] 1009 | self.add_etvars_to_worklist(&*t); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1009 - self.add_etvars_to_worklist(&*t); [INFO] [stdout] 1009 + self.add_etvars_to_worklist(t); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1009 | self.add_etvars_to_worklist(&**t); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/backend/worklist.rs:1013:49 [INFO] [stdout] | [INFO] [stdout] 1013 | self.add_etvars_to_worklist(&*t); [INFO] [stdout] | ^^^ help: if you would like to reborrow, try removing `&*`: `t` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/worklist.rs:1129:43 [INFO] [stdout] | [INFO] [stdout] 1129 | ...ct(types) => format!("{}", types.iter().map(|t| self.type_to_string(t)).collect::>().join(" × ")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `types.iter().map(|t| self.type_to_string(t)).collect::>().join(" × ").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/backend/worklist.rs:1130:39 [INFO] [stdout] | [INFO] [stdout] 1130 | ...um(types) => format!("{}", types.iter().map(|t| self.type_to_string(t)).collect::>().join(" + ")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `types.iter().map(|t| self.type_to_string(t)).collect::>().join(" + ").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CompilerLogger` [INFO] [stdout] --> src/logging/mod.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | / pub fn new() -> Self { [INFO] [stdout] 76 | | Self { [INFO] [stdout] 77 | | enabled_modules: Vec::new(), [INFO] [stdout] 78 | | } [INFO] [stdout] 79 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 74 + impl Default for CompilerLogger { [INFO] [stdout] 75 + fn default() -> Self { [INFO] [stdout] 76 + Self::new() [INFO] [stdout] 77 + } [INFO] [stdout] 78 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/frontend/parser.rs:405:13 [INFO] [stdout] | [INFO] [stdout] 405 | self.expect(&TokenType::Newline); // Should these be eats or expects? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 405 | let _ = self.expect(&TokenType::Newline); // Should these be eats or expects? [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/frontend/resolver.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | self.resolve_expr(expr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 28 | let _ = self.resolve_expr(expr); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SIRLoweringPass` [INFO] [stdout] --> src/backend/sir_lowering.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | / pub fn new() -> Self { [INFO] [stdout] 55 | | SIRLoweringPass { [INFO] [stdout] 56 | | module: None, [INFO] [stdout] 57 | | isa: None, [INFO] [stdout] ... | [INFO] [stdout] 66 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 53 + impl Default for SIRLoweringPass { [INFO] [stdout] 54 + fn default() -> Self { [INFO] [stdout] 55 + Self::new() [INFO] [stdout] 56 + } [INFO] [stdout] 57 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `sig [INFO] [stdout] .returns.get(0)` [INFO] [stdout] --> src/backend/sir_lowering.rs:339:28 [INFO] [stdout] | [INFO] [stdout] 339 | let ret_type = sig [INFO] [stdout] | ____________________________^ [INFO] [stdout] 340 | | .returns [INFO] [stdout] 341 | | .get(0) [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 339 ~ let ret_type = sig [INFO] [stdout] 340 + .returns.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `builder [INFO] [stdout] .func [INFO] [stdout] .signature [INFO] [stdout] .returns.get(0)` [INFO] [stdout] --> src/backend/sir_lowering.rs:692:37 [INFO] [stdout] | [INFO] [stdout] 692 | let func_ret_type = builder [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 693 | | .func [INFO] [stdout] 694 | | .signature [INFO] [stdout] 695 | | .returns [INFO] [stdout] 696 | | .get(0) [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 692 ~ let func_ret_type = builder [INFO] [stdout] 693 + .func [INFO] [stdout] 694 + .signature [INFO] [stdout] 695 + .returns.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:823:56 [INFO] [stdout] | [INFO] [stdout] 823 | .declare_func_in_func(func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/backend/sir_lowering.rs:840:5 [INFO] [stdout] | [INFO] [stdout] 840 | / fn emit_fn_call( [INFO] [stdout] 841 | | &mut self, [INFO] [stdout] 842 | | name: &str, [INFO] [stdout] 843 | | arg_indices: &[instr_index], [INFO] [stdout] ... | [INFO] [stdout] 848 | | var_counter: &mut usize, [INFO] [stdout] 849 | | ) -> Result { [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:991:52 [INFO] [stdout] | [INFO] [stdout] 991 | .declare_func_in_func(func_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/backend/sir_lowering.rs:1021:55 [INFO] [stdout] | [INFO] [stdout] 1021 | let gv = module.declare_data_in_func(data_id, &mut builder.func); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `builder.func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CompilerLogger` [INFO] [stdout] --> src/logging/mod.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | / pub fn new() -> Self { [INFO] [stdout] 76 | | Self { [INFO] [stdout] 77 | | enabled_modules: Vec::new(), [INFO] [stdout] 78 | | } [INFO] [stdout] 79 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 74 + impl Default for CompilerLogger { [INFO] [stdout] 75 + fn default() -> Self { [INFO] [stdout] 76 + Self::new() [INFO] [stdout] 77 + } [INFO] [stdout] 78 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate `Errand` should have a snake case name [INFO] [stdout] | [INFO] [stdout] = help: convert the identifier to snake case: `errand` [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/frontend/parser.rs:405:13 [INFO] [stdout] | [INFO] [stdout] 405 | self.expect(&TokenType::Newline); // Should these be eats or expects? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 405 | let _ = self.expect(&TokenType::Newline); // Should these be eats or expects? [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/frontend/resolver.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | self.resolve_expr(expr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 28 | let _ = self.resolve_expr(expr); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arg` [INFO] [stdout] --> src/bin/errand_cli.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use clap::{Parser, Subcommand, Arg, ValueEnum}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arg` [INFO] [stdout] --> src/bin/errand_cli.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use clap::{Parser, Subcommand, Arg, ValueEnum}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.12s [INFO] running `Command { std: "docker" "inspect" "c9357b0fa631de8abe681b7f910f20902fc05fd6fe9d58a9aa47e01c16f6185c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c9357b0fa631de8abe681b7f910f20902fc05fd6fe9d58a9aa47e01c16f6185c", kill_on_drop: false }` [INFO] [stdout] c9357b0fa631de8abe681b7f910f20902fc05fd6fe9d58a9aa47e01c16f6185c