[INFO] cloning repository https://github.com/wesuRage/narval-compiler [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wesuRage/narval-compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FwesuRage%2Fnarval-compiler", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FwesuRage%2Fnarval-compiler'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] af50623fbdfe0a41dd090e39fe8ef5f33185afa2 [INFO] linting wesuRage/narval-compiler against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FwesuRage%2Fnarval-compiler" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/wesuRage/narval-compiler [INFO] finished tweaking git repo https://github.com/wesuRage/narval-compiler [INFO] tweaked toml for git repo https://github.com/wesuRage/narval-compiler written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/wesuRage/narval-compiler 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/wesuRage/narval-compiler 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] Downloading crates ... [INFO] [stderr] Downloaded clap v4.5.9 [INFO] [stderr] Downloaded clap_builder v4.5.9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 79b8b5b60f8c9746dbe040438e9619cf8092c32118057039423b0cd41c9b95ff [INFO] running `Command { std: "docker" "start" "-a" "79b8b5b60f8c9746dbe040438e9619cf8092c32118057039423b0cd41c9b95ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "79b8b5b60f8c9746dbe040438e9619cf8092c32118057039423b0cd41c9b95ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "79b8b5b60f8c9746dbe040438e9619cf8092c32118057039423b0cd41c9b95ff", kill_on_drop: false }` [INFO] [stdout] 79b8b5b60f8c9746dbe040438e9619cf8092c32118057039423b0cd41c9b95ff [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] e790646c0d21f48872776162cd39986674fdaa4c9297a65d83a9bdbc877a7a40 [INFO] running `Command { std: "docker" "start" "-a" "e790646c0d21f48872776162cd39986674fdaa4c9297a65d83a9bdbc877a7a40", kill_on_drop: false }` [INFO] [stderr] Checking anstyle v1.0.7 [INFO] [stderr] Checking anstyle-query v1.1.0 [INFO] [stderr] Checking is_terminal_polyfill v1.70.0 [INFO] [stderr] Checking colorchoice v1.0.1 [INFO] [stderr] Checking clap_lex v0.7.1 [INFO] [stderr] Checking anstyle-parse v0.2.4 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Compiling syn v2.0.70 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking shellexpand v3.1.0 [INFO] [stderr] Checking anstream v0.6.14 [INFO] [stderr] Checking clap_builder v4.5.9 [INFO] [stderr] Compiling clap_derive v4.5.8 [INFO] [stderr] Checking clap v4.5.9 [INFO] [stderr] Checking narval v1.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `compiler::Compiler` [INFO] [stdout] --> src/main.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use compiler::Compiler; [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: `compiler::Compiler` [INFO] [stdout] --> src/main.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use compiler::Compiler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `column_val` is never read [INFO] [stdout] --> src/parser.rs:834:13 [INFO] [stdout] | [INFO] [stdout] 834 | column_val.1 = self.at().column.1 - 1; [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: value assigned to `position_val` is never read [INFO] [stdout] --> src/parser.rs:835:13 [INFO] [stdout] | [INFO] [stdout] 835 | position_val.1 = self.at().position.1 - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `column_val` is never read [INFO] [stdout] --> src/parser.rs:834:13 [INFO] [stdout] | [INFO] [stdout] 834 | column_val.1 = self.at().column.1 - 1; [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: value assigned to `position_val` is never read [INFO] [stdout] --> src/parser.rs:835:13 [INFO] [stdout] | [INFO] [stdout] 835 | position_val.1 = self.at().position.1 - 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `for_iterators` is never read [INFO] [stdout] --> src/code_generator/x86_64.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct X8664Generator<'a> { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 32 | pub for_iterators: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `X8664Generator` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_bitwisenot_expr` is never used [INFO] [stdout] --> src/code_generator/x86_64.rs:838:8 [INFO] [stdout] | [INFO] [stdout] 59 | impl<'a> X8664Generator<'a> { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 838 | fn generate_bitwisenot_expr( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/ast.rs:101:10 [INFO] [stdout] | [INFO] [stdout] 101 | _EOL(_EOL), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 101 - _EOL(_EOL), [INFO] [stdout] 101 + _EOL(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 240 | pub struct Program { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 241 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Program` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 246 | pub struct _EOL { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 247 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `_EOL` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `operand`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:252:9 [INFO] [stdout] | [INFO] [stdout] 251 | pub struct UnaryBitwiseNotExpr { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 252 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 253 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 254 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryBitwiseNotExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 261 | pub struct RangeExpr { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 262 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RangeExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `name`, `super_class`, and `body` are never read [INFO] [stdout] --> src/ast.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 272 | pub struct ClassDeclaration { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 273 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 274 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 275 | pub super_class: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 276 | pub body: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `access_modifier`, and `function` are never read [INFO] [stdout] --> src/ast.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 283 | pub struct ClassFunctionDeclaration { [INFO] [stdout] | ------------------------ fields in this struct [INFO] [stdout] 284 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 285 | pub access_modifier: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 286 | pub function: Expr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassFunctionDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `access_modifier`, and `var` are never read [INFO] [stdout] --> src/ast.rs:294:9 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct ClassVarDeclaration { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 294 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 295 | pub access_modifier: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 296 | pub var: Stmt, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassVarDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 303 | pub struct Enum { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 304 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Enum` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `values` are never read [INFO] [stdout] --> src/ast.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 313 | pub struct MovStmt { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 314 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 315 | pub values: Vec<(String, String)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MovStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 322 | pub struct BooleanLiteral { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 323 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 324 | pub value: String, [INFO] [stdout] 325 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BooleanLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 332 | pub struct PreIncrementExpr { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 333 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 334 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PreIncrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:342:9 [INFO] [stdout] | [INFO] [stdout] 341 | pub struct PreDecrementExpr { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 342 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 343 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PreDecrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 350 | pub struct PostIncrementExpr { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 351 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 352 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PostIncrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:360:9 [INFO] [stdout] | [INFO] [stdout] 359 | pub struct PostDecrementExpr { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 360 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 361 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PostDecrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:369:9 [INFO] [stdout] | [INFO] [stdout] 368 | pub struct UnaryMinusExpr { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 369 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 370 | pub operand: Box, [INFO] [stdout] 371 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryMinusExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `operand`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 378 | pub struct LogicalNotExpr { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 379 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 380 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 381 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogicalNotExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:389:9 [INFO] [stdout] | [INFO] [stdout] 388 | pub struct ForStmt { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 389 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:400:9 [INFO] [stdout] | [INFO] [stdout] 399 | pub struct LoopStmt { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 400 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LoopStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:409:9 [INFO] [stdout] | [INFO] [stdout] 408 | pub struct BreakExpr { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 409 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BreakExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:417:9 [INFO] [stdout] | [INFO] [stdout] 416 | pub struct ContinueExpr { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 417 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ContinueExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `column`, `position`, and `lineno` are never read [INFO] [stdout] --> src/ast.rs:425:9 [INFO] [stdout] | [INFO] [stdout] 424 | pub struct Stmt { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 425 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub column: (usize, usize), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 429 | pub position: (usize, usize), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 430 | pub lineno: usize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:435:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct ReturnStmt { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 435 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReturnStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:444:9 [INFO] [stdout] | [INFO] [stdout] 443 | pub struct Identifier { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 444 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 445 | pub symbol: String, [INFO] [stdout] 446 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Identifier` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:474:9 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct StringLiteral { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 474 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 475 | pub value: String, [INFO] [stdout] 476 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StringLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `value`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:504:9 [INFO] [stdout] | [INFO] [stdout] 503 | pub struct VoidLiteral { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 504 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 505 | pub value: &'static str, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 506 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VoidLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:514:9 [INFO] [stdout] | [INFO] [stdout] 513 | pub struct NumericLiteral { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 514 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 515 | pub value: String, [INFO] [stdout] 516 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NumericLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:524:9 [INFO] [stdout] | [INFO] [stdout] 523 | pub struct TupleLiteral { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 524 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 525 | pub value: Vec, [INFO] [stdout] 526 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TupleLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `column`, `position`, and `lineno` are never read [INFO] [stdout] --> src/ast.rs:534:9 [INFO] [stdout] | [INFO] [stdout] 533 | pub struct Property { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 534 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub column: (usize, usize), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 538 | pub position: (usize, usize), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 539 | pub lineno: usize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Property` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:544:9 [INFO] [stdout] | [INFO] [stdout] 543 | pub struct ObjectLiteral { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 544 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:554:9 [INFO] [stdout] | [INFO] [stdout] 553 | pub struct WhileStmt { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 554 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WhileStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `constant` are never read [INFO] [stdout] --> src/ast.rs:564:9 [INFO] [stdout] | [INFO] [stdout] 563 | pub struct VarDeclaration { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 564 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 565 | pub constant: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VarDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:578:9 [INFO] [stdout] | [INFO] [stdout] 577 | pub struct FunctionDeclaration { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 578 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:591:9 [INFO] [stdout] | [INFO] [stdout] 590 | pub struct AssignmentExpr { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 591 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AssignmentExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:601:9 [INFO] [stdout] | [INFO] [stdout] 600 | pub struct BinaryExpr { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 601 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `object`, `property`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:613:9 [INFO] [stdout] | [INFO] [stdout] 612 | pub struct MemberExpr { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 613 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 614 | pub object: Box, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 615 | pub property: Box, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 616 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MemberExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:624:9 [INFO] [stdout] | [INFO] [stdout] 623 | pub struct CallExpr { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 624 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `paths` are never read [INFO] [stdout] --> src/ast.rs:635:9 [INFO] [stdout] | [INFO] [stdout] 634 | pub struct ImportStmt { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 635 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 636 | pub paths: HashMap>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ImportStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `statement` are never read [INFO] [stdout] --> src/ast.rs:644:9 [INFO] [stdout] | [INFO] [stdout] 643 | pub struct ExportStmt { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 644 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 645 | pub statement: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:653:9 [INFO] [stdout] | [INFO] [stdout] 652 | pub struct IfStmt { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 653 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IfStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `condition`, `consequent`, `alternate`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:664:9 [INFO] [stdout] | [INFO] [stdout] 663 | pub struct TernaryExpr { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 664 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 665 | pub condition: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 666 | pub consequent: Box, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 667 | pub alternate: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 668 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TernaryExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `statements` are never read [INFO] [stdout] --> src/ast.rs:676:9 [INFO] [stdout] | [INFO] [stdout] 675 | pub struct BlockExpr { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 676 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 677 | pub statements: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BlockExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:685:9 [INFO] [stdout] | [INFO] [stdout] 684 | pub struct AsmStmt { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 685 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AsmStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:694:9 [INFO] [stdout] | [INFO] [stdout] 693 | pub struct ArrayExpr { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 694 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 695 | pub elements: Vec, [INFO] [stdout] 696 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ArrayExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `array`, `index`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:704:9 [INFO] [stdout] | [INFO] [stdout] 703 | pub struct ArrayAccess { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 704 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 705 | pub array: Box, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 706 | pub index: Box, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 707 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ArrayAccess` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `program` is never read [INFO] [stdout] --> src/checker.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct Checker<'a> { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 74 | pub program: &'a Program, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `current_namespace` and `current_namespace_mut` are never used [INFO] [stdout] --> src/checker.rs:584:12 [INFO] [stdout] | [INFO] [stdout] 89 | impl<'a> Checker<'a> { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 584 | pub fn current_namespace(&self) -> &Namespace { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 588 | pub fn current_namespace_mut(&mut self) -> &mut Namespace { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Compiler` is never constructed [INFO] [stdout] --> src/compiler.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Compiler<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `compile` are never used [INFO] [stdout] --> src/compiler.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl<'a> Compiler<'a> { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn compile(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `EnumMember` is never constructed [INFO] [stdout] --> src/datatype.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Datatype { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | EnumMember(Box, String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Datatype` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `for_iterators` is never read [INFO] [stdout] --> src/code_generator/x86_64.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct X8664Generator<'a> { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 32 | pub for_iterators: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `X8664Generator` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `generate_bitwisenot_expr` is never used [INFO] [stdout] --> src/code_generator/x86_64.rs:838:8 [INFO] [stdout] | [INFO] [stdout] 59 | impl<'a> X8664Generator<'a> { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 838 | fn generate_bitwisenot_expr( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/ast.rs:101:10 [INFO] [stdout] | [INFO] [stdout] 101 | _EOL(_EOL), [INFO] [stdout] | ---- ^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 101 - _EOL(_EOL), [INFO] [stdout] 101 + _EOL(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 240 | pub struct Program { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 241 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Program` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 246 | pub struct _EOL { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 247 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `_EOL` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `operand`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:252:9 [INFO] [stdout] | [INFO] [stdout] 251 | pub struct UnaryBitwiseNotExpr { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 252 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 253 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 254 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryBitwiseNotExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 261 | pub struct RangeExpr { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 262 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RangeExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `name`, `super_class`, and `body` are never read [INFO] [stdout] --> src/ast.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 272 | pub struct ClassDeclaration { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 273 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 274 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 275 | pub super_class: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 276 | pub body: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `access_modifier`, and `function` are never read [INFO] [stdout] --> src/ast.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 283 | pub struct ClassFunctionDeclaration { [INFO] [stdout] | ------------------------ fields in this struct [INFO] [stdout] 284 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 285 | pub access_modifier: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 286 | pub function: Expr, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassFunctionDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `access_modifier`, and `var` are never read [INFO] [stdout] --> src/ast.rs:294:9 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct ClassVarDeclaration { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 294 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 295 | pub access_modifier: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 296 | pub var: Stmt, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassVarDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:304:9 [INFO] [stdout] | [INFO] [stdout] 303 | pub struct Enum { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 304 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Enum` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `values` are never read [INFO] [stdout] --> src/ast.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 313 | pub struct MovStmt { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 314 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 315 | pub values: Vec<(String, String)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MovStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 322 | pub struct BooleanLiteral { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 323 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 324 | pub value: String, [INFO] [stdout] 325 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BooleanLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 332 | pub struct PreIncrementExpr { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 333 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 334 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PreIncrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:342:9 [INFO] [stdout] | [INFO] [stdout] 341 | pub struct PreDecrementExpr { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 342 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 343 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PreDecrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:351:9 [INFO] [stdout] | [INFO] [stdout] 350 | pub struct PostIncrementExpr { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 351 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 352 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PostIncrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `operand` are never read [INFO] [stdout] --> src/ast.rs:360:9 [INFO] [stdout] | [INFO] [stdout] 359 | pub struct PostDecrementExpr { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 360 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 361 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PostDecrementExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:369:9 [INFO] [stdout] | [INFO] [stdout] 368 | pub struct UnaryMinusExpr { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 369 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 370 | pub operand: Box, [INFO] [stdout] 371 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UnaryMinusExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `operand`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:379:9 [INFO] [stdout] | [INFO] [stdout] 378 | pub struct LogicalNotExpr { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 379 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 380 | pub operand: Box, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 381 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogicalNotExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:389:9 [INFO] [stdout] | [INFO] [stdout] 388 | pub struct ForStmt { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 389 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ForStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:400:9 [INFO] [stdout] | [INFO] [stdout] 399 | pub struct LoopStmt { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 400 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LoopStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:409:9 [INFO] [stdout] | [INFO] [stdout] 408 | pub struct BreakExpr { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 409 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BreakExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:417:9 [INFO] [stdout] | [INFO] [stdout] 416 | pub struct ContinueExpr { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 417 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ContinueExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `column`, `position`, and `lineno` are never read [INFO] [stdout] --> src/ast.rs:425:9 [INFO] [stdout] | [INFO] [stdout] 424 | pub struct Stmt { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 425 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub column: (usize, usize), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 429 | pub position: (usize, usize), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 430 | pub lineno: usize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:435:9 [INFO] [stdout] | [INFO] [stdout] 434 | pub struct ReturnStmt { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 435 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReturnStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:444:9 [INFO] [stdout] | [INFO] [stdout] 443 | pub struct Identifier { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 444 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 445 | pub symbol: String, [INFO] [stdout] 446 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Identifier` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:474:9 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct StringLiteral { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 474 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 475 | pub value: String, [INFO] [stdout] 476 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StringLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `value`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:504:9 [INFO] [stdout] | [INFO] [stdout] 503 | pub struct VoidLiteral { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 504 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 505 | pub value: &'static str, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 506 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VoidLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:514:9 [INFO] [stdout] | [INFO] [stdout] 513 | pub struct NumericLiteral { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 514 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 515 | pub value: String, [INFO] [stdout] 516 | pub typ: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NumericLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:524:9 [INFO] [stdout] | [INFO] [stdout] 523 | pub struct TupleLiteral { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 524 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 525 | pub value: Vec, [INFO] [stdout] 526 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TupleLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `column`, `position`, and `lineno` are never read [INFO] [stdout] --> src/ast.rs:534:9 [INFO] [stdout] | [INFO] [stdout] 533 | pub struct Property { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 534 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub column: (usize, usize), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 538 | pub position: (usize, usize), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 539 | pub lineno: usize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Property` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:544:9 [INFO] [stdout] | [INFO] [stdout] 543 | pub struct ObjectLiteral { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 544 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectLiteral` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:554:9 [INFO] [stdout] | [INFO] [stdout] 553 | pub struct WhileStmt { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 554 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WhileStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `constant` are never read [INFO] [stdout] --> src/ast.rs:564:9 [INFO] [stdout] | [INFO] [stdout] 563 | pub struct VarDeclaration { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 564 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 565 | pub constant: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VarDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:578:9 [INFO] [stdout] | [INFO] [stdout] 577 | pub struct FunctionDeclaration { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 578 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionDeclaration` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:591:9 [INFO] [stdout] | [INFO] [stdout] 590 | pub struct AssignmentExpr { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 591 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AssignmentExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:601:9 [INFO] [stdout] | [INFO] [stdout] 600 | pub struct BinaryExpr { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 601 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/code_generator/x86_64.rs:176:13 [INFO] [stdout] | [INFO] [stdout] 176 | file_name = file_name + ".asm"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_name += ".asm"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:223:73 [INFO] [stdout] | [INFO] [stdout] 223 | ... self.local_identifier.get(&ident.symbol).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] = note: `#[warn(clippy::map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `object`, `property`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:613:9 [INFO] [stdout] | [INFO] [stdout] 612 | pub struct MemberExpr { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 613 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 614 | pub object: Box, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 615 | pub property: Box, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 616 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MemberExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:624:9 [INFO] [stdout] | [INFO] [stdout] 623 | pub struct CallExpr { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 624 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `paths` are never read [INFO] [stdout] --> src/ast.rs:635:9 [INFO] [stdout] | [INFO] [stdout] 634 | pub struct ImportStmt { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 635 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 636 | pub paths: HashMap>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ImportStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `statement` are never read [INFO] [stdout] --> src/ast.rs:644:9 [INFO] [stdout] | [INFO] [stdout] 643 | pub struct ExportStmt { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 644 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 645 | pub statement: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:653:9 [INFO] [stdout] | [INFO] [stdout] 652 | pub struct IfStmt { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 653 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IfStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/code_generator/x86_64.rs:349:16 [INFO] [stdout] | [INFO] [stdout] 349 | if !stmt.return_stmt.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stmt.return_stmt.is_some()` [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: fields `kind`, `condition`, `consequent`, `alternate`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:664:9 [INFO] [stdout] | [INFO] [stdout] 663 | pub struct TernaryExpr { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 664 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 665 | pub condition: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 666 | pub consequent: Box, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 667 | pub alternate: Box, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 668 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TernaryExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `statements` are never read [INFO] [stdout] --> src/ast.rs:676:9 [INFO] [stdout] | [INFO] [stdout] 675 | pub struct BlockExpr { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 676 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 677 | pub statements: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BlockExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `kind` is never read [INFO] [stdout] --> src/ast.rs:685:9 [INFO] [stdout] | [INFO] [stdout] 684 | pub struct AsmStmt { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 685 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AsmStmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind` and `typ` are never read [INFO] [stdout] --> src/ast.rs:694:9 [INFO] [stdout] | [INFO] [stdout] 693 | pub struct ArrayExpr { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 694 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 695 | pub elements: Vec, [INFO] [stdout] 696 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ArrayExpr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `array`, `index`, and `typ` are never read [INFO] [stdout] --> src/ast.rs:704:9 [INFO] [stdout] | [INFO] [stdout] 703 | pub struct ArrayAccess { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 704 | pub kind: NodeType, [INFO] [stdout] | ^^^^ [INFO] [stdout] 705 | pub array: Box, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 706 | pub index: Box, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 707 | pub typ: RefCell>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ArrayAccess` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `program` is never read [INFO] [stdout] --> src/checker.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct Checker<'a> { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 74 | pub program: &'a Program, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `current_namespace` and `current_namespace_mut` are never used [INFO] [stdout] --> src/checker.rs:584:12 [INFO] [stdout] | [INFO] [stdout] 89 | impl<'a> Checker<'a> { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 584 | pub fn current_namespace(&self) -> &Namespace { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 588 | pub fn current_namespace_mut(&mut self) -> &mut Namespace { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Compiler` is never constructed [INFO] [stdout] --> src/compiler.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct Compiler<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `compile` are never used [INFO] [stdout] --> src/compiler.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl<'a> Compiler<'a> { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 16 | pub fn compile(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `EnumMember` is never constructed [INFO] [stdout] --> src/datatype.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Datatype { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | EnumMember(Box, String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Datatype` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/code_generator/x86_64.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | self.assembly.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `self.assembly.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `param_index` is used as a loop counter [INFO] [stdout] --> src/code_generator/x86_64.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | for parameter in parameters { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (param_index, parameter) in parameters.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/code_generator/x86_64.rs:176:13 [INFO] [stdout] | [INFO] [stdout] 176 | file_name = file_name + ".asm"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_name += ".asm"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:223:73 [INFO] [stdout] | [INFO] [stdout] 223 | ... self.local_identifier.get(&ident.symbol).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] = note: `#[warn(clippy::map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/code_generator/x86_64.rs:349:16 [INFO] [stdout] | [INFO] [stdout] 349 | if !stmt.return_stmt.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stmt.return_stmt.is_some()` [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: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:427:44 [INFO] [stdout] | [INFO] [stdout] 427 | ... if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:436:75 [INFO] [stdout] | [INFO] [stdout] 436 | ... arg_stack.push(CallerType::Id(format!("{}", parameter))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `parameter.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: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:439:82 [INFO] [stdout] | [INFO] [stdout] 439 | ... self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:441:79 [INFO] [stdout] | [INFO] [stdout] 441 | ... arg_stack.push(CallerType::Id(format!("{}", id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `id.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/code_generator/x86_64.rs:443:79 [INFO] [stdout] | [INFO] [stdout] 443 | ... arg_stack.push(CallerType::Id(format!("{}", ident))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `ident.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: the variable `param_index` is used as a loop counter [INFO] [stdout] --> src/code_generator/x86_64.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | for parameter in parameters { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (param_index, parameter) in parameters.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:454:63 [INFO] [stdout] | [INFO] [stdout] 454 | ... arg_stack.push(CallerType::Id(format!("{}", reg))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `reg.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: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:457:44 [INFO] [stdout] | [INFO] [stdout] 457 | ... if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:466:75 [INFO] [stdout] | [INFO] [stdout] 466 | ... arg_stack.push(CallerType::Id(format!("{}", parameter))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `parameter.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: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:469:82 [INFO] [stdout] | [INFO] [stdout] 469 | ... self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:471:79 [INFO] [stdout] | [INFO] [stdout] 471 | ... arg_stack.push(CallerType::Id(format!("{}", id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `id.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/code_generator/x86_64.rs:473:79 [INFO] [stdout] | [INFO] [stdout] 473 | ... arg_stack.push(CallerType::Id(format!("{}", ident))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `ident.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: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:427:44 [INFO] [stdout] | [INFO] [stdout] 427 | ... if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `parameter_index` is used as a loop counter [INFO] [stdout] --> src/code_generator/x86_64.rs:505:13 [INFO] [stdout] | [INFO] [stdout] 505 | for arg in arg_stack { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (parameter_index, arg) in arg_stack.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:436:75 [INFO] [stdout] | [INFO] [stdout] 436 | ... arg_stack.push(CallerType::Id(format!("{}", parameter))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `parameter.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: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:439:82 [INFO] [stdout] | [INFO] [stdout] 439 | ... self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:441:79 [INFO] [stdout] | [INFO] [stdout] 441 | ... arg_stack.push(CallerType::Id(format!("{}", id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `id.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/code_generator/x86_64.rs:443:79 [INFO] [stdout] | [INFO] [stdout] 443 | ... arg_stack.push(CallerType::Id(format!("{}", ident))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `ident.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/code_generator/x86_64.rs:454:63 [INFO] [stdout] | [INFO] [stdout] 454 | ... arg_stack.push(CallerType::Id(format!("{}", reg))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `reg.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: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:457:44 [INFO] [stdout] | [INFO] [stdout] 457 | ... if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:466:75 [INFO] [stdout] | [INFO] [stdout] 466 | ... arg_stack.push(CallerType::Id(format!("{}", parameter))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `parameter.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: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:567:73 [INFO] [stdout] | [INFO] [stdout] 567 | let local = self.local_identifier.get(&ident.symbol).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:469:82 [INFO] [stdout] | [INFO] [stdout] 469 | ... self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:471:79 [INFO] [stdout] | [INFO] [stdout] 471 | ... arg_stack.push(CallerType::Id(format!("{}", id))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `id.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/code_generator/x86_64.rs:473:79 [INFO] [stdout] | [INFO] [stdout] 473 | ... arg_stack.push(CallerType::Id(format!("{}", ident))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `ident.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: the variable `parameter_index` is used as a loop counter [INFO] [stdout] --> src/code_generator/x86_64.rs:505:13 [INFO] [stdout] | [INFO] [stdout] 505 | for arg in arg_stack { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (parameter_index, arg) in arg_stack.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:648:20 [INFO] [stdout] | [INFO] [stdout] 648 | if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:657:83 [INFO] [stdout] | [INFO] [stdout] 657 | let local: Option<&String> = self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:567:73 [INFO] [stdout] | [INFO] [stdout] 567 | let local = self.local_identifier.get(&ident.symbol).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:729:32 [INFO] [stdout] | [INFO] [stdout] 729 | scope.push(format!("\tmov rdi, rax\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\tmov rdi, rax\n".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: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/code_generator/x86_64.rs:648:20 [INFO] [stdout] | [INFO] [stdout] 648 | if let Some(_) = self.identifier.get(&ident) { [INFO] [stdout] | -------^^^^^^^------------------------------ help: try: `if self.identifier.get(&ident).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary map of the identity function [INFO] [stdout] --> src/code_generator/x86_64.rs:657:83 [INFO] [stdout] | [INFO] [stdout] 657 | let local: Option<&String> = self.local_identifier.get(&ident).map(|id| id); [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove the call to `map` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_identity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:729:32 [INFO] [stdout] | [INFO] [stdout] 729 | scope.push(format!("\tmov rdi, rax\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\tmov rdi, rax\n".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 don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:861:43 [INFO] [stdout] | [INFO] [stdout] 861 | let (placeholder, dat_type) = match typ { [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 862 | | &Datatype::Integer => { [INFO] [stdout] 863 | | let data = (format!("__INT_{}", self.unitialized_integer_counter), "0"); [INFO] [stdout] 864 | | self.unitialized_integer_counter += 1; [INFO] [stdout] ... | [INFO] [stdout] 892 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 861 ~ let (placeholder, dat_type) = match *typ { [INFO] [stdout] 862 ~ Datatype::Integer => { [INFO] [stdout] 863 | let data = (format!("__INT_{}", self.unitialized_integer_counter), "0"); [INFO] [stdout] ... [INFO] [stdout] 866 | } [INFO] [stdout] 867 ~ Datatype::Text => { [INFO] [stdout] 868 | let data = (format!("__STR_{}", self.unitialized_string_counter), "2"); [INFO] [stdout] ... [INFO] [stdout] 871 | } [INFO] [stdout] 872 ~ Datatype::Boolean => { [INFO] [stdout] 873 | let data = (format!("__BOOL_{}", self.unitialized_boolean_counter), "3"); [INFO] [stdout] ... [INFO] [stdout] 876 | } [INFO] [stdout] 877 ~ Datatype::Array(_) => { [INFO] [stdout] 878 | let data = (format!("__ARR_{}", self.unitialized_array_counter), "5"); [INFO] [stdout] ... [INFO] [stdout] 881 | } [INFO] [stdout] 882 ~ Datatype::Tuple(_) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/code_generator/x86_64.rs:894:13 [INFO] [stdout] | [INFO] [stdout] 894 | let ptr: String; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `ptr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 894 ~ [INFO] [stdout] 895 ~ let ptr: String = if dat_type == "2" { [INFO] [stdout] 896 ~ format!("\t{} db \"{}\", 0x0\n", placeholder, value) [INFO] [stdout] 897 | } else { [INFO] [stdout] 898 ~ format!("\t{} db {}\n", placeholder, value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:861:43 [INFO] [stdout] | [INFO] [stdout] 861 | let (placeholder, dat_type) = match typ { [INFO] [stdout] | ___________________________________________^ [INFO] [stdout] 862 | | &Datatype::Integer => { [INFO] [stdout] 863 | | let data = (format!("__INT_{}", self.unitialized_integer_counter), "0"); [INFO] [stdout] 864 | | self.unitialized_integer_counter += 1; [INFO] [stdout] ... | [INFO] [stdout] 892 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 861 ~ let (placeholder, dat_type) = match *typ { [INFO] [stdout] 862 ~ Datatype::Integer => { [INFO] [stdout] 863 | let data = (format!("__INT_{}", self.unitialized_integer_counter), "0"); [INFO] [stdout] ... [INFO] [stdout] 866 | } [INFO] [stdout] 867 ~ Datatype::Text => { [INFO] [stdout] 868 | let data = (format!("__STR_{}", self.unitialized_string_counter), "2"); [INFO] [stdout] ... [INFO] [stdout] 871 | } [INFO] [stdout] 872 ~ Datatype::Boolean => { [INFO] [stdout] 873 | let data = (format!("__BOOL_{}", self.unitialized_boolean_counter), "3"); [INFO] [stdout] ... [INFO] [stdout] 876 | } [INFO] [stdout] 877 ~ Datatype::Array(_) => { [INFO] [stdout] 878 | let data = (format!("__ARR_{}", self.unitialized_array_counter), "5"); [INFO] [stdout] ... [INFO] [stdout] 881 | } [INFO] [stdout] 882 ~ Datatype::Tuple(_) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/code_generator/x86_64.rs:894:13 [INFO] [stdout] | [INFO] [stdout] 894 | let ptr: String; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `ptr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 894 ~ [INFO] [stdout] 895 ~ let ptr: String = if dat_type == "2" { [INFO] [stdout] 896 ~ format!("\t{} db \"{}\", 0x0\n", placeholder, value) [INFO] [stdout] 897 | } else { [INFO] [stdout] 898 ~ format!("\t{} db {}\n", placeholder, value) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:960:44 [INFO] [stdout] | [INFO] [stdout] 960 | ... let dat_type = match typ { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 961 | | ... &Datatype::Integer => "0", [INFO] [stdout] 962 | | ... &Datatype::Text => "2", [INFO] [stdout] 963 | | ... &Datatype::Boolean => "3", [INFO] [stdout] ... | [INFO] [stdout] 966 | | ... _ => "4", [INFO] [stdout] 967 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 960 ~ let dat_type = match *typ { [INFO] [stdout] 961 ~ Datatype::Integer => "0", [INFO] [stdout] 962 ~ Datatype::Text => "2", [INFO] [stdout] 963 ~ Datatype::Boolean => "3", [INFO] [stdout] 964 ~ Datatype::Array(_) => "5", [INFO] [stdout] 965 ~ Datatype::Tuple(_) => "6", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:976:44 [INFO] [stdout] | [INFO] [stdout] 976 | ... let dat_type = match typ { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 977 | | ... &Datatype::Integer => "0", [INFO] [stdout] 978 | | ... &Datatype::Text => "2", [INFO] [stdout] 979 | | ... &Datatype::Boolean => "3", [INFO] [stdout] ... | [INFO] [stdout] 982 | | ... _ => "4", [INFO] [stdout] 983 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 976 ~ let dat_type = match *typ { [INFO] [stdout] 977 ~ Datatype::Integer => "0", [INFO] [stdout] 978 ~ Datatype::Text => "2", [INFO] [stdout] 979 ~ Datatype::Boolean => "3", [INFO] [stdout] 980 ~ Datatype::Array(_) => "5", [INFO] [stdout] 981 ~ Datatype::Tuple(_) => "6", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:960:44 [INFO] [stdout] | [INFO] [stdout] 960 | ... let dat_type = match typ { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 961 | | ... &Datatype::Integer => "0", [INFO] [stdout] 962 | | ... &Datatype::Text => "2", [INFO] [stdout] 963 | | ... &Datatype::Boolean => "3", [INFO] [stdout] ... | [INFO] [stdout] 966 | | ... _ => "4", [INFO] [stdout] 967 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 960 ~ let dat_type = match *typ { [INFO] [stdout] 961 ~ Datatype::Integer => "0", [INFO] [stdout] 962 ~ Datatype::Text => "2", [INFO] [stdout] 963 ~ Datatype::Boolean => "3", [INFO] [stdout] 964 ~ Datatype::Array(_) => "5", [INFO] [stdout] 965 ~ Datatype::Tuple(_) => "6", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:990:21 [INFO] [stdout] | [INFO] [stdout] 990 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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 don't need to add `&` to all patterns [INFO] [stdout] --> src/code_generator/x86_64.rs:976:44 [INFO] [stdout] | [INFO] [stdout] 976 | ... let dat_type = match typ { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 977 | | ... &Datatype::Integer => "0", [INFO] [stdout] 978 | | ... &Datatype::Text => "2", [INFO] [stdout] 979 | | ... &Datatype::Boolean => "3", [INFO] [stdout] ... | [INFO] [stdout] 982 | | ... _ => "4", [INFO] [stdout] 983 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stdout] | [INFO] [stdout] 976 ~ let dat_type = match *typ { [INFO] [stdout] 977 ~ Datatype::Integer => "0", [INFO] [stdout] 978 ~ Datatype::Text => "2", [INFO] [stdout] 979 ~ Datatype::Boolean => "3", [INFO] [stdout] 980 ~ Datatype::Array(_) => "5", [INFO] [stdout] 981 ~ Datatype::Tuple(_) => "6", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:990:21 [INFO] [stdout] | [INFO] [stdout] 990 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1021:29 [INFO] [stdout] | [INFO] [stdout] 1021 | ... format!("{}", identifier), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `identifier.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/code_generator/x86_64.rs:1032:21 [INFO] [stdout] | [INFO] [stdout] 1032 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1021:29 [INFO] [stdout] | [INFO] [stdout] 1021 | ... format!("{}", identifier), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `identifier.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/code_generator/x86_64.rs:1032:21 [INFO] [stdout] | [INFO] [stdout] 1032 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1072:21 [INFO] [stdout] | [INFO] [stdout] 1072 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1072:21 [INFO] [stdout] | [INFO] [stdout] 1072 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1098:21 [INFO] [stdout] | [INFO] [stdout] 1098 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1098:21 [INFO] [stdout] | [INFO] [stdout] 1098 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1145:17 [INFO] [stdout] | [INFO] [stdout] 1145 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1145:17 [INFO] [stdout] | [INFO] [stdout] 1145 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1200:21 [INFO] [stdout] | [INFO] [stdout] 1200 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1202:21 [INFO] [stdout] | [INFO] [stdout] 1202 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1211:21 [INFO] [stdout] | [INFO] [stdout] 1211 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1213:21 [INFO] [stdout] | [INFO] [stdout] 1213 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1200:21 [INFO] [stdout] | [INFO] [stdout] 1200 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1202:21 [INFO] [stdout] | [INFO] [stdout] 1202 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1211:21 [INFO] [stdout] | [INFO] [stdout] 1211 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1213:21 [INFO] [stdout] | [INFO] [stdout] 1213 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1317:28 [INFO] [stdout] | [INFO] [stdout] 1317 | scope.push(format!("\txor rcx, rcx\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\txor rcx, rcx\n".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/code_generator/x86_64.rs:1326:28 [INFO] [stdout] | [INFO] [stdout] 1326 | scope.push(format!("\txor rcx, rcx\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\txor rcx, rcx\n".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/code_generator/x86_64.rs:1317:28 [INFO] [stdout] | [INFO] [stdout] 1317 | scope.push(format!("\txor rcx, rcx\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\txor rcx, rcx\n".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/code_generator/x86_64.rs:1326:28 [INFO] [stdout] | [INFO] [stdout] 1326 | scope.push(format!("\txor rcx, rcx\n")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\txor rcx, rcx\n".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: unneeded `return` statement [INFO] [stdout] --> src/code_generator/x86_64.rs:1682:9 [INFO] [stdout] | [INFO] [stdout] 1682 | return "".to_string(); [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] 1682 - return "".to_string(); [INFO] [stdout] 1682 + "".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/code_generator/x86_64.rs:1685:5 [INFO] [stdout] | [INFO] [stdout] 1685 | / fn generate_if_stmt( [INFO] [stdout] 1686 | | &mut self, [INFO] [stdout] 1687 | | stmt: IfStmt, [INFO] [stdout] 1688 | | hasend: bool, [INFO] [stdout] ... | [INFO] [stdout] 1693 | | parent_counter: usize, [INFO] [stdout] 1694 | | ) { [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 let-binding has unit value [INFO] [stdout] --> src/code_generator/x86_64.rs:1721:21 [INFO] [stdout] | [INFO] [stdout] 1721 | / let mut _value = self.generate_if_stmt( [INFO] [stdout] 1722 | | *s, [INFO] [stdout] 1723 | | true, [INFO] [stdout] 1724 | | label_end.clone(), [INFO] [stdout] ... | [INFO] [stdout] 1728 | | parent_counter.clone(), [INFO] [stdout] 1729 | | ); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 1721 - let mut _value = self.generate_if_stmt( [INFO] [stdout] 1721 + self.generate_if_stmt( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1728:25 [INFO] [stdout] | [INFO] [stdout] 1728 | parent_counter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1737:49 [INFO] [stdout] | [INFO] [stdout] 1737 | self.generate_continue_expr(parent_counter.clone(), continuable.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1768:25 [INFO] [stdout] | [INFO] [stdout] 1768 | parent_counter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/code_generator/x86_64.rs:1682:9 [INFO] [stdout] | [INFO] [stdout] 1682 | return "".to_string(); [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] 1682 - return "".to_string(); [INFO] [stdout] 1682 + "".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1802:61 [INFO] [stdout] | [INFO] [stdout] 1802 | self.generate_var_declaration(v, scope, format!("{}", label)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label.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/code_generator/x86_64.rs:1810:21 [INFO] [stdout] | [INFO] [stdout] 1810 | format!("{}", label_exit), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label_exit.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1817:49 [INFO] [stdout] | [INFO] [stdout] 1817 | self.generate_continue_expr(current_loop.clone(), label.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_loop` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/code_generator/x86_64.rs:1685:5 [INFO] [stdout] | [INFO] [stdout] 1685 | / fn generate_if_stmt( [INFO] [stdout] 1686 | | &mut self, [INFO] [stdout] 1687 | | stmt: IfStmt, [INFO] [stdout] 1688 | | hasend: bool, [INFO] [stdout] ... | [INFO] [stdout] 1693 | | parent_counter: usize, [INFO] [stdout] 1694 | | ) { [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: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1853:61 [INFO] [stdout] | [INFO] [stdout] 1853 | self.generate_var_declaration(v, scope, format!("{}", label)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label.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 let-binding has unit value [INFO] [stdout] --> src/code_generator/x86_64.rs:1721:21 [INFO] [stdout] | [INFO] [stdout] 1721 | / let mut _value = self.generate_if_stmt( [INFO] [stdout] 1722 | | *s, [INFO] [stdout] 1723 | | true, [INFO] [stdout] 1724 | | label_end.clone(), [INFO] [stdout] ... | [INFO] [stdout] 1728 | | parent_counter.clone(), [INFO] [stdout] 1729 | | ); [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 1721 - let mut _value = self.generate_if_stmt( [INFO] [stdout] 1721 + self.generate_if_stmt( [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1728:25 [INFO] [stdout] | [INFO] [stdout] 1728 | parent_counter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1861:21 [INFO] [stdout] | [INFO] [stdout] 1861 | format!("{}", label_exit), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label_exit.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1868:49 [INFO] [stdout] | [INFO] [stdout] 1868 | self.generate_continue_expr(current_while.clone(), label.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_while` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1737:49 [INFO] [stdout] | [INFO] [stdout] 1737 | self.generate_continue_expr(parent_counter.clone(), continuable.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1768:25 [INFO] [stdout] | [INFO] [stdout] 1768 | parent_counter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `parent_counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1899:17 [INFO] [stdout] | [INFO] [stdout] 1899 | format!("{}", self.search_symbol(&identifier)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `self.search_symbol(&identifier).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/code_generator/x86_64.rs:1945:13 [INFO] [stdout] | [INFO] [stdout] 1945 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1947:13 [INFO] [stdout] | [INFO] [stdout] 1947 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1802:61 [INFO] [stdout] | [INFO] [stdout] 1802 | self.generate_var_declaration(v, scope, format!("{}", label)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label.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/code_generator/x86_64.rs:1966:13 [INFO] [stdout] | [INFO] [stdout] 1966 | format!("{}", name) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `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/code_generator/x86_64.rs:1810:21 [INFO] [stdout] | [INFO] [stdout] 1810 | format!("{}", label_exit), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label_exit.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1817:49 [INFO] [stdout] | [INFO] [stdout] 1817 | self.generate_continue_expr(current_loop.clone(), label.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_loop` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1853:61 [INFO] [stdout] | [INFO] [stdout] 1853 | self.generate_var_declaration(v, scope, format!("{}", label)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label.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/code_generator/x86_64.rs:1861:21 [INFO] [stdout] | [INFO] [stdout] 1861 | format!("{}", label_exit), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `label_exit.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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/code_generator/x86_64.rs:1868:49 [INFO] [stdout] | [INFO] [stdout] 1868 | self.generate_continue_expr(current_while.clone(), label.clone(), scope) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_while` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1899:17 [INFO] [stdout] | [INFO] [stdout] 1899 | format!("{}", self.search_symbol(&identifier)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `self.search_symbol(&identifier).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: variant name ends with the enum's name [INFO] [stdout] --> src/ast.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | BlockExpr(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/ast.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | RangeExpr(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/code_generator/x86_64.rs:1945:13 [INFO] [stdout] | [INFO] [stdout] 1945 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1947:13 [INFO] [stdout] | [INFO] [stdout] 1947 | format!("") [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [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/code_generator/x86_64.rs:1966:13 [INFO] [stdout] | [INFO] [stdout] 1966 | format!("{}", name) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `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` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right { [INFO] [stdout] 109 | | true [INFO] [stdout] 110 | | } else { [INFO] [stdout] 111 | | false [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [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] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ (Expr::BinaryExpr(b1), Expr::BinaryExpr(b2)) [INFO] [stdout] 108 ~ if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right => { [INFO] [stdout] 109 | true [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | / if b1.value == b2.value { [INFO] [stdout] 116 | | true [INFO] [stdout] 117 | | } else { [INFO] [stdout] 118 | | false [INFO] [stdout] 119 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 114 ~ (Expr::BooleanLiteral(b1), Expr::BooleanLiteral(b2)) [INFO] [stdout] 115 ~ if b1.value == b2.value => { [INFO] [stdout] 116 | true [INFO] [stdout] 117 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | / if i1.symbol == i2.symbol { [INFO] [stdout] 123 | | true [INFO] [stdout] 124 | | } else { [INFO] [stdout] 125 | | false [INFO] [stdout] 126 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 121 ~ (Expr::Identifier(i1), Expr::Identifier(i2)) [INFO] [stdout] 122 ~ if i1.symbol == i2.symbol => { [INFO] [stdout] 123 | true [INFO] [stdout] 124 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if n1.value == n2.value { [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 128 ~ (Expr::NumericLiteral(n1), Expr::NumericLiteral(n2)) [INFO] [stdout] 129 ~ if n1.value == n2.value => { [INFO] [stdout] 130 | true [INFO] [stdout] 131 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | / if s1.value == s2.value { [INFO] [stdout] 137 | | true [INFO] [stdout] 138 | | } else { [INFO] [stdout] 139 | | false [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 135 ~ (Expr::StringLiteral(s1), Expr::StringLiteral(s2)) [INFO] [stdout] 136 ~ if s1.value == s2.value => { [INFO] [stdout] 137 | true [INFO] [stdout] 138 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right { [INFO] [stdout] 109 | | true [INFO] [stdout] 110 | | } else { [INFO] [stdout] 111 | | false [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | / if b1.value == b2.value { [INFO] [stdout] 116 | | true [INFO] [stdout] 117 | | } else { [INFO] [stdout] 118 | | false [INFO] [stdout] 119 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `b1.value == b2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | / if i1.symbol == i2.symbol { [INFO] [stdout] 123 | | true [INFO] [stdout] 124 | | } else { [INFO] [stdout] 125 | | false [INFO] [stdout] 126 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `i1.symbol == i2.symbol` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if n1.value == n2.value { [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `n1.value == n2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | / if s1.value == s2.value { [INFO] [stdout] 137 | | true [INFO] [stdout] 138 | | } else { [INFO] [stdout] 139 | | false [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `s1.value == s2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/ast.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | BlockExpr(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/ast.rs:99:5 [INFO] [stdout] | [INFO] [stdout] 99 | RangeExpr(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right { [INFO] [stdout] 109 | | true [INFO] [stdout] 110 | | } else { [INFO] [stdout] 111 | | false [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [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] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ (Expr::BinaryExpr(b1), Expr::BinaryExpr(b2)) [INFO] [stdout] 108 ~ if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right => { [INFO] [stdout] 109 | true [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | / if b1.value == b2.value { [INFO] [stdout] 116 | | true [INFO] [stdout] 117 | | } else { [INFO] [stdout] 118 | | false [INFO] [stdout] 119 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 114 ~ (Expr::BooleanLiteral(b1), Expr::BooleanLiteral(b2)) [INFO] [stdout] 115 ~ if b1.value == b2.value => { [INFO] [stdout] 116 | true [INFO] [stdout] 117 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | / if i1.symbol == i2.symbol { [INFO] [stdout] 123 | | true [INFO] [stdout] 124 | | } else { [INFO] [stdout] 125 | | false [INFO] [stdout] 126 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 121 ~ (Expr::Identifier(i1), Expr::Identifier(i2)) [INFO] [stdout] 122 ~ if i1.symbol == i2.symbol => { [INFO] [stdout] 123 | true [INFO] [stdout] 124 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if n1.value == n2.value { [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 128 ~ (Expr::NumericLiteral(n1), Expr::NumericLiteral(n2)) [INFO] [stdout] 129 ~ if n1.value == n2.value => { [INFO] [stdout] 130 | true [INFO] [stdout] 131 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/ast.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | / if s1.value == s2.value { [INFO] [stdout] 137 | | true [INFO] [stdout] 138 | | } else { [INFO] [stdout] 139 | | false [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 135 ~ (Expr::StringLiteral(s1), Expr::StringLiteral(s2)) [INFO] [stdout] 136 ~ if s1.value == s2.value => { [INFO] [stdout] 137 | true [INFO] [stdout] 138 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right { [INFO] [stdout] 109 | | true [INFO] [stdout] 110 | | } else { [INFO] [stdout] 111 | | false [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `b1.left == b2.left && b1.operator == b2.operator && b1.right == b2.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | / if b1.value == b2.value { [INFO] [stdout] 116 | | true [INFO] [stdout] 117 | | } else { [INFO] [stdout] 118 | | false [INFO] [stdout] 119 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `b1.value == b2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | / if i1.symbol == i2.symbol { [INFO] [stdout] 123 | | true [INFO] [stdout] 124 | | } else { [INFO] [stdout] 125 | | false [INFO] [stdout] 126 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `i1.symbol == i2.symbol` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | / if n1.value == n2.value { [INFO] [stdout] 130 | | true [INFO] [stdout] 131 | | } else { [INFO] [stdout] 132 | | false [INFO] [stdout] 133 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `n1.value == n2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/ast.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | / if s1.value == s2.value { [INFO] [stdout] 137 | | true [INFO] [stdout] 138 | | } else { [INFO] [stdout] 139 | | false [INFO] [stdout] 140 | | } [INFO] [stdout] | |_________________^ help: you can reduce it to: `s1.value == s2.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/ast.rs:625:15 [INFO] [stdout] | [INFO] [stdout] 625 | pub args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | return self.names.contains_key(name.as_str()); [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] 57 - return self.names.contains_key(name.as_str()); [INFO] [stdout] 57 + self.names.contains_key(name.as_str()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/checker.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | / let mut bodies: Vec<(i32, Dt, Vec)> = Vec::new(); [INFO] [stdout] 98 | | bodies.push((0, None, tree.body.clone())); [INFO] [stdout] | |__________________________________________________^ help: consider using the `vec![]` macro: `let bodies: Vec<(i32, Dt, Vec)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/ast.rs:625:15 [INFO] [stdout] | [INFO] [stdout] 625 | pub args: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/checker.rs:172:69 [INFO] [stdout] | [INFO] [stdout] 172 | Some(Expr::WhileStmt(ref stmt)) => self.check_while(&*stmt), [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] 172 - Some(Expr::WhileStmt(ref stmt)) => self.check_while(&*stmt), [INFO] [stdout] 172 + Some(Expr::WhileStmt(ref stmt)) => self.check_while(stmt), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 172 | Some(Expr::WhileStmt(ref stmt)) => self.check_while(&**stmt), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/checker.rs:174:69 [INFO] [stdout] | [INFO] [stdout] 174 | Some(Expr::RangeExpr(ref expr)) => self.check_range(&*expr), [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] 174 - Some(Expr::RangeExpr(ref expr)) => self.check_range(&*expr), [INFO] [stdout] 174 + Some(Expr::RangeExpr(ref expr)) => self.check_range(expr), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 174 | Some(Expr::RangeExpr(ref expr)) => self.check_range(&**expr), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:182:33 [INFO] [stdout] | [INFO] [stdout] 182 | let filename: &String = &self.filename; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `self.filename` [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/checker.rs:205:9 [INFO] [stdout] | [INFO] [stdout] 205 | / return match self.namespace.getvar(&expr.symbol) { [INFO] [stdout] 206 | | Ok(value) => value.clone(), [INFO] [stdout] 207 | | Err(error) => { [INFO] [stdout] 208 | | self.error(&Expr::Identifier(expr.clone()), &error); [INFO] [stdout] ... | [INFO] [stdout] 211 | | }; [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] 205 ~ match self.namespace.getvar(&expr.symbol) { [INFO] [stdout] 206 + Ok(value) => value.clone(), [INFO] [stdout] 207 + Err(error) => { [INFO] [stdout] 208 + self.error(&Expr::Identifier(expr.clone()), &error); [INFO] [stdout] 209 + Some(Void) [INFO] [stdout] 210 + } [INFO] [stdout] 211 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:215:9 [INFO] [stdout] | [INFO] [stdout] 215 | / return match self.namespace.getvar(&expr) { [INFO] [stdout] 216 | | Ok(Some(value)) => Some(value), [INFO] [stdout] 217 | | Ok(None) => None, [INFO] [stdout] 218 | | Err(error) => { [INFO] [stdout] ... | [INFO] [stdout] 232 | | }; [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] 215 ~ match self.namespace.getvar(&expr) { [INFO] [stdout] 216 + Ok(Some(value)) => Some(value), [INFO] [stdout] 217 + Ok(None) => None, [INFO] [stdout] 218 + Err(error) => { [INFO] [stdout] 219 + self.error( [INFO] [stdout] 220 + &Expr::StringLiteral(StringLiteral { [INFO] [stdout] 221 + kind: NodeType::StringLiteral, [INFO] [stdout] 222 + value: expr.clone(), [INFO] [stdout] 223 + typ: Some(Text), [INFO] [stdout] 224 + column: (0, 0), [INFO] [stdout] 225 + position: (0, 0), [INFO] [stdout] 226 + lineno: 0, [INFO] [stdout] 227 + }), [INFO] [stdout] 228 + &error, [INFO] [stdout] 229 + ); [INFO] [stdout] 230 + Some(Void) [INFO] [stdout] 231 + } [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:215:44 [INFO] [stdout] | [INFO] [stdout] 215 | return match self.namespace.getvar(&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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:267:9 [INFO] [stdout] | [INFO] [stdout] 267 | / return if types.len() == 1 { [INFO] [stdout] 268 | | if Some(types[0].clone()).is_none() { [INFO] [stdout] 269 | | return Some(Void); [INFO] [stdout] ... | [INFO] [stdout] 275 | | Some(Void) [INFO] [stdout] 276 | | }; [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] 267 ~ if types.len() == 1 { [INFO] [stdout] 268 + if Some(types[0].clone()).is_none() { [INFO] [stdout] 269 + return Some(Void); [INFO] [stdout] 270 + } [INFO] [stdout] 271 + let r: Option = Some(Object(Box::new(types[0].clone()))); [INFO] [stdout] 272 + *expr.typ.borrow_mut() = r.clone(); [INFO] [stdout] 273 + return r; [INFO] [stdout] 274 + } else { [INFO] [stdout] 275 + Some(Void) [INFO] [stdout] 276 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:256:37 [INFO] [stdout] | [INFO] [stdout] 256 | if !(types.contains(&dt)) { [INFO] [stdout] | ^^^ help: change this to: `dt` [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 which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:291:21 [INFO] [stdout] | [INFO] [stdout] 291 | &*(decl.value), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&(decl.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:307:30 [INFO] [stdout] | [INFO] [stdout] 307 | let assigne: &Expr = &*expr.assigne; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&expr.assigne` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:308:28 [INFO] [stdout] | [INFO] [stdout] 308 | let value: &Expr = &*expr.value; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | &assigne, [INFO] [stdout] | ^^^^^^^^ help: change this to: `assigne` [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/checker.rs:325:46 [INFO] [stdout] | [INFO] [stdout] 325 | Err(error) => self.error(&assigne, error.as_str()), [INFO] [stdout] | ^^^^^^^^ help: change this to: `assigne` [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: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:397:25 [INFO] [stdout] | [INFO] [stdout] 397 | return st; [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] 397 - return st; [INFO] [stdout] 397 + st [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:447:21 [INFO] [stdout] | [INFO] [stdout] 447 | return t; [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] 447 - return t; [INFO] [stdout] 447 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:487:29 [INFO] [stdout] | [INFO] [stdout] 487 | ... return t; [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] 487 - return t; [INFO] [stdout] 487 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:524:21 [INFO] [stdout] | [INFO] [stdout] 524 | return t; [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] 524 - return t; [INFO] [stdout] 524 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:529:13 [INFO] [stdout] | [INFO] [stdout] 529 | return Some(Void); [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] 529 - return Some(Void); [INFO] [stdout] 529 + Some(Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:348:29 [INFO] [stdout] | [INFO] [stdout] 348 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | return self.names.contains_key(name.as_str()); [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] 57 - return self.names.contains_key(name.as_str()); [INFO] [stdout] 57 + self.names.contains_key(name.as_str()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:357:29 [INFO] [stdout] | [INFO] [stdout] 357 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:404:33 [INFO] [stdout] | [INFO] [stdout] 404 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:413:33 [INFO] [stdout] | [INFO] [stdout] 413 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/checker.rs:97:9 [INFO] [stdout] | [INFO] [stdout] 97 | / let mut bodies: Vec<(i32, Dt, Vec)> = Vec::new(); [INFO] [stdout] 98 | | bodies.push((0, None, tree.body.clone())); [INFO] [stdout] | |__________________________________________________^ help: consider using the `vec![]` macro: `let bodies: Vec<(i32, Dt, Vec)> = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:455:29 [INFO] [stdout] | [INFO] [stdout] 455 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:464:29 [INFO] [stdout] | [INFO] [stdout] 464 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/checker.rs:172:69 [INFO] [stdout] | [INFO] [stdout] 172 | Some(Expr::WhileStmt(ref stmt)) => self.check_while(&*stmt), [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] 172 - Some(Expr::WhileStmt(ref stmt)) => self.check_while(&*stmt), [INFO] [stdout] 172 + Some(Expr::WhileStmt(ref stmt)) => self.check_while(stmt), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 172 | Some(Expr::WhileStmt(ref stmt)) => self.check_while(&**stmt), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/checker.rs:174:69 [INFO] [stdout] | [INFO] [stdout] 174 | Some(Expr::RangeExpr(ref expr)) => self.check_range(&*expr), [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] 174 - Some(Expr::RangeExpr(ref expr)) => self.check_range(&*expr), [INFO] [stdout] 174 + Some(Expr::RangeExpr(ref expr)) => self.check_range(expr), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 174 | Some(Expr::RangeExpr(ref expr)) => self.check_range(&**expr), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:503:37 [INFO] [stdout] | [INFO] [stdout] 503 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:182:33 [INFO] [stdout] | [INFO] [stdout] 182 | let filename: &String = &self.filename; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `self.filename` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:510:37 [INFO] [stdout] | [INFO] [stdout] 510 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:516:40 [INFO] [stdout] | [INFO] [stdout] 516 | ... self.error(&*expr.left, err.as_str()); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:519:40 [INFO] [stdout] | [INFO] [stdout] 519 | ... self.error(&*expr.right, err.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:544:13 [INFO] [stdout] | [INFO] [stdout] 544 | return Some(Array(Box::new(types[0].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] 544 - return Some(Array(Box::new(types[0].clone()))); [INFO] [stdout] 544 + Some(Array(Box::new(types[0].clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/checker.rs:554:34 [INFO] [stdout] | [INFO] [stdout] 554 | fn pushbody(&mut self, body: &mut Vec, name: String, rettype: Datatype) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 554 - fn pushbody(&mut self, body: &mut Vec, name: String, rettype: Datatype) { [INFO] [stdout] 554 + fn pushbody(&mut self, body: &mut [Stmt], name: String, rettype: Datatype) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:205:9 [INFO] [stdout] | [INFO] [stdout] 205 | / return match self.namespace.getvar(&expr.symbol) { [INFO] [stdout] 206 | | Ok(value) => value.clone(), [INFO] [stdout] 207 | | Err(error) => { [INFO] [stdout] 208 | | self.error(&Expr::Identifier(expr.clone()), &error); [INFO] [stdout] ... | [INFO] [stdout] 211 | | }; [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] 205 ~ match self.namespace.getvar(&expr.symbol) { [INFO] [stdout] 206 + Ok(value) => value.clone(), [INFO] [stdout] 207 + Err(error) => { [INFO] [stdout] 208 + self.error(&Expr::Identifier(expr.clone()), &error); [INFO] [stdout] 209 + Some(Void) [INFO] [stdout] 210 + } [INFO] [stdout] 211 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:215:9 [INFO] [stdout] | [INFO] [stdout] 215 | / return match self.namespace.getvar(&expr) { [INFO] [stdout] 216 | | Ok(Some(value)) => Some(value), [INFO] [stdout] 217 | | Ok(None) => None, [INFO] [stdout] 218 | | Err(error) => { [INFO] [stdout] ... | [INFO] [stdout] 232 | | }; [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] 215 ~ match self.namespace.getvar(&expr) { [INFO] [stdout] 216 + Ok(Some(value)) => Some(value), [INFO] [stdout] 217 + Ok(None) => None, [INFO] [stdout] 218 + Err(error) => { [INFO] [stdout] 219 + self.error( [INFO] [stdout] 220 + &Expr::StringLiteral(StringLiteral { [INFO] [stdout] 221 + kind: NodeType::StringLiteral, [INFO] [stdout] 222 + value: expr.clone(), [INFO] [stdout] 223 + typ: Some(Text), [INFO] [stdout] 224 + column: (0, 0), [INFO] [stdout] 225 + position: (0, 0), [INFO] [stdout] 226 + lineno: 0, [INFO] [stdout] 227 + }), [INFO] [stdout] 228 + &error, [INFO] [stdout] 229 + ); [INFO] [stdout] 230 + Some(Void) [INFO] [stdout] 231 + } [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:215:44 [INFO] [stdout] | [INFO] [stdout] 215 | return match self.namespace.getvar(&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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:267:9 [INFO] [stdout] | [INFO] [stdout] 267 | / return if types.len() == 1 { [INFO] [stdout] 268 | | if Some(types[0].clone()).is_none() { [INFO] [stdout] 269 | | return Some(Void); [INFO] [stdout] ... | [INFO] [stdout] 275 | | Some(Void) [INFO] [stdout] 276 | | }; [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] 267 ~ if types.len() == 1 { [INFO] [stdout] 268 + if Some(types[0].clone()).is_none() { [INFO] [stdout] 269 + return Some(Void); [INFO] [stdout] 270 + } [INFO] [stdout] 271 + let r: Option = Some(Object(Box::new(types[0].clone()))); [INFO] [stdout] 272 + *expr.typ.borrow_mut() = r.clone(); [INFO] [stdout] 273 + return r; [INFO] [stdout] 274 + } else { [INFO] [stdout] 275 + Some(Void) [INFO] [stdout] 276 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/checker.rs:592:38 [INFO] [stdout] | [INFO] [stdout] 592 | fn check_label(&mut self, declt: &Box) -> Dt { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&FunctionDeclaration` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:613:9 [INFO] [stdout] | [INFO] [stdout] 613 | return ft.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] 613 - return ft.clone(); [INFO] [stdout] 613 + ft.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/checker.rs:627:34 [INFO] [stdout] | [INFO] [stdout] 627 | fn check_if(&mut self, stat: &Box) -> Dt { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:256:37 [INFO] [stdout] | [INFO] [stdout] 256 | if !(types.contains(&dt)) { [INFO] [stdout] | ^^^ help: change this to: `dt` [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 which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:636:25 [INFO] [stdout] | [INFO] [stdout] 636 | &*stmt.test, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&stmt.test` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:291:21 [INFO] [stdout] | [INFO] [stdout] 291 | &*(decl.value), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&(decl.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:642:28 [INFO] [stdout] | [INFO] [stdout] 642 | self.error(&*stmt.test, &error.as_str()); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&stmt.test` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:642:41 [INFO] [stdout] | [INFO] [stdout] 642 | self.error(&*stmt.test, &error.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `error.as_str()` [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 `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/checker.rs:666:13 [INFO] [stdout] | [INFO] [stdout] 666 | / if let Function((params, rettype)) = ct { [INFO] [stdout] 667 | | let fplen = params.len(); [INFO] [stdout] 668 | | if &call.clone().args.len() != &fplen { [INFO] [stdout] 669 | | self.error( [INFO] [stdout] ... | [INFO] [stdout] 697 | | rt = Some(*rettype.1); [INFO] [stdout] 698 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/checker.rs:665:21 [INFO] [stdout] | [INFO] [stdout] 665 | if let Some(ct) = caller_t { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 666 | if let Function((params, rettype)) = ct { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/checker.rs:668:20 [INFO] [stdout] | [INFO] [stdout] 668 | if &call.clone().args.len() != &fplen { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 668 - if &call.clone().args.len() != &fplen { [INFO] [stdout] 668 + if call.clone().args.len() != fplen { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:307:30 [INFO] [stdout] | [INFO] [stdout] 307 | let assigne: &Expr = &*expr.assigne; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&expr.assigne` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:308:28 [INFO] [stdout] | [INFO] [stdout] 308 | let value: &Expr = &*expr.value; [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | &assigne, [INFO] [stdout] | ^^^^^^^^ help: change this to: `assigne` [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/checker.rs:685:46 [INFO] [stdout] | [INFO] [stdout] 685 | if !(at == *p || at.cast(&p).unwrap_or(_NOTYPE) == *p) { [INFO] [stdout] | ^^ help: change this to: `p` [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 which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:687:29 [INFO] [stdout] | [INFO] [stdout] 687 | ... &*arg, [INFO] [stdout] | ^^^^^ help: try: `&arg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:707:9 [INFO] [stdout] | [INFO] [stdout] 707 | return et; [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] 707 - return et; [INFO] [stdout] 707 + et [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:325:46 [INFO] [stdout] | [INFO] [stdout] 325 | Err(error) => self.error(&assigne, error.as_str()), [INFO] [stdout] | ^^^^^^^^ help: change this to: `assigne` [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: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:397:25 [INFO] [stdout] | [INFO] [stdout] 397 | return st; [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] 397 - return st; [INFO] [stdout] 397 + st [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:447:21 [INFO] [stdout] | [INFO] [stdout] 447 | return t; [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] 447 - return t; [INFO] [stdout] 447 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:487:29 [INFO] [stdout] | [INFO] [stdout] 487 | ... return t; [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] 487 - return t; [INFO] [stdout] 487 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:524:21 [INFO] [stdout] | [INFO] [stdout] 524 | return t; [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] 524 - return t; [INFO] [stdout] 524 + t [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:529:13 [INFO] [stdout] | [INFO] [stdout] 529 | return Some(Void); [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] 529 - return Some(Void); [INFO] [stdout] 529 + Some(Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:715:32 [INFO] [stdout] | [INFO] [stdout] 715 | ... self.error(&l, format!("Expected Text in assembly statments, but found {}.... %%g(please God forgive this developer, he's a i... [INFO] [stdout] | ^^ help: change this to: `l` [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/checker.rs:741:24 [INFO] [stdout] | [INFO] [stdout] 741 | self.check(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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 which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:348:29 [INFO] [stdout] | [INFO] [stdout] 348 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:357:29 [INFO] [stdout] | [INFO] [stdout] 357 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:810:9 [INFO] [stdout] | [INFO] [stdout] 810 | return Some(Void); [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] 810 - return Some(Void); [INFO] [stdout] 810 + Some(Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:770:44 [INFO] [stdout] | [INFO] [stdout] 770 | ... self.error(&*stmt.sequence, "The number of items doesn't correspond to the number of iterators"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&stmt.sequence` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:404:33 [INFO] [stdout] | [INFO] [stdout] 404 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:785:25 [INFO] [stdout] | [INFO] [stdout] 785 | &*stmt.sequence, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&stmt.sequence` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:413:33 [INFO] [stdout] | [INFO] [stdout] 413 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/checker.rs:786:25 [INFO] [stdout] | [INFO] [stdout] 786 | format!("Expected a iterable value like Text, Array or Tuple (syntax (a, b, c, ...))") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Expected a iterable value like Text, Array or Tuple (syntax (a, b, c, ...))".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: the loop variable `i` is used to index `valuet` [INFO] [stdout] --> src/checker.rs:794:18 [INFO] [stdout] | [INFO] [stdout] 794 | for i in 0..itemsl { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 794 - for i in 0..itemsl { [INFO] [stdout] 794 + for (i, ) in valuet.iter().enumerate().take(itemsl) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:801:24 [INFO] [stdout] | [INFO] [stdout] 801 | self.check(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:816:9 [INFO] [stdout] | [INFO] [stdout] 816 | / return match (lt.clone(), rt) { [INFO] [stdout] 817 | | (Some(Integer), Some(Integer)) => lt, [INFO] [stdout] 818 | | (Some(Text), Some(Text)) => lt, [INFO] [stdout] 819 | | (l, r) => { [INFO] [stdout] ... | [INFO] [stdout] 832 | | }; [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] 816 ~ match (lt.clone(), rt) { [INFO] [stdout] 817 + (Some(Integer), Some(Integer)) => lt, [INFO] [stdout] 818 + (Some(Text), Some(Text)) => lt, [INFO] [stdout] 819 + (l, r) => { [INFO] [stdout] 820 + self.error( [INFO] [stdout] 821 + &Expr::RangeExpr(Box::new(expr.clone())), [INFO] [stdout] 822 + format!( [INFO] [stdout] 823 + "Expected Integer or Text for range types, but found {}{}{}.", [INFO] [stdout] 824 + l.unwrap(), [INFO] [stdout] 825 + expr.range, [INFO] [stdout] 826 + r.unwrap() [INFO] [stdout] 827 + ) [INFO] [stdout] 828 + .as_str(), [INFO] [stdout] 829 + ); [INFO] [stdout] 830 + Some(Void) [INFO] [stdout] 831 + } [INFO] [stdout] 832 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:455:29 [INFO] [stdout] | [INFO] [stdout] 455 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:843:13 [INFO] [stdout] | [INFO] [stdout] 843 | return Some(Tuple(Box::new(types[0].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] 843 - return Some(Tuple(Box::new(types[0].clone()))); [INFO] [stdout] 843 + Some(Tuple(Box::new(types[0].clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:464:29 [INFO] [stdout] | [INFO] [stdout] 464 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:845:13 [INFO] [stdout] | [INFO] [stdout] 845 | / return Some(Tuple(Box::new(_Multitype( [INFO] [stdout] 846 | | types.iter().map(|e| Box::new(e.clone())).collect(), [INFO] [stdout] 847 | | )))); [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] 845 ~ Some(Tuple(Box::new(_Multitype( [INFO] [stdout] 846 + types.iter().map(|e| Box::new(e.clone())).collect(), [INFO] [stdout] 847 ~ )))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:503:37 [INFO] [stdout] | [INFO] [stdout] 503 | ... &*expr.left, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:510:37 [INFO] [stdout] | [INFO] [stdout] 510 | ... &*expr.right, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:516:40 [INFO] [stdout] | [INFO] [stdout] 516 | ... self.error(&*expr.left, err.as_str()); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&expr.left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:519:40 [INFO] [stdout] | [INFO] [stdout] 519 | ... self.error(&*expr.right, err.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&expr.right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/datatype.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | Function((Vec<(String, Option)>, (String, Box))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/datatype.rs:16:16 [INFO] [stdout] | [INFO] [stdout] 16 | _Multitype(Vec>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:544:13 [INFO] [stdout] | [INFO] [stdout] 544 | return Some(Array(Box::new(types[0].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] 544 - return Some(Array(Box::new(types[0].clone()))); [INFO] [stdout] 544 + Some(Array(Box::new(types[0].clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/checker.rs:554:34 [INFO] [stdout] | [INFO] [stdout] 554 | fn pushbody(&mut self, body: &mut Vec, name: String, rettype: Datatype) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 554 - fn pushbody(&mut self, body: &mut Vec, name: String, rettype: Datatype) { [INFO] [stdout] 554 + fn pushbody(&mut self, body: &mut [Stmt], name: String, rettype: Datatype) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/datatype.rs:70:20 [INFO] [stdout] | [INFO] [stdout] 70 | if params.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/checker.rs:592:38 [INFO] [stdout] | [INFO] [stdout] 592 | fn check_label(&mut self, declt: &Box) -> Dt { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&FunctionDeclaration` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:613:9 [INFO] [stdout] | [INFO] [stdout] 613 | return ft.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] 613 - return ft.clone(); [INFO] [stdout] 613 + ft.clone() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/datatype.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | i = i + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/checker.rs:627:34 [INFO] [stdout] | [INFO] [stdout] 627 | fn check_if(&mut self, stat: &Box) -> Dt { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/datatype.rs:89:17 [INFO] [stdout] | [INFO] [stdout] 89 | for t in types { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `for (i, t) in (1..).zip(types.iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/datatype.rs:107:25 [INFO] [stdout] | [INFO] [stdout] 107 | for t in ts2.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, t) in (1..).zip(ts2.clone().into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:636:25 [INFO] [stdout] | [INFO] [stdout] 636 | &*stmt.test, [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&stmt.test` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:642:28 [INFO] [stdout] | [INFO] [stdout] 642 | self.error(&*stmt.test, &error.as_str()); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&stmt.test` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:642:41 [INFO] [stdout] | [INFO] [stdout] 642 | self.error(&*stmt.test, &error.as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `error.as_str()` [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 `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/checker.rs:666:13 [INFO] [stdout] | [INFO] [stdout] 666 | / if let Function((params, rettype)) = ct { [INFO] [stdout] 667 | | let fplen = params.len(); [INFO] [stdout] 668 | | if &call.clone().args.len() != &fplen { [INFO] [stdout] 669 | | self.error( [INFO] [stdout] ... | [INFO] [stdout] 697 | | rt = Some(*rettype.1); [INFO] [stdout] 698 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/checker.rs:665:21 [INFO] [stdout] | [INFO] [stdout] 665 | if let Some(ct) = caller_t { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 666 | if let Function((params, rettype)) = ct { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/checker.rs:668:20 [INFO] [stdout] | [INFO] [stdout] 668 | if &call.clone().args.len() != &fplen { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 668 - if &call.clone().args.len() != &fplen { [INFO] [stdout] 668 + if call.clone().args.len() != fplen { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:685:46 [INFO] [stdout] | [INFO] [stdout] 685 | if !(at == *p || at.cast(&p).unwrap_or(_NOTYPE) == *p) { [INFO] [stdout] | ^^ help: change this to: `p` [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 which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:687:29 [INFO] [stdout] | [INFO] [stdout] 687 | ... &*arg, [INFO] [stdout] | ^^^^^ help: try: `&arg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:707:9 [INFO] [stdout] | [INFO] [stdout] 707 | return et; [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] 707 - return et; [INFO] [stdout] 707 + et [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: immediately dereferencing a reference [INFO] [stdout] --> src/datatype.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | (*&rettype).hash(state); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `rettype` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stdout] = note: `#[warn(clippy::deref_addrof)]` 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/checker.rs:715:32 [INFO] [stdout] | [INFO] [stdout] 715 | ... self.error(&l, format!("Expected Text in assembly statments, but found {}.... %%g(please God forgive this developer, he's a i... [INFO] [stdout] | ^^ help: change this to: `l` [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: useless use of `format!` [INFO] [stdout] --> src/datatype.rs:227:21 [INFO] [stdout] | [INFO] [stdout] 227 | Err(format!("Impossible to cast \"null values\" for void type.")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Impossible to cast \"null values\" for void type.".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/checker.rs:741:24 [INFO] [stdout] | [INFO] [stdout] 741 | self.check(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:810:9 [INFO] [stdout] | [INFO] [stdout] 810 | return Some(Void); [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] 810 - return Some(Void); [INFO] [stdout] 810 + Some(Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:770:44 [INFO] [stdout] | [INFO] [stdout] 770 | ... self.error(&*stmt.sequence, "The number of items doesn't correspond to the number of iterators"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&stmt.sequence` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/checker.rs:785:25 [INFO] [stdout] | [INFO] [stdout] 785 | &*stmt.sequence, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&stmt.sequence` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/checker.rs:786:25 [INFO] [stdout] | [INFO] [stdout] 786 | format!("Expected a iterable value like Text, Array or Tuple (syntax (a, b, c, ...))") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Expected a iterable value like Text, Array or Tuple (syntax (a, b, c, ...))".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: the loop variable `i` is used to index `valuet` [INFO] [stdout] --> src/checker.rs:794:18 [INFO] [stdout] | [INFO] [stdout] 794 | for i in 0..itemsl { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 794 - for i in 0..itemsl { [INFO] [stdout] 794 + for (i, ) in valuet.iter().enumerate().take(itemsl) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/checker.rs:801:24 [INFO] [stdout] | [INFO] [stdout] 801 | self.check(&s); [INFO] [stdout] | ^^ help: change this to: `s` [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: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:816:9 [INFO] [stdout] | [INFO] [stdout] 816 | / return match (lt.clone(), rt) { [INFO] [stdout] 817 | | (Some(Integer), Some(Integer)) => lt, [INFO] [stdout] 818 | | (Some(Text), Some(Text)) => lt, [INFO] [stdout] 819 | | (l, r) => { [INFO] [stdout] ... | [INFO] [stdout] 832 | | }; [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] 816 ~ match (lt.clone(), rt) { [INFO] [stdout] 817 + (Some(Integer), Some(Integer)) => lt, [INFO] [stdout] 818 + (Some(Text), Some(Text)) => lt, [INFO] [stdout] 819 + (l, r) => { [INFO] [stdout] 820 + self.error( [INFO] [stdout] 821 + &Expr::RangeExpr(Box::new(expr.clone())), [INFO] [stdout] 822 + format!( [INFO] [stdout] 823 + "Expected Integer or Text for range types, but found {}{}{}.", [INFO] [stdout] 824 + l.unwrap(), [INFO] [stdout] 825 + expr.range, [INFO] [stdout] 826 + r.unwrap() [INFO] [stdout] 827 + ) [INFO] [stdout] 828 + .as_str(), [INFO] [stdout] 829 + ); [INFO] [stdout] 830 + Some(Void) [INFO] [stdout] 831 + } [INFO] [stdout] 832 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:843:13 [INFO] [stdout] | [INFO] [stdout] 843 | return Some(Tuple(Box::new(types[0].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] 843 - return Some(Tuple(Box::new(types[0].clone()))); [INFO] [stdout] 843 + Some(Tuple(Box::new(types[0].clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/checker.rs:845:13 [INFO] [stdout] | [INFO] [stdout] 845 | / return Some(Tuple(Box::new(_Multitype( [INFO] [stdout] 846 | | types.iter().map(|e| Box::new(e.clone())).collect(), [INFO] [stdout] 847 | | )))); [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] 845 ~ Some(Tuple(Box::new(_Multitype( [INFO] [stdout] 846 + types.iter().map(|e| Box::new(e.clone())).collect(), [INFO] [stdout] 847 ~ )))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/datatype.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | Function((Vec<(String, Option)>, (String, Box))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/datatype.rs:16:16 [INFO] [stdout] | [INFO] [stdout] 16 | _Multitype(Vec>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lexer.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / self.code [INFO] [stdout] 274 | | .as_ref() [INFO] [stdout] 275 | | .map_or(true, |code| self.endindex + 1 >= code.len()) [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_none_or` instead [INFO] [stdout] | [INFO] [stdout] 275 - .map_or(true, |code| self.endindex + 1 >= code.len()) [INFO] [stdout] 275 + .is_none_or(|code| self.endindex + 1 >= code.len()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | return; [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] 281 - if self.ignoreable_chars.contains(&char) { [INFO] [stdout] 282 - return; [INFO] [stdout] 281 + if self.ignoreable_chars.contains(&char) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/lexer.rs:329:20 [INFO] [stdout] | [INFO] [stdout] 329 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `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: length comparison to zero [INFO] [stdout] --> src/datatype.rs:70:20 [INFO] [stdout] | [INFO] [stdout] 70 | if params.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.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: manual implementation of an assign operation [INFO] [stdout] --> src/datatype.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | i = i + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/datatype.rs:89:17 [INFO] [stdout] | [INFO] [stdout] 89 | for t in types { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `for (i, t) in (1..).zip(types.iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/datatype.rs:107:25 [INFO] [stdout] | [INFO] [stdout] 107 | for t in ts2.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, t) in (1..).zip(ts2.clone().into_iter())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:482:17 [INFO] [stdout] | [INFO] [stdout] 482 | / if num_str.chars().skip(2).any(|c| !matches!(c, '0' | '1')) { [INFO] [stdout] 483 | | self.error(format!("Invalid binary number: {}", num_str)); [INFO] [stdout] 484 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 481 ~ 2 [INFO] [stdout] 482 ~ if num_str.chars().skip(2).any(|c| !matches!(c, '0' | '1')) => { [INFO] [stdout] 483 | self.error(format!("Invalid binary number: {}", num_str)); [INFO] [stdout] 484 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:487:17 [INFO] [stdout] | [INFO] [stdout] 487 | / if num_str.chars().skip(2).any(|c| !matches!(c, '0'..='7')) { [INFO] [stdout] 488 | | self.error(format!("Invalid octal number: {}", num_str)); [INFO] [stdout] 489 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 486 ~ 8 [INFO] [stdout] 487 ~ if num_str.chars().skip(2).any(|c| !matches!(c, '0'..='7')) => { [INFO] [stdout] 488 | self.error(format!("Invalid octal number: {}", num_str)); [INFO] [stdout] 489 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | / if num_str [INFO] [stdout] 493 | | .chars() [INFO] [stdout] 494 | | .skip(2) [INFO] [stdout] 495 | | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 496 | | { [INFO] [stdout] 497 | | self.error(format!("Invalid hexadecimal number: {}", num_str)); [INFO] [stdout] 498 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 491 ~ 16 [INFO] [stdout] 492 | if num_str [INFO] [stdout] ... [INFO] [stdout] 495 | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 496 ~ => { [INFO] [stdout] 497 | self.error(format!("Invalid hexadecimal number: {}", num_str)); [INFO] [stdout] 498 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer.rs:495:31 [INFO] [stdout] | [INFO] [stdout] 495 | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 495 - .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 495 + .any(|c: char| !c.is_ascii_hexdigit()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: immediately dereferencing a reference [INFO] [stdout] --> src/datatype.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | (*&rettype).hash(state); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `rettype` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stdout] = note: `#[warn(clippy::deref_addrof)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/datatype.rs:227:21 [INFO] [stdout] | [INFO] [stdout] 227 | Err(format!("Impossible to cast \"null values\" for void type.")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Impossible to cast \"null values\" for void type.".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/parser.rs:138:29 [INFO] [stdout] | [INFO] [stdout] 138 | let token: &Token = &self.at(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `self.at()` [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/parser.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | let curtoken: &Token = &self.at(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `self.at()` [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: unneeded late initialization [INFO] [stdout] --> src/parser.rs:498:37 [INFO] [stdout] | [INFO] [stdout] 498 | ... let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 498 ~ [INFO] [stdout] 499 | [INFO] [stdout] 500 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 501 | TokenType::OBracket => { [INFO] [stdout] 502 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 503 | } [INFO] [stdout] 504 | TokenType::OBrace => { [INFO] [stdout] 505 ~ Box::new(self.parse_object_expr()) [INFO] [stdout] 506 | } [INFO] [stdout] 507 | _ => { [INFO] [stdout] 508 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 509 | } [INFO] [stdout] 510 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lexer.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | / self.code [INFO] [stdout] 274 | | .as_ref() [INFO] [stdout] 275 | | .map_or(true, |code| self.endindex + 1 >= code.len()) [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_none_or` instead [INFO] [stdout] | [INFO] [stdout] 275 - .map_or(true, |code| self.endindex + 1 >= code.len()) [INFO] [stdout] 275 + .is_none_or(|code| self.endindex + 1 >= code.len()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | return; [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] 281 - if self.ignoreable_chars.contains(&char) { [INFO] [stdout] 282 - return; [INFO] [stdout] 281 + if self.ignoreable_chars.contains(&char) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/lexer.rs:329:20 [INFO] [stdout] | [INFO] [stdout] 329 | if char.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `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/parser.rs:749:17 [INFO] [stdout] | [INFO] [stdout] 749 | / return Stmt { [INFO] [stdout] 750 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 751 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 752 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 773 | | lineno, [INFO] [stdout] 774 | | }; [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] 749 ~ Stmt { [INFO] [stdout] 750 + kind: NodeType::VarDeclaration, [INFO] [stdout] 751 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 752 + kind: NodeType::VarDeclaration, [INFO] [stdout] 753 + constant: false, [INFO] [stdout] 754 + data_size: "auto".to_string(), [INFO] [stdout] 755 + data_type, [INFO] [stdout] 756 + identifier: Some(identifier), [INFO] [stdout] 757 + value: Box::from(Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 758 + kind: NodeType::VoidLiteral, [INFO] [stdout] 759 + value: "()", [INFO] [stdout] 760 + typ: Some(Datatype::Void), [INFO] [stdout] 761 + column: self.at().column, [INFO] [stdout] 762 + position: self.at().position, [INFO] [stdout] 763 + lineno, [INFO] [stdout] 764 + })), [INFO] [stdout] 765 + inferred: false, [INFO] [stdout] 766 + column: column_val, [INFO] [stdout] 767 + position: position_val, [INFO] [stdout] 768 + lineno, [INFO] [stdout] 769 + })), [INFO] [stdout] 770 + return_stmt: None, [INFO] [stdout] 771 + column, [INFO] [stdout] 772 + position, [INFO] [stdout] 773 + lineno, [INFO] [stdout] 774 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:799:17 [INFO] [stdout] | [INFO] [stdout] 799 | / return Stmt { [INFO] [stdout] 800 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 801 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 802 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 816 | | lineno, [INFO] [stdout] 817 | | }; [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] 799 ~ Stmt { [INFO] [stdout] 800 + kind: NodeType::VarDeclaration, [INFO] [stdout] 801 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 802 + kind: NodeType::VarDeclaration, [INFO] [stdout] 803 + constant: false, [INFO] [stdout] 804 + data_size: "auto".to_string(), [INFO] [stdout] 805 + data_type, [INFO] [stdout] 806 + identifier: Some(identifier), [INFO] [stdout] 807 + value, [INFO] [stdout] 808 + inferred: false, [INFO] [stdout] 809 + column: column_val, [INFO] [stdout] 810 + position: position_val, [INFO] [stdout] 811 + lineno, [INFO] [stdout] 812 + })), [INFO] [stdout] 813 + return_stmt: None, [INFO] [stdout] 814 + column, [INFO] [stdout] 815 + position, [INFO] [stdout] 816 + lineno, [INFO] [stdout] 817 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:842:13 [INFO] [stdout] | [INFO] [stdout] 842 | / return Stmt { [INFO] [stdout] 843 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 844 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 845 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 859 | | lineno, [INFO] [stdout] 860 | | }; [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] 842 ~ Stmt { [INFO] [stdout] 843 + kind: NodeType::VarDeclaration, [INFO] [stdout] 844 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 845 + kind: NodeType::VarDeclaration, [INFO] [stdout] 846 + constant: false, [INFO] [stdout] 847 + data_size: "auto".to_string(), [INFO] [stdout] 848 + data_type: Datatype::Void, [INFO] [stdout] 849 + identifier: Some(identifier), [INFO] [stdout] 850 + value, [INFO] [stdout] 851 + inferred: true, [INFO] [stdout] 852 + column, [INFO] [stdout] 853 + position, [INFO] [stdout] 854 + lineno, [INFO] [stdout] 855 + })), [INFO] [stdout] 856 + return_stmt: None, [INFO] [stdout] 857 + column, [INFO] [stdout] 858 + position, [INFO] [stdout] 859 + lineno, [INFO] [stdout] 860 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:778:17 [INFO] [stdout] | [INFO] [stdout] 778 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 778 ~ [INFO] [stdout] 779 | [INFO] [stdout] 780 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 781 | TokenType::OBracket => { [INFO] [stdout] 782 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 783 | } [INFO] [stdout] 784 | [INFO] [stdout] 785 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 786 | _ => { [INFO] [stdout] 787 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 788 | } [INFO] [stdout] 789 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:822:13 [INFO] [stdout] | [INFO] [stdout] 822 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 822 ~ [INFO] [stdout] 823 | [INFO] [stdout] 824 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 825 | TokenType::OBracket => { [INFO] [stdout] 826 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 827 | } [INFO] [stdout] 828 | [INFO] [stdout] 829 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 830 | _ => { [INFO] [stdout] 831 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 832 | } [INFO] [stdout] 833 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:482:17 [INFO] [stdout] | [INFO] [stdout] 482 | / if num_str.chars().skip(2).any(|c| !matches!(c, '0' | '1')) { [INFO] [stdout] 483 | | self.error(format!("Invalid binary number: {}", num_str)); [INFO] [stdout] 484 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 481 ~ 2 [INFO] [stdout] 482 ~ if num_str.chars().skip(2).any(|c| !matches!(c, '0' | '1')) => { [INFO] [stdout] 483 | self.error(format!("Invalid binary number: {}", num_str)); [INFO] [stdout] 484 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:487:17 [INFO] [stdout] | [INFO] [stdout] 487 | / if num_str.chars().skip(2).any(|c| !matches!(c, '0'..='7')) { [INFO] [stdout] 488 | | self.error(format!("Invalid octal number: {}", num_str)); [INFO] [stdout] 489 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 486 ~ 8 [INFO] [stdout] 487 ~ if num_str.chars().skip(2).any(|c| !matches!(c, '0'..='7')) => { [INFO] [stdout] 488 | self.error(format!("Invalid octal number: {}", num_str)); [INFO] [stdout] 489 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:492:17 [INFO] [stdout] | [INFO] [stdout] 492 | / if num_str [INFO] [stdout] 493 | | .chars() [INFO] [stdout] 494 | | .skip(2) [INFO] [stdout] 495 | | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 496 | | { [INFO] [stdout] 497 | | self.error(format!("Invalid hexadecimal number: {}", num_str)); [INFO] [stdout] 498 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 491 ~ 16 [INFO] [stdout] 492 | if num_str [INFO] [stdout] ... [INFO] [stdout] 495 | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 496 ~ => { [INFO] [stdout] 497 | self.error(format!("Invalid hexadecimal number: {}", num_str)); [INFO] [stdout] 498 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer.rs:495:31 [INFO] [stdout] | [INFO] [stdout] 495 | .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 495 - .any(|c| !matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F')) [INFO] [stdout] 495 + .any(|c: char| !c.is_ascii_hexdigit()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:1179:38 [INFO] [stdout] | [INFO] [stdout] 1179 | fn parse_arguments(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:138:29 [INFO] [stdout] | [INFO] [stdout] 138 | let token: &Token = &self.at(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `self.at()` [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/parser.rs:177:32 [INFO] [stdout] | [INFO] [stdout] 177 | let curtoken: &Token = &self.at(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `self.at()` [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: unneeded late initialization [INFO] [stdout] --> src/parser.rs:498:37 [INFO] [stdout] | [INFO] [stdout] 498 | ... let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 498 ~ [INFO] [stdout] 499 | [INFO] [stdout] 500 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 501 | TokenType::OBracket => { [INFO] [stdout] 502 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 503 | } [INFO] [stdout] 504 | TokenType::OBrace => { [INFO] [stdout] 505 ~ Box::new(self.parse_object_expr()) [INFO] [stdout] 506 | } [INFO] [stdout] 507 | _ => { [INFO] [stdout] 508 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 509 | } [INFO] [stdout] 510 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/parser.rs:1777:5 [INFO] [stdout] | [INFO] [stdout] 1777 | / fn parse_var_declaration( [INFO] [stdout] 1778 | | &mut self, [INFO] [stdout] 1779 | | data_size: String, [INFO] [stdout] 1780 | | data_type: Datatype, [INFO] [stdout] ... | [INFO] [stdout] 1785 | | mut identifier: Option, [INFO] [stdout] 1786 | | ) -> Expr { [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:1797:13 [INFO] [stdout] | [INFO] [stdout] 1797 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 1797 ~ [INFO] [stdout] 1798 | [INFO] [stdout] 1799 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 1800 | TokenType::OBracket => { [INFO] [stdout] 1801 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 1802 | } [INFO] [stdout] 1803 | [INFO] [stdout] 1804 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 1805 | _ => { [INFO] [stdout] 1806 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 1807 | } [INFO] [stdout] 1808 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:1834:13 [INFO] [stdout] | [INFO] [stdout] 1834 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 1834 ~ [INFO] [stdout] 1835 | [INFO] [stdout] 1836 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 1837 | TokenType::OBracket => { [INFO] [stdout] 1838 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 1839 | } [INFO] [stdout] 1840 | [INFO] [stdout] 1841 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 1842 | _ => { [INFO] [stdout] 1843 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 1844 | } [INFO] [stdout] 1845 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:749:17 [INFO] [stdout] | [INFO] [stdout] 749 | / return Stmt { [INFO] [stdout] 750 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 751 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 752 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 773 | | lineno, [INFO] [stdout] 774 | | }; [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] 749 ~ Stmt { [INFO] [stdout] 750 + kind: NodeType::VarDeclaration, [INFO] [stdout] 751 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 752 + kind: NodeType::VarDeclaration, [INFO] [stdout] 753 + constant: false, [INFO] [stdout] 754 + data_size: "auto".to_string(), [INFO] [stdout] 755 + data_type, [INFO] [stdout] 756 + identifier: Some(identifier), [INFO] [stdout] 757 + value: Box::from(Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 758 + kind: NodeType::VoidLiteral, [INFO] [stdout] 759 + value: "()", [INFO] [stdout] 760 + typ: Some(Datatype::Void), [INFO] [stdout] 761 + column: self.at().column, [INFO] [stdout] 762 + position: self.at().position, [INFO] [stdout] 763 + lineno, [INFO] [stdout] 764 + })), [INFO] [stdout] 765 + inferred: false, [INFO] [stdout] 766 + column: column_val, [INFO] [stdout] 767 + position: position_val, [INFO] [stdout] 768 + lineno, [INFO] [stdout] 769 + })), [INFO] [stdout] 770 + return_stmt: None, [INFO] [stdout] 771 + column, [INFO] [stdout] 772 + position, [INFO] [stdout] 773 + lineno, [INFO] [stdout] 774 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:799:17 [INFO] [stdout] | [INFO] [stdout] 799 | / return Stmt { [INFO] [stdout] 800 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 801 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 802 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 816 | | lineno, [INFO] [stdout] 817 | | }; [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] 799 ~ Stmt { [INFO] [stdout] 800 + kind: NodeType::VarDeclaration, [INFO] [stdout] 801 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 802 + kind: NodeType::VarDeclaration, [INFO] [stdout] 803 + constant: false, [INFO] [stdout] 804 + data_size: "auto".to_string(), [INFO] [stdout] 805 + data_type, [INFO] [stdout] 806 + identifier: Some(identifier), [INFO] [stdout] 807 + value, [INFO] [stdout] 808 + inferred: false, [INFO] [stdout] 809 + column: column_val, [INFO] [stdout] 810 + position: position_val, [INFO] [stdout] 811 + lineno, [INFO] [stdout] 812 + })), [INFO] [stdout] 813 + return_stmt: None, [INFO] [stdout] 814 + column, [INFO] [stdout] 815 + position, [INFO] [stdout] 816 + lineno, [INFO] [stdout] 817 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:842:13 [INFO] [stdout] | [INFO] [stdout] 842 | / return Stmt { [INFO] [stdout] 843 | | kind: NodeType::VarDeclaration, [INFO] [stdout] 844 | | expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 845 | | kind: NodeType::VarDeclaration, [INFO] [stdout] ... | [INFO] [stdout] 859 | | lineno, [INFO] [stdout] 860 | | }; [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] 842 ~ Stmt { [INFO] [stdout] 843 + kind: NodeType::VarDeclaration, [INFO] [stdout] 844 + expr: Some(Expr::VarDeclaration(VarDeclaration { [INFO] [stdout] 845 + kind: NodeType::VarDeclaration, [INFO] [stdout] 846 + constant: false, [INFO] [stdout] 847 + data_size: "auto".to_string(), [INFO] [stdout] 848 + data_type: Datatype::Void, [INFO] [stdout] 849 + identifier: Some(identifier), [INFO] [stdout] 850 + value, [INFO] [stdout] 851 + inferred: true, [INFO] [stdout] 852 + column, [INFO] [stdout] 853 + position, [INFO] [stdout] 854 + lineno, [INFO] [stdout] 855 + })), [INFO] [stdout] 856 + return_stmt: None, [INFO] [stdout] 857 + column, [INFO] [stdout] 858 + position, [INFO] [stdout] 859 + lineno, [INFO] [stdout] 860 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:778:17 [INFO] [stdout] | [INFO] [stdout] 778 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 778 ~ [INFO] [stdout] 779 | [INFO] [stdout] 780 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 781 | TokenType::OBracket => { [INFO] [stdout] 782 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 783 | } [INFO] [stdout] 784 | [INFO] [stdout] 785 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 786 | _ => { [INFO] [stdout] 787 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 788 | } [INFO] [stdout] 789 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:822:13 [INFO] [stdout] | [INFO] [stdout] 822 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 822 ~ [INFO] [stdout] 823 | [INFO] [stdout] 824 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 825 | TokenType::OBracket => { [INFO] [stdout] 826 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 827 | } [INFO] [stdout] 828 | [INFO] [stdout] 829 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 830 | _ => { [INFO] [stdout] 831 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 832 | } [INFO] [stdout] 833 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:2473:33 [INFO] [stdout] | [INFO] [stdout] 2473 | fn parse_args(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:2484:43 [INFO] [stdout] | [INFO] [stdout] 2484 | fn parse_arguments_list(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:1179:38 [INFO] [stdout] | [INFO] [stdout] 1179 | fn parse_arguments(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2546:17 [INFO] [stdout] | [INFO] [stdout] 2546 | / return Expr::Identifier(Identifier { [INFO] [stdout] 2547 | | kind: NodeType::Identifier, [INFO] [stdout] 2548 | | symbol: self.eat().value, [INFO] [stdout] 2549 | | typ: RefCell::new(None), [INFO] [stdout] ... | [INFO] [stdout] 2552 | | lineno, [INFO] [stdout] 2553 | | }); [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] 2546 ~ Expr::Identifier(Identifier { [INFO] [stdout] 2547 + kind: NodeType::Identifier, [INFO] [stdout] 2548 + symbol: self.eat().value, [INFO] [stdout] 2549 + typ: RefCell::new(None), [INFO] [stdout] 2550 + column, [INFO] [stdout] 2551 + position, [INFO] [stdout] 2552 + lineno, [INFO] [stdout] 2553 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2560:17 [INFO] [stdout] | [INFO] [stdout] 2560 | / return Expr::NumericLiteral(NumericLiteral { [INFO] [stdout] 2561 | | kind: NodeType::NumericLiteral, [INFO] [stdout] 2562 | | value: self.eat().value, [INFO] [stdout] 2563 | | typ: Some(Datatype::Integer), [INFO] [stdout] ... | [INFO] [stdout] 2566 | | lineno, [INFO] [stdout] 2567 | | }); [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] 2560 ~ Expr::NumericLiteral(NumericLiteral { [INFO] [stdout] 2561 + kind: NodeType::NumericLiteral, [INFO] [stdout] 2562 + value: self.eat().value, [INFO] [stdout] 2563 + typ: Some(Datatype::Integer), [INFO] [stdout] 2564 + column, [INFO] [stdout] 2565 + position, [INFO] [stdout] 2566 + lineno, [INFO] [stdout] 2567 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2574:17 [INFO] [stdout] | [INFO] [stdout] 2574 | / return Expr::StringLiteral(StringLiteral { [INFO] [stdout] 2575 | | kind: NodeType::StringLiteral, [INFO] [stdout] 2576 | | value: self.eat().value, [INFO] [stdout] 2577 | | typ: Some(Datatype::Text), [INFO] [stdout] ... | [INFO] [stdout] 2580 | | lineno, [INFO] [stdout] 2581 | | }); [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] 2574 ~ Expr::StringLiteral(StringLiteral { [INFO] [stdout] 2575 + kind: NodeType::StringLiteral, [INFO] [stdout] 2576 + value: self.eat().value, [INFO] [stdout] 2577 + typ: Some(Datatype::Text), [INFO] [stdout] 2578 + column, [INFO] [stdout] 2579 + position, [INFO] [stdout] 2580 + lineno, [INFO] [stdout] 2581 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2589:17 [INFO] [stdout] | [INFO] [stdout] 2589 | / return Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2590 | | kind: NodeType::VoidLiteral, [INFO] [stdout] 2591 | | value: "()", [INFO] [stdout] 2592 | | typ: Some(Datatype::_NOTYPE), [INFO] [stdout] ... | [INFO] [stdout] 2595 | | lineno, [INFO] [stdout] 2596 | | }); [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] 2589 ~ Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2590 + kind: NodeType::VoidLiteral, [INFO] [stdout] 2591 + value: "()", [INFO] [stdout] 2592 + typ: Some(Datatype::_NOTYPE), [INFO] [stdout] 2593 + column, [INFO] [stdout] 2594 + position, [INFO] [stdout] 2595 + lineno, [INFO] [stdout] 2596 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2604:17 [INFO] [stdout] | [INFO] [stdout] 2604 | / return Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2605 | | kind: NodeType::BooleanLiteral, [INFO] [stdout] 2606 | | value: "true".to_string(), [INFO] [stdout] 2607 | | typ: Some(Datatype::Boolean), [INFO] [stdout] ... | [INFO] [stdout] 2610 | | lineno, [INFO] [stdout] 2611 | | }); [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] 2604 ~ Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2605 + kind: NodeType::BooleanLiteral, [INFO] [stdout] 2606 + value: "true".to_string(), [INFO] [stdout] 2607 + typ: Some(Datatype::Boolean), [INFO] [stdout] 2608 + column, [INFO] [stdout] 2609 + position, [INFO] [stdout] 2610 + lineno, [INFO] [stdout] 2611 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2619:17 [INFO] [stdout] | [INFO] [stdout] 2619 | / return Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2620 | | kind: NodeType::BooleanLiteral, [INFO] [stdout] 2621 | | value: "false".to_string(), [INFO] [stdout] 2622 | | typ: Some(Datatype::Boolean), [INFO] [stdout] ... | [INFO] [stdout] 2625 | | lineno, [INFO] [stdout] 2626 | | }); [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] 2619 ~ Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2620 + kind: NodeType::BooleanLiteral, [INFO] [stdout] 2621 + value: "false".to_string(), [INFO] [stdout] 2622 + typ: Some(Datatype::Boolean), [INFO] [stdout] 2623 + column, [INFO] [stdout] 2624 + position, [INFO] [stdout] 2625 + lineno, [INFO] [stdout] 2626 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2637:17 [INFO] [stdout] | [INFO] [stdout] 2637 | / return Expr::ContinueExpr(ContinueExpr { [INFO] [stdout] 2638 | | kind: NodeType::ContinueExpr, [INFO] [stdout] 2639 | | column, [INFO] [stdout] 2640 | | position, [INFO] [stdout] 2641 | | lineno, [INFO] [stdout] 2642 | | }); [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] 2637 ~ Expr::ContinueExpr(ContinueExpr { [INFO] [stdout] 2638 + kind: NodeType::ContinueExpr, [INFO] [stdout] 2639 + column, [INFO] [stdout] 2640 + position, [INFO] [stdout] 2641 + lineno, [INFO] [stdout] 2642 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2652:17 [INFO] [stdout] | [INFO] [stdout] 2652 | / return Expr::BreakExpr(BreakExpr { [INFO] [stdout] 2653 | | kind: NodeType::BreakExpr, [INFO] [stdout] 2654 | | column, [INFO] [stdout] 2655 | | position, [INFO] [stdout] 2656 | | lineno, [INFO] [stdout] 2657 | | }); [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] 2652 ~ Expr::BreakExpr(BreakExpr { [INFO] [stdout] 2653 + kind: NodeType::BreakExpr, [INFO] [stdout] 2654 + column, [INFO] [stdout] 2655 + position, [INFO] [stdout] 2656 + lineno, [INFO] [stdout] 2657 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2666:17 [INFO] [stdout] | [INFO] [stdout] 2666 | / return Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2667 | | kind: NodeType::VoidLiteral, [INFO] [stdout] 2668 | | value: "()", [INFO] [stdout] 2669 | | typ: Some(Datatype::_NOTYPE), [INFO] [stdout] ... | [INFO] [stdout] 2672 | | lineno, [INFO] [stdout] 2673 | | }); [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] 2666 ~ Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2667 + kind: NodeType::VoidLiteral, [INFO] [stdout] 2668 + value: "()", [INFO] [stdout] 2669 + typ: Some(Datatype::_NOTYPE), [INFO] [stdout] 2670 + column, [INFO] [stdout] 2671 + position, [INFO] [stdout] 2672 + lineno, [INFO] [stdout] 2673 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:81:40 [INFO] [stdout] | [INFO] [stdout] 81 | fs::read_to_string(&full_path).expect(&format!("Could not read file: {}", filename)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Could not read file: {}", filename))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/parser.rs:1777:5 [INFO] [stdout] | [INFO] [stdout] 1777 | / fn parse_var_declaration( [INFO] [stdout] 1778 | | &mut self, [INFO] [stdout] 1779 | | data_size: String, [INFO] [stdout] 1780 | | data_type: Datatype, [INFO] [stdout] ... | [INFO] [stdout] 1785 | | mut identifier: Option, [INFO] [stdout] 1786 | | ) -> Expr { [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:1797:13 [INFO] [stdout] | [INFO] [stdout] 1797 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 1797 ~ [INFO] [stdout] 1798 | [INFO] [stdout] 1799 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 1800 | TokenType::OBracket => { [INFO] [stdout] 1801 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 1802 | } [INFO] [stdout] 1803 | [INFO] [stdout] 1804 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 1805 | _ => { [INFO] [stdout] 1806 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 1807 | } [INFO] [stdout] 1808 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:1834:13 [INFO] [stdout] | [INFO] [stdout] 1834 | let value: Box; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `value` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 1834 ~ [INFO] [stdout] 1835 | [INFO] [stdout] 1836 ~ let value: Box = match self.at().token_type { [INFO] [stdout] 1837 | TokenType::OBracket => { [INFO] [stdout] 1838 ~ Box::new(self.parse_array_expr()) [INFO] [stdout] 1839 | } [INFO] [stdout] 1840 | [INFO] [stdout] 1841 ~ TokenType::OBrace => Box::new(self.parse_object_expr()), [INFO] [stdout] 1842 | _ => { [INFO] [stdout] 1843 ~ Box::new(*self.parse_ternary_expr()) [INFO] [stdout] 1844 | } [INFO] [stdout] 1845 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/compiler.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler<'a> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lexer.rs:241:26 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn new(filename: &String) -> Lexer { [INFO] [stdout] | ^^^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 241 | pub fn new(filename: &String) -> Lexer<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:2473:33 [INFO] [stdout] | [INFO] [stdout] 2473 | fn parse_args(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/parser.rs:2484:43 [INFO] [stdout] | [INFO] [stdout] 2484 | fn parse_arguments_list(&mut self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2546:17 [INFO] [stdout] | [INFO] [stdout] 2546 | / return Expr::Identifier(Identifier { [INFO] [stdout] 2547 | | kind: NodeType::Identifier, [INFO] [stdout] 2548 | | symbol: self.eat().value, [INFO] [stdout] 2549 | | typ: RefCell::new(None), [INFO] [stdout] ... | [INFO] [stdout] 2552 | | lineno, [INFO] [stdout] 2553 | | }); [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] 2546 ~ Expr::Identifier(Identifier { [INFO] [stdout] 2547 + kind: NodeType::Identifier, [INFO] [stdout] 2548 + symbol: self.eat().value, [INFO] [stdout] 2549 + typ: RefCell::new(None), [INFO] [stdout] 2550 + column, [INFO] [stdout] 2551 + position, [INFO] [stdout] 2552 + lineno, [INFO] [stdout] 2553 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2560:17 [INFO] [stdout] | [INFO] [stdout] 2560 | / return Expr::NumericLiteral(NumericLiteral { [INFO] [stdout] 2561 | | kind: NodeType::NumericLiteral, [INFO] [stdout] 2562 | | value: self.eat().value, [INFO] [stdout] 2563 | | typ: Some(Datatype::Integer), [INFO] [stdout] ... | [INFO] [stdout] 2566 | | lineno, [INFO] [stdout] 2567 | | }); [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] 2560 ~ Expr::NumericLiteral(NumericLiteral { [INFO] [stdout] 2561 + kind: NodeType::NumericLiteral, [INFO] [stdout] 2562 + value: self.eat().value, [INFO] [stdout] 2563 + typ: Some(Datatype::Integer), [INFO] [stdout] 2564 + column, [INFO] [stdout] 2565 + position, [INFO] [stdout] 2566 + lineno, [INFO] [stdout] 2567 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2574:17 [INFO] [stdout] | [INFO] [stdout] 2574 | / return Expr::StringLiteral(StringLiteral { [INFO] [stdout] 2575 | | kind: NodeType::StringLiteral, [INFO] [stdout] 2576 | | value: self.eat().value, [INFO] [stdout] 2577 | | typ: Some(Datatype::Text), [INFO] [stdout] ... | [INFO] [stdout] 2580 | | lineno, [INFO] [stdout] 2581 | | }); [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] 2574 ~ Expr::StringLiteral(StringLiteral { [INFO] [stdout] 2575 + kind: NodeType::StringLiteral, [INFO] [stdout] 2576 + value: self.eat().value, [INFO] [stdout] 2577 + typ: Some(Datatype::Text), [INFO] [stdout] 2578 + column, [INFO] [stdout] 2579 + position, [INFO] [stdout] 2580 + lineno, [INFO] [stdout] 2581 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2589:17 [INFO] [stdout] | [INFO] [stdout] 2589 | / return Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2590 | | kind: NodeType::VoidLiteral, [INFO] [stdout] 2591 | | value: "()", [INFO] [stdout] 2592 | | typ: Some(Datatype::_NOTYPE), [INFO] [stdout] ... | [INFO] [stdout] 2595 | | lineno, [INFO] [stdout] 2596 | | }); [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] 2589 ~ Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2590 + kind: NodeType::VoidLiteral, [INFO] [stdout] 2591 + value: "()", [INFO] [stdout] 2592 + typ: Some(Datatype::_NOTYPE), [INFO] [stdout] 2593 + column, [INFO] [stdout] 2594 + position, [INFO] [stdout] 2595 + lineno, [INFO] [stdout] 2596 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2604:17 [INFO] [stdout] | [INFO] [stdout] 2604 | / return Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2605 | | kind: NodeType::BooleanLiteral, [INFO] [stdout] 2606 | | value: "true".to_string(), [INFO] [stdout] 2607 | | typ: Some(Datatype::Boolean), [INFO] [stdout] ... | [INFO] [stdout] 2610 | | lineno, [INFO] [stdout] 2611 | | }); [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] 2604 ~ Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2605 + kind: NodeType::BooleanLiteral, [INFO] [stdout] 2606 + value: "true".to_string(), [INFO] [stdout] 2607 + typ: Some(Datatype::Boolean), [INFO] [stdout] 2608 + column, [INFO] [stdout] 2609 + position, [INFO] [stdout] 2610 + lineno, [INFO] [stdout] 2611 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2619:17 [INFO] [stdout] | [INFO] [stdout] 2619 | / return Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2620 | | kind: NodeType::BooleanLiteral, [INFO] [stdout] 2621 | | value: "false".to_string(), [INFO] [stdout] 2622 | | typ: Some(Datatype::Boolean), [INFO] [stdout] ... | [INFO] [stdout] 2625 | | lineno, [INFO] [stdout] 2626 | | }); [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] 2619 ~ Expr::BooleanLiteral(BooleanLiteral { [INFO] [stdout] 2620 + kind: NodeType::BooleanLiteral, [INFO] [stdout] 2621 + value: "false".to_string(), [INFO] [stdout] 2622 + typ: Some(Datatype::Boolean), [INFO] [stdout] 2623 + column, [INFO] [stdout] 2624 + position, [INFO] [stdout] 2625 + lineno, [INFO] [stdout] 2626 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2637:17 [INFO] [stdout] | [INFO] [stdout] 2637 | / return Expr::ContinueExpr(ContinueExpr { [INFO] [stdout] 2638 | | kind: NodeType::ContinueExpr, [INFO] [stdout] 2639 | | column, [INFO] [stdout] 2640 | | position, [INFO] [stdout] 2641 | | lineno, [INFO] [stdout] 2642 | | }); [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] 2637 ~ Expr::ContinueExpr(ContinueExpr { [INFO] [stdout] 2638 + kind: NodeType::ContinueExpr, [INFO] [stdout] 2639 + column, [INFO] [stdout] 2640 + position, [INFO] [stdout] 2641 + lineno, [INFO] [stdout] 2642 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2652:17 [INFO] [stdout] | [INFO] [stdout] 2652 | / return Expr::BreakExpr(BreakExpr { [INFO] [stdout] 2653 | | kind: NodeType::BreakExpr, [INFO] [stdout] 2654 | | column, [INFO] [stdout] 2655 | | position, [INFO] [stdout] 2656 | | lineno, [INFO] [stdout] 2657 | | }); [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] 2652 ~ Expr::BreakExpr(BreakExpr { [INFO] [stdout] 2653 + kind: NodeType::BreakExpr, [INFO] [stdout] 2654 + column, [INFO] [stdout] 2655 + position, [INFO] [stdout] 2656 + lineno, [INFO] [stdout] 2657 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:2666:17 [INFO] [stdout] | [INFO] [stdout] 2666 | / return Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2667 | | kind: NodeType::VoidLiteral, [INFO] [stdout] 2668 | | value: "()", [INFO] [stdout] 2669 | | typ: Some(Datatype::_NOTYPE), [INFO] [stdout] ... | [INFO] [stdout] 2672 | | lineno, [INFO] [stdout] 2673 | | }); [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] 2666 ~ Expr::VoidLiteral(VoidLiteral { [INFO] [stdout] 2667 + kind: NodeType::VoidLiteral, [INFO] [stdout] 2668 + value: "()", [INFO] [stdout] 2669 + typ: Some(Datatype::_NOTYPE), [INFO] [stdout] 2670 + column, [INFO] [stdout] 2671 + position, [INFO] [stdout] 2672 + lineno, [INFO] [stdout] 2673 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/main.rs:81:40 [INFO] [stdout] | [INFO] [stdout] 81 | fs::read_to_string(&full_path).expect(&format!("Could not read file: {}", filename)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Could not read file: {}", filename))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.22s [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> src/compiler.rs:9:70 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler { [INFO] [stdout] | -- the lifetime is named here ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(filename: &'a String, output_file: Option) -> Compiler<'a> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/lexer.rs:241:26 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn new(filename: &String) -> Lexer { [INFO] [stdout] | ^^^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 241 | pub fn new(filename: &String) -> Lexer<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "e790646c0d21f48872776162cd39986674fdaa4c9297a65d83a9bdbc877a7a40", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e790646c0d21f48872776162cd39986674fdaa4c9297a65d83a9bdbc877a7a40", kill_on_drop: false }` [INFO] [stdout] e790646c0d21f48872776162cd39986674fdaa4c9297a65d83a9bdbc877a7a40