[INFO] cloning repository https://github.com/brianmacdonald/lodestone [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/brianmacdonald/lodestone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrianmacdonald%2Flodestone", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrianmacdonald%2Flodestone'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 94e2a10695d072fc561a8d36421a31eff05552c1 [INFO] checking brianmacdonald/lodestone/94e2a10695d072fc561a8d36421a31eff05552c1 against master#ab869e094a907cc5d19b4080f22eccaf347f1f95 for pr-129604 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbrianmacdonald%2Flodestone" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/brianmacdonald/lodestone on toolchain ab869e094a907cc5d19b4080f22eccaf347f1f95 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/brianmacdonald/lodestone [INFO] finished tweaking git repo https://github.com/brianmacdonald/lodestone [INFO] tweaked toml for git repo https://github.com/brianmacdonald/lodestone written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/brianmacdonald/lodestone 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" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2f7fdef29dc5db61a62f5d9f3e7abd656af37f1342558ae5f7165d20f5d7c9b1 [INFO] running `Command { std: "docker" "start" "-a" "2f7fdef29dc5db61a62f5d9f3e7abd656af37f1342558ae5f7165d20f5d7c9b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2f7fdef29dc5db61a62f5d9f3e7abd656af37f1342558ae5f7165d20f5d7c9b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2f7fdef29dc5db61a62f5d9f3e7abd656af37f1342558ae5f7165d20f5d7c9b1", kill_on_drop: false }` [INFO] [stdout] 2f7fdef29dc5db61a62f5d9f3e7abd656af37f1342558ae5f7165d20f5d7c9b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+ab869e094a907cc5d19b4080f22eccaf347f1f95" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0b128eae2410f3a99d957507415b299ef724d5758f9e49386f37a51cc70eca96 [INFO] running `Command { std: "docker" "start" "-a" "0b128eae2410f3a99d957507415b299ef724d5758f9e49386f37a51cc70eca96", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] [stderr] Checking lodestone v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/parser.rs:97:64 [INFO] [stdout] | [INFO] [stdout] 97 | return self.parse_infix_expression(expression);; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/parser.rs:100:64 [INFO] [stdout] | [INFO] [stdout] 100 | return self.parse_infix_expression(expression);; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ast::NodeKind` [INFO] [stdout] --> src/object.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::ast::NodeKind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/ast.rs:304:30 [INFO] [stdout] | [INFO] [stdout] 304 | pub fn as_any(&self) -> &Any { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 304 | pub fn as_any(&self) -> &dyn Any { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/parser.rs:97:64 [INFO] [stdout] | [INFO] [stdout] 97 | return self.parse_infix_expression(expression);; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/parser.rs:100:64 [INFO] [stdout] | [INFO] [stdout] 100 | return self.parse_infix_expression(expression);; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ast::NodeKind` [INFO] [stdout] --> src/object.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::ast::NodeKind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/evaluator.rs:499:5 [INFO] [stdout] | [INFO] [stdout] 483 | / match left { [INFO] [stdout] 484 | | ObjectKind::StringObj{value: l_value, ..} => { [INFO] [stdout] 485 | | match right { [INFO] [stdout] 486 | | ObjectKind::StringObj{value: r_value, ..} => { [INFO] [stdout] ... | [INFO] [stdout] 497 | | } [INFO] [stdout] 498 | | } [INFO] [stdout] | |_____- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 499 | panic!("Non-valid string input."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/repl.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | let mut program = p.parse_program(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/ast.rs:304:30 [INFO] [stdout] | [INFO] [stdout] 304 | pub fn as_any(&self) -> &Any { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 304 | pub fn as_any(&self) -> &dyn Any { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ast.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ast.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 29 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stdout] | ---------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 32 | NodeKind::StatementNode{statementKind} => { [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 35 | NodeKind::ProgramNode{statements} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 42 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:68:47 [INFO] [stdout] | [INFO] [stdout] 68 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/ast.rs:71:53 [INFO] [stdout] | [INFO] [stdout] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `right` [INFO] [stdout] --> src/ast.rs:71:63 [INFO] [stdout] | [INFO] [stdout] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `left` [INFO] [stdout] --> src/ast.rs:74:52 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/ast.rs:74:58 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `right` [INFO] [stdout] --> src/ast.rs:74:68 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `condition` [INFO] [stdout] --> src/ast.rs:77:49 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `consequence` [INFO] [stdout] --> src/ast.rs:77:60 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `alternative` [INFO] [stdout] --> src/ast.rs:77:73 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `alternative: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:80:54 [INFO] [stdout] | [INFO] [stdout] 80 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/ast.rs:83:52 [INFO] [stdout] | [INFO] [stdout] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/ast.rs:83:64 [INFO] [stdout] | [INFO] [stdout] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `function` [INFO] [stdout] --> src/ast.rs:86:51 [INFO] [stdout] | [INFO] [stdout] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `function: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arguments` [INFO] [stdout] --> src/ast.rs:86:61 [INFO] [stdout] | [INFO] [stdout] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:89:50 [INFO] [stdout] | [INFO] [stdout] 89 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:92:51 [INFO] [stdout] | [INFO] [stdout] 92 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `condition` [INFO] [stdout] --> src/ast.rs:95:49 [INFO] [stdout] | [INFO] [stdout] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `consequence` [INFO] [stdout] --> src/ast.rs:95:60 [INFO] [stdout] | [INFO] [stdout] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `elements` [INFO] [stdout] --> src/ast.rs:98:49 [INFO] [stdout] | [INFO] [stdout] 98 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `elements: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `left` [INFO] [stdout] --> src/ast.rs:101:52 [INFO] [stdout] | [INFO] [stdout] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/ast.rs:101:58 [INFO] [stdout] | [INFO] [stdout] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `index: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:108:40 [INFO] [stdout] | [INFO] [stdout] 108 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:111:46 [INFO] [stdout] | [INFO] [stdout] 111 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:123:45 [INFO] [stdout] | [INFO] [stdout] 123 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:143:54 [INFO] [stdout] | [INFO] [stdout] 143 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:146:42 [INFO] [stdout] | [INFO] [stdout] 146 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:196:43 [INFO] [stdout] | [INFO] [stdout] 196 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:199:51 [INFO] [stdout] | [INFO] [stdout] 199 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:211:42 [INFO] [stdout] | [INFO] [stdout] 211 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:223:45 [INFO] [stdout] | [INFO] [stdout] 223 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:284:48 [INFO] [stdout] | [INFO] [stdout] 284 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:294:43 [INFO] [stdout] | [INFO] [stdout] 294 | StatementKind::BlockStatement{token, statements} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/evaluator.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/evaluator.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 12 | NodeKind::ProgramNode{statements} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 15 | NodeKind::StatementNode{statementKind} => { [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 72 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stdout] | ---------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 164 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/evaluator.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/evaluator.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stdout] | ----------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stdout] | -------------------------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ----------------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 64 | StatementKind::BlockStatement{..} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 67 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:17:45 [INFO] [stdout] | [INFO] [stdout] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:27:68 [INFO] [stdout] | [INFO] [stdout] 27 | ... ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:54:52 [INFO] [stdout] | [INFO] [stdout] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:77:50 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:121:51 [INFO] [stdout] | [INFO] [stdout] 121 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:127:49 [INFO] [stdout] | [INFO] [stdout] 127 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:156:48 [INFO] [stdout] | [INFO] [stdout] 156 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `slots` [INFO] [stdout] --> src/evaluator.rs:303:29 [INFO] [stdout] | [INFO] [stdout] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `slots: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/evaluator.rs:303:36 [INFO] [stdout] | [INFO] [stdout] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lslots` [INFO] [stdout] --> src/evaluator.rs:316:36 [INFO] [stdout] | [INFO] [stdout] 316 | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_lslots` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rslots` [INFO] [stdout] --> src/evaluator.rs:318:44 [INFO] [stdout] | [INFO] [stdout] 318 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rslots` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/evaluator.rs:499:5 [INFO] [stdout] | [INFO] [stdout] 483 | / match left { [INFO] [stdout] 484 | | ObjectKind::StringObj{value: l_value, ..} => { [INFO] [stdout] 485 | | match right { [INFO] [stdout] 486 | | ObjectKind::StringObj{value: r_value, ..} => { [INFO] [stdout] ... | [INFO] [stdout] 497 | | } [INFO] [stdout] 498 | | } [INFO] [stdout] | |_____- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 499 | panic!("Non-valid string input."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:360:38 [INFO] [stdout] | [INFO] [stdout] 360 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:400:36 [INFO] [stdout] | [INFO] [stdout] 400 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:449:40 [INFO] [stdout] | [INFO] [stdout] 449 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peek_token` [INFO] [stdout] --> src/parser.rs:281:13 [INFO] [stdout] | [INFO] [stdout] 281 | let peek_token = self.peek_token.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peek_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | let mut prefix = self.prefix_parse_call(cur_token.clone()); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/repl.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | let mut program = p.parse_program(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `token_literal` and `string` are never used [INFO] [stdout] --> src/ast.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl NodeKind { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 13 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | fn string(self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `WhileLiteral` is never constructed [INFO] [stdout] --> src/ast.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub enum ExpressionKind { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 60 | WhileLiteral{token: token::Token, condition: Box, consequence: Box}, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExpressionKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `token_literal` and `string` are never used [INFO] [stdout] --> src/ast.rs:66:8 [INFO] [stdout] | [INFO] [stdout] 65 | impl ExpressionKind { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 66 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | fn string(self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `token_literal`, `string`, and `as_any` are never used [INFO] [stdout] --> src/ast.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 249 | impl StatementKind { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 250 | [INFO] [stdout] 251 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 255 | fn string(self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn as_any(&self) -> &Any { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove` is never used [INFO] [stdout] --> src/environment.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl Environment { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn remove(&mut self, key: String) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_call_arguments` and `prase_index_expression` are never used [INFO] [stdout] --> src/parser.rs:485:8 [INFO] [stdout] | [INFO] [stdout] 26 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 485 | fn parse_call_arguments(&mut self) -> Option>>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | fn prase_index_expression(&mut self, left: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `slots` is never read [INFO] [stdout] --> src/object.rs:18:14 [INFO] [stdout] | [INFO] [stdout] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stdout] | -------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `slots` is never read [INFO] [stdout] --> src/object.rs:19:15 [INFO] [stdout] | [INFO] [stdout] 19 | StringObj{slots: HashMap, value: String}, [INFO] [stdout] | --------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `BuiltIn` and `Array` are never constructed [INFO] [stdout] --> src/object.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ObjectKind { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | BuiltIn, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 21 | Array{slots: HashMap, elements: Vec} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_from_slots`, `remove_from_slots`, and `add_to_slots` are never used [INFO] [stdout] --> src/object.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 24 | impl ObjectKind { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | fn get_from_slots(self, key: String) -> ObjectKind { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | fn remove_from_slots(&mut self, key: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | fn add_to_slots(&mut self, key: String, value: ObjectKind) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `expressionKind` should have a snake case name [INFO] [stdout] --> src/ast.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | ExpressionNode{expressionKind: ExpressionKind}, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `expression_kind` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `statementKind` should have a snake case name [INFO] [stdout] --> src/ast.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | StatementNode{statementKind: StatementKind}, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `statement_kind` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `argsVec` should have a snake case name [INFO] [stdout] --> src/ast.rs:187:25 [INFO] [stdout] | [INFO] [stdout] 187 | let mut argsVec = vec![]; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `args_vec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `elesVec` should have a snake case name [INFO] [stdout] --> src/ast.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | let mut elesVec = vec![]; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `eles_vec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `return_value:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:38:48 [INFO] [stdout] | [INFO] [stdout] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `return_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `operator:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:49 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `operator` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `left:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:69 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^ help: use shorthand field pattern: `left` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `right:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:81 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `right` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `function:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | ExpressionKind::CallExpression{function: function, arguments, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `function` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:153:47 [INFO] [stdout] | [INFO] [stdout] 153 | ExpressionKind::StringLiteral{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sNode` should have a snake case name [INFO] [stdout] --> src/evaluator.rs:174:13 [INFO] [stdout] | [INFO] [stdout] 174 | let sNode = NodeKind::StatementNode{statementKind: s}; [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `s_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `statements:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:271:39 [INFO] [stdout] | [INFO] [stdout] 271 | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `statements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `expressioNode` should have a snake case name [INFO] [stdout] --> src/evaluator.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | let expressioNode = NodeKind::ExpressionNode{expressionKind: *e}; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `expressio_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `parameters:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:30 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `parameters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `body:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:54 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^^^ help: use shorthand field pattern: `body` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `env:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:66 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^ help: use shorthand field pattern: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `argsUnwrapped` should have a snake case name [INFO] [stdout] --> src/parser.rs:471:26 [INFO] [stdout] | [INFO] [stdout] 471 | Some(argsUnwrapped) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `args_unwrapped` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:75:33 [INFO] [stdout] | [INFO] [stdout] 75 | ObjectKind::Integer{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `message:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:78:31 [INFO] [stdout] | [INFO] [stdout] 78 | ObjectKind::Error{message: message, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:84:35 [INFO] [stdout] | [INFO] [stdout] 84 | ObjectKind::StringObj{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ast.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/ast.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 29 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stdout] | ---------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 32 | NodeKind::StatementNode{statementKind} => { [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 35 | NodeKind::ProgramNode{statements} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 42 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:68:47 [INFO] [stdout] | [INFO] [stdout] 68 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/ast.rs:71:53 [INFO] [stdout] | [INFO] [stdout] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `right` [INFO] [stdout] --> src/ast.rs:71:63 [INFO] [stdout] | [INFO] [stdout] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `left` [INFO] [stdout] --> src/ast.rs:74:52 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operator` [INFO] [stdout] --> src/ast.rs:74:58 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `right` [INFO] [stdout] --> src/ast.rs:74:68 [INFO] [stdout] | [INFO] [stdout] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `condition` [INFO] [stdout] --> src/ast.rs:77:49 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `consequence` [INFO] [stdout] --> src/ast.rs:77:60 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `alternative` [INFO] [stdout] --> src/ast.rs:77:73 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `alternative: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:80:54 [INFO] [stdout] | [INFO] [stdout] 80 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parameters` [INFO] [stdout] --> src/ast.rs:83:52 [INFO] [stdout] | [INFO] [stdout] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/ast.rs:83:64 [INFO] [stdout] | [INFO] [stdout] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `function` [INFO] [stdout] --> src/ast.rs:86:51 [INFO] [stdout] | [INFO] [stdout] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `function: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arguments` [INFO] [stdout] --> src/ast.rs:86:61 [INFO] [stdout] | [INFO] [stdout] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:89:50 [INFO] [stdout] | [INFO] [stdout] 89 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:92:51 [INFO] [stdout] | [INFO] [stdout] 92 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `condition` [INFO] [stdout] --> src/ast.rs:95:49 [INFO] [stdout] | [INFO] [stdout] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `consequence` [INFO] [stdout] --> src/ast.rs:95:60 [INFO] [stdout] | [INFO] [stdout] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stdout] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `elements` [INFO] [stdout] --> src/ast.rs:98:49 [INFO] [stdout] | [INFO] [stdout] 98 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stdout] | ^^^^^^^^ help: try ignoring the field: `elements: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `left` [INFO] [stdout] --> src/ast.rs:101:52 [INFO] [stdout] | [INFO] [stdout] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `index` [INFO] [stdout] --> src/ast.rs:101:58 [INFO] [stdout] | [INFO] [stdout] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `index: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:108:40 [INFO] [stdout] | [INFO] [stdout] 108 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:111:46 [INFO] [stdout] | [INFO] [stdout] 111 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:123:45 [INFO] [stdout] | [INFO] [stdout] 123 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:143:54 [INFO] [stdout] | [INFO] [stdout] 143 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:146:42 [INFO] [stdout] | [INFO] [stdout] 146 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:183:44 [INFO] [stdout] | [INFO] [stdout] 183 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 88 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:196:43 [INFO] [stdout] | [INFO] [stdout] 196 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/ast.rs:199:51 [INFO] [stdout] | [INFO] [stdout] 199 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:211:42 [INFO] [stdout] | [INFO] [stdout] 211 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:223:45 [INFO] [stdout] | [INFO] [stdout] 223 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:284:48 [INFO] [stdout] | [INFO] [stdout] 284 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/ast.rs:294:43 [INFO] [stdout] | [INFO] [stdout] 294 | StatementKind::BlockStatement{token, statements} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/evaluator.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/evaluator.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 12 | NodeKind::ProgramNode{statements} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 15 | NodeKind::StatementNode{statementKind} => { [INFO] [stdout] | -------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 72 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stdout] | ---------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 164 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/evaluator.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | _ => { [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/evaluator.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stdout] | ----------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stdout] | -------------------------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ----------------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 64 | StatementKind::BlockStatement{..} => { [INFO] [stdout] | --------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 67 | _ => { [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:17:45 [INFO] [stdout] | [INFO] [stdout] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:27:68 [INFO] [stdout] | [INFO] [stdout] 27 | ... ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:54:52 [INFO] [stdout] | [INFO] [stdout] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:77:50 [INFO] [stdout] | [INFO] [stdout] 77 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:121:51 [INFO] [stdout] | [INFO] [stdout] 121 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:127:49 [INFO] [stdout] | [INFO] [stdout] 127 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:156:48 [INFO] [stdout] | [INFO] [stdout] 156 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `slots` [INFO] [stdout] --> src/evaluator.rs:303:29 [INFO] [stdout] | [INFO] [stdout] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `slots: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/evaluator.rs:303:36 [INFO] [stdout] | [INFO] [stdout] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lslots` [INFO] [stdout] --> src/evaluator.rs:316:36 [INFO] [stdout] | [INFO] [stdout] 316 | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_lslots` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rslots` [INFO] [stdout] --> src/evaluator.rs:318:44 [INFO] [stdout] | [INFO] [stdout] 318 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rslots` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:360:38 [INFO] [stdout] | [INFO] [stdout] 360 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:400:36 [INFO] [stdout] | [INFO] [stdout] 400 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/evaluator.rs:449:40 [INFO] [stdout] | [INFO] [stdout] 449 | ExpressionKind::Identifier{token, value} => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peek_token` [INFO] [stdout] --> src/parser.rs:281:13 [INFO] [stdout] | [INFO] [stdout] 281 | let peek_token = self.peek_token.clone(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peek_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:282:13 [INFO] [stdout] | [INFO] [stdout] 282 | let mut prefix = self.prefix_parse_call(cur_token.clone()); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `token_literal` and `string` are never used [INFO] [stdout] --> src/ast.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 12 | impl NodeKind { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 13 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | fn string(self) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `WhileLiteral` is never constructed [INFO] [stdout] --> src/ast.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 50 | pub enum ExpressionKind { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 60 | WhileLiteral{token: token::Token, condition: Box, consequence: Box}, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExpressionKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `token_literal` is never used [INFO] [stdout] --> src/ast.rs:66:8 [INFO] [stdout] | [INFO] [stdout] 65 | impl ExpressionKind { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] 66 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `token_literal` and `as_any` are never used [INFO] [stdout] --> src/ast.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 249 | impl StatementKind { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] 250 | [INFO] [stdout] 251 | fn token_literal(self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn as_any(&self) -> &Any { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove` is never used [INFO] [stdout] --> src/environment.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl Environment { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn remove(&mut self, key: String) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_call_arguments` and `prase_index_expression` are never used [INFO] [stdout] --> src/parser.rs:485:8 [INFO] [stdout] | [INFO] [stdout] 26 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 485 | fn parse_call_arguments(&mut self) -> Option>>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | fn prase_index_expression(&mut self, left: Box) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `slots` is never read [INFO] [stdout] --> src/object.rs:18:14 [INFO] [stdout] | [INFO] [stdout] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stdout] | -------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `slots` is never read [INFO] [stdout] --> src/object.rs:19:15 [INFO] [stdout] | [INFO] [stdout] 19 | StringObj{slots: HashMap, value: String}, [INFO] [stdout] | --------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `BuiltIn` and `Array` are never constructed [INFO] [stdout] --> src/object.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ObjectKind { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | BuiltIn, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 21 | Array{slots: HashMap, elements: Vec} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ObjectKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_from_slots`, `remove_from_slots`, and `add_to_slots` are never used [INFO] [stdout] --> src/object.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 24 | impl ObjectKind { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | fn get_from_slots(self, key: String) -> ObjectKind { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | fn remove_from_slots(&mut self, key: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | fn add_to_slots(&mut self, key: String, value: ObjectKind) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021 [INFO] [stdout] --> src/lexer.rs:487:32 [INFO] [stdout] | [INFO] [stdout] 487 | for output in expected.into_iter() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(array_into_iter)]` on by default [INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity [INFO] [stdout] | [INFO] [stdout] 487 | for output in expected.iter() { [INFO] [stdout] | ~~~~ [INFO] [stdout] help: or remove `.into_iter()` to iterate by value [INFO] [stdout] | [INFO] [stdout] 487 - for output in expected.into_iter() { [INFO] [stdout] 487 + for output in expected { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `expressionKind` should have a snake case name [INFO] [stdout] --> src/ast.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | ExpressionNode{expressionKind: ExpressionKind}, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `expression_kind` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `statementKind` should have a snake case name [INFO] [stdout] --> src/ast.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | StatementNode{statementKind: StatementKind}, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `statement_kind` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `argsVec` should have a snake case name [INFO] [stdout] --> src/ast.rs:187:25 [INFO] [stdout] | [INFO] [stdout] 187 | let mut argsVec = vec![]; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `args_vec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `elesVec` should have a snake case name [INFO] [stdout] --> src/ast.rs:214:25 [INFO] [stdout] | [INFO] [stdout] 214 | let mut elesVec = vec![]; [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `eles_vec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `return_value:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:38:48 [INFO] [stdout] | [INFO] [stdout] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `return_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_shorthand_field_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `operator:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:49 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `operator` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `left:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:69 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^ help: use shorthand field pattern: `left` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `right:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:94:81 [INFO] [stdout] | [INFO] [stdout] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `right` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `function:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | ExpressionKind::CallExpression{function: function, arguments, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `function` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:153:47 [INFO] [stdout] | [INFO] [stdout] 153 | ExpressionKind::StringLiteral{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sNode` should have a snake case name [INFO] [stdout] --> src/evaluator.rs:174:13 [INFO] [stdout] | [INFO] [stdout] 174 | let sNode = NodeKind::StatementNode{statementKind: s}; [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `s_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `statements:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:271:39 [INFO] [stdout] | [INFO] [stdout] 271 | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `statements` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `expressioNode` should have a snake case name [INFO] [stdout] --> src/evaluator.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | let expressioNode = NodeKind::ExpressionNode{expressionKind: *e}; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `expressio_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `parameters:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:30 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `parameters` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `body:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:54 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^^^ help: use shorthand field pattern: `body` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `env:` in this pattern is redundant [INFO] [stdout] --> src/evaluator.rs:432:66 [INFO] [stdout] | [INFO] [stdout] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stdout] | ^^^^^^^^ help: use shorthand field pattern: `env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `argsUnwrapped` should have a snake case name [INFO] [stdout] --> src/parser.rs:471:26 [INFO] [stdout] | [INFO] [stdout] 471 | Some(argsUnwrapped) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `args_unwrapped` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:75:33 [INFO] [stdout] | [INFO] [stdout] 75 | ObjectKind::Integer{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `message:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:78:31 [INFO] [stdout] | [INFO] [stdout] 78 | ObjectKind::Error{message: message, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `value:` in this pattern is redundant [INFO] [stdout] --> src/object.rs:84:35 [INFO] [stdout] | [INFO] [stdout] 84 | ObjectKind::StringObj{value: value, ..} => { [INFO] [stdout] | ^^^^^^^^^^^^ help: use shorthand field pattern: `value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 89 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.38s [INFO] running `Command { std: "docker" "inspect" "0b128eae2410f3a99d957507415b299ef724d5758f9e49386f37a51cc70eca96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0b128eae2410f3a99d957507415b299ef724d5758f9e49386f37a51cc70eca96", kill_on_drop: false }` [INFO] [stdout] 0b128eae2410f3a99d957507415b299ef724d5758f9e49386f37a51cc70eca96