[INFO] updating cached repository brianmacdonald/lodestone [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/brianmacdonald/lodestone [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/brianmacdonald/lodestone" "work/ex/clippy-test-run/sources/stable/gh/brianmacdonald/lodestone"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/brianmacdonald/lodestone'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/brianmacdonald/lodestone" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/brianmacdonald/lodestone"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/brianmacdonald/lodestone'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 94e2a10695d072fc561a8d36421a31eff05552c1 [INFO] sha for GitHub repo brianmacdonald/lodestone: 94e2a10695d072fc561a8d36421a31eff05552c1 [INFO] validating manifest of brianmacdonald/lodestone on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of brianmacdonald/lodestone on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing brianmacdonald/lodestone [INFO] finished frobbing brianmacdonald/lodestone [INFO] frobbed toml for brianmacdonald/lodestone written to work/ex/clippy-test-run/sources/stable/gh/brianmacdonald/lodestone/Cargo.toml [INFO] started frobbing brianmacdonald/lodestone [INFO] finished frobbing brianmacdonald/lodestone [INFO] frobbed toml for brianmacdonald/lodestone written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/brianmacdonald/lodestone/Cargo.toml [INFO] crate brianmacdonald/lodestone has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting brianmacdonald/lodestone against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/brianmacdonald/lodestone:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 0485833c0715d4f57c76c0ffd0c84fd0cc20ffba31838656172296024f015060 [INFO] running `"docker" "start" "-a" "0485833c0715d4f57c76c0ffd0c84fd0cc20ffba31838656172296024f015060"` [INFO] [stderr] Checking lodestone v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lexer.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/evaluator.rs:128:72 [INFO] [stderr] | [INFO] [stderr] 128 | return ObjectKind::Function{slots: HashMap::new(), parameters: parameters, body: *body, env: env.clone()}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/evaluator.rs:157:71 [INFO] [stderr] | [INFO] [stderr] 157 | return ObjectKind::Integer{slots: HashMap::new(), value: value}; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:53 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:67 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:79 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:254:56 [INFO] [stderr] | [INFO] [stderr] 254 | Some(Box::new(StatementKind::ReturnStatement { token: token, return_value: Some(Box::new(es)) } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:263:59 [INFO] [stderr] | [INFO] [stderr] 263 | Some(Box::new(StatementKind::ExpressionStatement{ token: token, expression: expression } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:263:73 [INFO] [stderr] | [INFO] [stderr] 263 | Some(Box::new(StatementKind::ExpressionStatement{ token: token, expression: expression } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `expression` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:58 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:72 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:92 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:320:74 [INFO] [stderr] | [INFO] [stderr] 320 | Some(Box::new(ExpressionKind::IntegerLiteral { token: cur_token, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:75 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:95 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:107 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:72 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:94 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `consequence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:120 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `alternative` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:419:73 [INFO] [stderr] | [INFO] [stderr] 419 | Some(Box::new(StatementKind::BlockStatement { token: cur_token, statements: statements})) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statements` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:434:83 [INFO] [stderr] | [INFO] [stderr] 434 | Some(Box::new(ExpressionKind::FunctionLiteral { token: cur_token, parameters: parameters, body: b })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:542:75 [INFO] [stderr] | [INFO] [stderr] 542 | Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: left, index: index } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:542:87 [INFO] [stderr] | [INFO] [stderr] 542 | Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: left, index: index } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:578:99 [INFO] [stderr] | [INFO] [stderr] 578 | return Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index })); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/object.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | write!(f, "{}", "Null") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/object.rs:88:33 [INFO] [stderr] | [INFO] [stderr] 88 | write!(f, "{}", "display not implmented") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lexer.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/evaluator.rs:128:72 [INFO] [stderr] | [INFO] [stderr] 128 | return ObjectKind::Function{slots: HashMap::new(), parameters: parameters, body: *body, env: env.clone()}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/evaluator.rs:157:71 [INFO] [stderr] | [INFO] [stderr] 157 | return ObjectKind::Integer{slots: HashMap::new(), value: value}; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:53 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:67 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:243:79 [INFO] [stderr] | [INFO] [stderr] 243 | Some(Box::new(StatementKind::LetStatement { token: token, name: name, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:254:56 [INFO] [stderr] | [INFO] [stderr] 254 | Some(Box::new(StatementKind::ReturnStatement { token: token, return_value: Some(Box::new(es)) } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:263:59 [INFO] [stderr] | [INFO] [stderr] 263 | Some(Box::new(StatementKind::ExpressionStatement{ token: token, expression: expression } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:263:73 [INFO] [stderr] | [INFO] [stderr] 263 | Some(Box::new(StatementKind::ExpressionStatement{ token: token, expression: expression } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `expression` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:58 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:72 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:271:92 [INFO] [stderr] | [INFO] [stderr] 271 | Some(Box::new(ExpressionKind::PrefixExpression { token: token, operator: operator, right: right})) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:320:74 [INFO] [stderr] | [INFO] [stderr] 320 | Some(Box::new(ExpressionKind::IntegerLiteral { token: cur_token, value: value })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:75 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:95 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:363:107 [INFO] [stderr] | [INFO] [stderr] 363 | Some(Box::new(ExpressionKind::InfixExpression { token: cur_token, operator: operator, left: left, right: right })) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:72 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `condition` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:94 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `consequence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:402:120 [INFO] [stderr] | [INFO] [stderr] 402 | Some(Box::new(ExpressionKind::IfExpression { token: cur_token, condition: condition, consequence: consequence, alternative: alternative } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `alternative` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:419:73 [INFO] [stderr] | [INFO] [stderr] 419 | Some(Box::new(StatementKind::BlockStatement { token: cur_token, statements: statements})) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statements` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:434:83 [INFO] [stderr] | [INFO] [stderr] 434 | Some(Box::new(ExpressionKind::FunctionLiteral { token: cur_token, parameters: parameters, body: b })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:542:75 [INFO] [stderr] | [INFO] [stderr] 542 | Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: left, index: index } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:542:87 [INFO] [stderr] | [INFO] [stderr] 542 | Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: left, index: index } )) [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:578:99 [INFO] [stderr] | [INFO] [stderr] 578 | return Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index })); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/object.rs:82:33 [INFO] [stderr] | [INFO] [stderr] 82 | write!(f, "{}", "Null") [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/object.rs:88:33 [INFO] [stderr] | [INFO] [stderr] 88 | write!(f, "{}", "display not implmented") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | return 0 as char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `0 as char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | return self.input.chars().nth(self.read_position as usize).unwrap() as char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.input.chars().nth(self.read_position as usize).unwrap() as char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:197:9 [INFO] [stderr] | [INFO] [stderr] 197 | / return self.input [INFO] [stderr] 198 | | .chars() [INFO] [stderr] 199 | | .skip(position as usize) [INFO] [stderr] 200 | | .take(take_size as usize) [INFO] [stderr] 201 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 197 | self.input [INFO] [stderr] 198 | .chars() [INFO] [stderr] 199 | .skip(position as usize) [INFO] [stderr] 200 | .take(take_size as usize) [INFO] [stderr] 201 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | / return self.input [INFO] [stderr] 216 | | .chars() [INFO] [stderr] 217 | | .skip(position as usize) [INFO] [stderr] 218 | | .take(take_size as usize) [INFO] [stderr] 219 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 215 | self.input [INFO] [stderr] 216 | .chars() [INFO] [stderr] 217 | .skip(position as usize) [INFO] [stderr] 218 | .take(take_size as usize) [INFO] [stderr] 219 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | / return self.input [INFO] [stderr] 234 | | .chars() [INFO] [stderr] 235 | | .skip(position as usize) [INFO] [stderr] 236 | | .take(take_size as usize) [INFO] [stderr] 237 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 233 | self.input [INFO] [stderr] 234 | .chars() [INFO] [stderr] 235 | .skip(position as usize) [INFO] [stderr] 236 | .take(take_size as usize) [INFO] [stderr] 237 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / return token::Token { [INFO] [stderr] 244 | | t_type: token_type, [INFO] [stderr] 245 | | literal: ch.to_string(), [INFO] [stderr] 246 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 243 | token::Token { [INFO] [stderr] 244 | t_type: token_type, [INFO] [stderr] 245 | literal: ch.to_string(), [INFO] [stderr] 246 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | return '0' <= ch && ch <= '9'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `'0' <= ch && ch <= '9'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:287:25 [INFO] [stderr] | [INFO] [stderr] 287 | return x.string().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `x.string().clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:290:25 [INFO] [stderr] | [INFO] [stderr] 290 | return String::from(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from("")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:186:5 [INFO] [stderr] | [INFO] [stderr] 186 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:284:5 [INFO] [stderr] | [INFO] [stderr] 284 | return result.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:392:5 [INFO] [stderr] | [INFO] [stderr] 392 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:427:2 [INFO] [stderr] | [INFO] [stderr] 427 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:436:13 [INFO] [stderr] | [INFO] [stderr] 436 | return unwrap_return_value(evaluated); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unwrap_return_value(evaluated)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:461:5 [INFO] [stderr] | [INFO] [stderr] 461 | return closure; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `closure` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:467:13 [INFO] [stderr] | [INFO] [stderr] 467 | return *value; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `*value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:470:13 [INFO] [stderr] | [INFO] [stderr] 470 | return obj; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `obj` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return parser; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | return self.parse_prefix_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_prefix_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | return self.parse_prefix_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_prefix_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | return self.parser_integer_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parser_integer_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | return self.parse_identifier(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_identifier()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | return self.parse_boolean(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_boolean()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | return self.parse_boolean(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_boolean()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | return self.parse_grouped_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_grouped_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | return self.parse_if_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_if_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | return self.parse_function_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_function_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:70:17 [INFO] [stderr] | [INFO] [stderr] 70 | return self.parse_string_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_string_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | return self.parse_array_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_array_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | return self.parse_infix_expression(expression);; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | return self.parse_infix_expression(expression);; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:118:17 [INFO] [stderr] | [INFO] [stderr] 118 | return self.parse_call_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_call_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | return self.parse_index_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_index_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:141:17 [INFO] [stderr] | [INFO] [stderr] 141 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:144:17 [INFO] [stderr] | [INFO] [stderr] 144 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:150:17 [INFO] [stderr] | [INFO] [stderr] 150 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:153:17 [INFO] [stderr] | [INFO] [stderr] 153 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:156:17 [INFO] [stderr] | [INFO] [stderr] 156 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:165:17 [INFO] [stderr] | [INFO] [stderr] 165 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | return NodeKind::ProgramNode { statements: stmt_vec }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeKind::ProgramNode { statements: stmt_vec }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | return self.parse_let_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_let_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:196:17 [INFO] [stderr] | [INFO] [stderr] 196 | return self.parse_return_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_return_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | return self.parse_expression_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_expression_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:295:17 [INFO] [stderr] | [INFO] [stderr] 295 | return left_exp; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `left_exp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:377:9 [INFO] [stderr] | [INFO] [stderr] 377 | return exp; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `exp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:462:9 [INFO] [stderr] | [INFO] [stderr] 462 | return identifiers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `identifiers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:578:17 [INFO] [stderr] | [INFO] [stderr] 578 | return Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:581:17 [INFO] [stderr] | [INFO] [stderr] 581 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::ast::NodeKind` [INFO] [stderr] --> src/object.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use super::ast::NodeKind; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | return 0 as char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `0 as char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | return self.input.chars().nth(self.read_position as usize).unwrap() as char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.input.chars().nth(self.read_position as usize).unwrap() as char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:197:9 [INFO] [stderr] | [INFO] [stderr] 197 | / return self.input [INFO] [stderr] 198 | | .chars() [INFO] [stderr] 199 | | .skip(position as usize) [INFO] [stderr] 200 | | .take(take_size as usize) [INFO] [stderr] 201 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 197 | self.input [INFO] [stderr] 198 | .chars() [INFO] [stderr] 199 | .skip(position as usize) [INFO] [stderr] 200 | .take(take_size as usize) [INFO] [stderr] 201 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | / return self.input [INFO] [stderr] 216 | | .chars() [INFO] [stderr] 217 | | .skip(position as usize) [INFO] [stderr] 218 | | .take(take_size as usize) [INFO] [stderr] 219 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 215 | self.input [INFO] [stderr] 216 | .chars() [INFO] [stderr] 217 | .skip(position as usize) [INFO] [stderr] 218 | .take(take_size as usize) [INFO] [stderr] 219 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | / return self.input [INFO] [stderr] 234 | | .chars() [INFO] [stderr] 235 | | .skip(position as usize) [INFO] [stderr] 236 | | .take(take_size as usize) [INFO] [stderr] 237 | | .collect(); [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 233 | self.input [INFO] [stderr] 234 | .chars() [INFO] [stderr] 235 | .skip(position as usize) [INFO] [stderr] 236 | .take(take_size as usize) [INFO] [stderr] 237 | .collect() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / return token::Token { [INFO] [stderr] 244 | | t_type: token_type, [INFO] [stderr] 245 | | literal: ch.to_string(), [INFO] [stderr] 246 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 243 | token::Token { [INFO] [stderr] 244 | t_type: token_type, [INFO] [stderr] 245 | literal: ch.to_string(), [INFO] [stderr] 246 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | return '0' <= ch && ch <= '9'; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `'0' <= ch && ch <= '9'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:287:25 [INFO] [stderr] | [INFO] [stderr] 287 | return x.string().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `x.string().clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ast.rs:290:25 [INFO] [stderr] | [INFO] [stderr] 290 | return String::from(""); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `String::from("")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:186:5 [INFO] [stderr] | [INFO] [stderr] 186 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:284:5 [INFO] [stderr] | [INFO] [stderr] 284 | return result.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:392:5 [INFO] [stderr] | [INFO] [stderr] 392 | return ObjectKind::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectKind::Null` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:427:2 [INFO] [stderr] | [INFO] [stderr] 427 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:436:13 [INFO] [stderr] | [INFO] [stderr] 436 | return unwrap_return_value(evaluated); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unwrap_return_value(evaluated)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:461:5 [INFO] [stderr] | [INFO] [stderr] 461 | return closure; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `closure` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:467:13 [INFO] [stderr] | [INFO] [stderr] 467 | return *value; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `*value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/evaluator.rs:470:13 [INFO] [stderr] | [INFO] [stderr] 470 | return obj; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `obj` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return parser; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | return self.parse_prefix_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_prefix_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:46:17 [INFO] [stderr] | [INFO] [stderr] 46 | return self.parse_prefix_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_prefix_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | return self.parser_integer_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parser_integer_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | return self.parse_identifier(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_identifier()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | return self.parse_boolean(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_boolean()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | return self.parse_boolean(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_boolean()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | return self.parse_grouped_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_grouped_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | return self.parse_if_expression(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_if_expression()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | return self.parse_function_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_function_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:70:17 [INFO] [stderr] | [INFO] [stderr] 70 | return self.parse_string_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_string_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | return self.parse_array_literal(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_array_literal()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | return self.parse_infix_expression(expression);; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | return self.parse_infix_expression(expression);; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:112:17 [INFO] [stderr] | [INFO] [stderr] 112 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | return self.parse_infix_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_infix_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:118:17 [INFO] [stderr] | [INFO] [stderr] 118 | return self.parse_call_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_call_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | return self.parse_index_expression(expression); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_index_expression(expression)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:138:17 [INFO] [stderr] | [INFO] [stderr] 138 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:141:17 [INFO] [stderr] | [INFO] [stderr] 141 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:144:17 [INFO] [stderr] | [INFO] [stderr] 144 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:150:17 [INFO] [stderr] | [INFO] [stderr] 150 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:153:17 [INFO] [stderr] | [INFO] [stderr] 153 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:156:17 [INFO] [stderr] | [INFO] [stderr] 156 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:159:17 [INFO] [stderr] | [INFO] [stderr] 159 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:165:17 [INFO] [stderr] | [INFO] [stderr] 165 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | return NodeKind::ProgramNode { statements: stmt_vec }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeKind::ProgramNode { statements: stmt_vec }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | return self.parse_let_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_let_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:196:17 [INFO] [stderr] | [INFO] [stderr] 196 | return self.parse_return_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_return_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:199:17 [INFO] [stderr] | [INFO] [stderr] 199 | return self.parse_expression_statement(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.parse_expression_statement()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:295:17 [INFO] [stderr] | [INFO] [stderr] 295 | return left_exp; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `left_exp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:377:9 [INFO] [stderr] | [INFO] [stderr] 377 | return exp; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `exp` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:462:9 [INFO] [stderr] | [INFO] [stderr] 462 | return identifiers; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `identifiers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:578:17 [INFO] [stderr] | [INFO] [stderr] 578 | return Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Box::new(ExpressionKind::IndexExpression { token: cur_token, left: l, index: index }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:581:17 [INFO] [stderr] | [INFO] [stderr] 581 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::ast::NodeKind` [INFO] [stderr] --> src/object.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use super::ast::NodeKind; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/evaluator.rs:499:5 [INFO] [stderr] | [INFO] [stderr] 499 | panic!("Non-valid string input."); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/evaluator.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/evaluator.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/ast.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:17:45 [INFO] [stderr] | [INFO] [stderr] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:27:68 [INFO] [stderr] | [INFO] [stderr] 27 | ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:54:52 [INFO] [stderr] | [INFO] [stderr] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:77:50 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:121:51 [INFO] [stderr] | [INFO] [stderr] 121 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:127:49 [INFO] [stderr] | [INFO] [stderr] 127 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:156:48 [INFO] [stderr] | [INFO] [stderr] 156 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slots` [INFO] [stderr] --> src/evaluator.rs:303:29 [INFO] [stderr] | [INFO] [stderr] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `slots: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/evaluator.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `lslots` [INFO] [stderr] --> src/evaluator.rs:316:36 [INFO] [stderr] | [INFO] [stderr] 316 | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stderr] | ^^^^^^ help: consider using `_lslots` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rslots` [INFO] [stderr] --> src/evaluator.rs:318:44 [INFO] [stderr] | [INFO] [stderr] 318 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] | ^^^^^^ help: consider using `_rslots` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:360:38 [INFO] [stderr] | [INFO] [stderr] 360 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:400:36 [INFO] [stderr] | [INFO] [stderr] 400 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:449:40 [INFO] [stderr] | [INFO] [stderr] 449 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:68:47 [INFO] [stderr] | [INFO] [stderr] 68 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `operator` [INFO] [stderr] --> src/ast.rs:71:53 [INFO] [stderr] | [INFO] [stderr] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `right` [INFO] [stderr] --> src/ast.rs:71:63 [INFO] [stderr] | [INFO] [stderr] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `left` [INFO] [stderr] --> src/ast.rs:74:52 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `operator` [INFO] [stderr] --> src/ast.rs:74:58 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `right` [INFO] [stderr] --> src/ast.rs:74:68 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `condition` [INFO] [stderr] --> src/ast.rs:77:49 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consequence` [INFO] [stderr] --> src/ast.rs:77:60 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `alternative` [INFO] [stderr] --> src/ast.rs:77:73 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `alternative: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:80:54 [INFO] [stderr] | [INFO] [stderr] 80 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parameters` [INFO] [stderr] --> src/ast.rs:83:52 [INFO] [stderr] | [INFO] [stderr] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `body` [INFO] [stderr] --> src/ast.rs:83:64 [INFO] [stderr] | [INFO] [stderr] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `function` [INFO] [stderr] --> src/ast.rs:86:51 [INFO] [stderr] | [INFO] [stderr] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `function: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arguments` [INFO] [stderr] --> src/ast.rs:86:61 [INFO] [stderr] | [INFO] [stderr] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:89:50 [INFO] [stderr] | [INFO] [stderr] 89 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:92:51 [INFO] [stderr] | [INFO] [stderr] 92 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `condition` [INFO] [stderr] --> src/ast.rs:95:49 [INFO] [stderr] | [INFO] [stderr] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consequence` [INFO] [stderr] --> src/ast.rs:95:60 [INFO] [stderr] | [INFO] [stderr] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `elements` [INFO] [stderr] --> src/ast.rs:98:49 [INFO] [stderr] | [INFO] [stderr] 98 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `elements: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `left` [INFO] [stderr] --> src/ast.rs:101:52 [INFO] [stderr] | [INFO] [stderr] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/ast.rs:101:58 [INFO] [stderr] | [INFO] [stderr] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `index: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:108:40 [INFO] [stderr] | [INFO] [stderr] 108 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:111:46 [INFO] [stderr] | [INFO] [stderr] 111 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:123:45 [INFO] [stderr] | [INFO] [stderr] 123 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:143:54 [INFO] [stderr] | [INFO] [stderr] 143 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:146:42 [INFO] [stderr] | [INFO] [stderr] 146 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:183:44 [INFO] [stderr] | [INFO] [stderr] 183 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:196:43 [INFO] [stderr] | [INFO] [stderr] 196 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:199:51 [INFO] [stderr] | [INFO] [stderr] 199 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:211:42 [INFO] [stderr] | [INFO] [stderr] 211 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:223:45 [INFO] [stderr] | [INFO] [stderr] 223 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:284:48 [INFO] [stderr] | [INFO] [stderr] 284 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:294:43 [INFO] [stderr] | [INFO] [stderr] 294 | StatementKind::BlockStatement{token, statements} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `peek_token` [INFO] [stderr] --> src/parser.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let peek_token = self.peek_token.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_peek_token` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/repl.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | let mut program = p.parse_program(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/evaluator.rs:499:5 [INFO] [stderr] | [INFO] [stderr] 499 | panic!("Non-valid string input."); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parser.rs:282:13 [INFO] [stderr] | [INFO] [stderr] 282 | let mut prefix = self.prefix_parse_call(cur_token.clone()); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `string` [INFO] [stderr] --> src/ast.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | fn string(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `WhileLiteral` [INFO] [stderr] --> src/ast.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | WhileLiteral{token: token::Token, condition: Box, consequence: Box}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `string` [INFO] [stderr] --> src/ast.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | fn string(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `string` [INFO] [stderr] --> src/ast.rs:255:5 [INFO] [stderr] | [INFO] [stderr] 255 | fn string(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `as_any` [INFO] [stderr] --> src/ast.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | pub fn as_any(&self) -> &Any { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove` [INFO] [stderr] --> src/environment.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn remove(&mut self, key: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `parse_call_arguments` [INFO] [stderr] --> src/parser.rs:485:5 [INFO] [stderr] | [INFO] [stderr] 485 | fn parse_call_arguments(&mut self) -> Option>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `prase_index_expression` [INFO] [stderr] --> src/parser.rs:534:5 [INFO] [stderr] | [INFO] [stderr] 534 | fn prase_index_expression(&mut self, left: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BuiltIn` [INFO] [stderr] --> src/object.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | BuiltIn, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Array` [INFO] [stderr] --> src/object.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | Array{slots: HashMap, elements: Vec} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_from_slots` [INFO] [stderr] --> src/object.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | fn get_from_slots(self, key: String) -> ObjectKind { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove_from_slots` [INFO] [stderr] --> src/object.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | fn remove_from_slots(&mut self, key: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_slots` [INFO] [stderr] --> src/object.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | fn add_to_slots(&mut self, key: String, value: ObjectKind) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:48:41 [INFO] [stderr] | [INFO] [stderr] 48 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:62:41 [INFO] [stderr] | [INFO] [stderr] 62 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:76:41 [INFO] [stderr] | [INFO] [stderr] 76 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/evaluator.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/evaluator.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/ast.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | _ => { [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:17:45 [INFO] [stderr] | [INFO] [stderr] 17 | StatementKind::LetStatement{token, name, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:27:68 [INFO] [stderr] | [INFO] [stderr] 27 | ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:54:52 [INFO] [stderr] | [INFO] [stderr] 54 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:77:50 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:121:51 [INFO] [stderr] | [INFO] [stderr] 121 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:127:49 [INFO] [stderr] | [INFO] [stderr] 127 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:156:48 [INFO] [stderr] | [INFO] [stderr] 156 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `slots` [INFO] [stderr] --> src/evaluator.rs:303:29 [INFO] [stderr] | [INFO] [stderr] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `slots: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/evaluator.rs:303:36 [INFO] [stderr] | [INFO] [stderr] 303 | ObjectKind::Integer{slots, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `lslots` [INFO] [stderr] --> src/evaluator.rs:316:36 [INFO] [stderr] | [INFO] [stderr] 316 | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stderr] | ^^^^^^ help: consider using `_lslots` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rslots` [INFO] [stderr] --> src/evaluator.rs:318:44 [INFO] [stderr] | [INFO] [stderr] 318 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] | ^^^^^^ help: consider using `_rslots` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:360:38 [INFO] [stderr] | [INFO] [stderr] 360 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:400:36 [INFO] [stderr] | [INFO] [stderr] 400 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/evaluator.rs:449:40 [INFO] [stderr] | [INFO] [stderr] 449 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:68:47 [INFO] [stderr] | [INFO] [stderr] 68 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `operator` [INFO] [stderr] --> src/ast.rs:71:53 [INFO] [stderr] | [INFO] [stderr] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `right` [INFO] [stderr] --> src/ast.rs:71:63 [INFO] [stderr] | [INFO] [stderr] 71 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `left` [INFO] [stderr] --> src/ast.rs:74:52 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `operator` [INFO] [stderr] --> src/ast.rs:74:58 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `operator: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `right` [INFO] [stderr] --> src/ast.rs:74:68 [INFO] [stderr] | [INFO] [stderr] 74 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `right: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `condition` [INFO] [stderr] --> src/ast.rs:77:49 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consequence` [INFO] [stderr] --> src/ast.rs:77:60 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `alternative` [INFO] [stderr] --> src/ast.rs:77:73 [INFO] [stderr] | [INFO] [stderr] 77 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `alternative: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:80:54 [INFO] [stderr] | [INFO] [stderr] 80 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parameters` [INFO] [stderr] --> src/ast.rs:83:52 [INFO] [stderr] | [INFO] [stderr] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^^^^^^^ help: try ignoring the field: `parameters: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `body` [INFO] [stderr] --> src/ast.rs:83:64 [INFO] [stderr] | [INFO] [stderr] 83 | ExpressionKind::FunctionLiteral{token, parameters, body} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `function` [INFO] [stderr] --> src/ast.rs:86:51 [INFO] [stderr] | [INFO] [stderr] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `function: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arguments` [INFO] [stderr] --> src/ast.rs:86:61 [INFO] [stderr] | [INFO] [stderr] 86 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:89:50 [INFO] [stderr] | [INFO] [stderr] 89 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:92:51 [INFO] [stderr] | [INFO] [stderr] 92 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `condition` [INFO] [stderr] --> src/ast.rs:95:49 [INFO] [stderr] | [INFO] [stderr] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `condition: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consequence` [INFO] [stderr] --> src/ast.rs:95:60 [INFO] [stderr] | [INFO] [stderr] 95 | ExpressionKind::WhileLiteral{token, condition, consequence} => { [INFO] [stderr] | ^^^^^^^^^^^ help: try ignoring the field: `consequence: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `elements` [INFO] [stderr] --> src/ast.rs:98:49 [INFO] [stderr] | [INFO] [stderr] 98 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `elements: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `left` [INFO] [stderr] --> src/ast.rs:101:52 [INFO] [stderr] | [INFO] [stderr] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `left: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `index` [INFO] [stderr] --> src/ast.rs:101:58 [INFO] [stderr] | [INFO] [stderr] 101 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `index: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:108:40 [INFO] [stderr] | [INFO] [stderr] 108 | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:111:46 [INFO] [stderr] | [INFO] [stderr] 111 | ExpressionKind::PrefixExpression{token, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:123:45 [INFO] [stderr] | [INFO] [stderr] 123 | ExpressionKind::InfixExpression{token, left, operator, right} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:143:54 [INFO] [stderr] | [INFO] [stderr] 143 | ExpressionKind::BooleanExpression{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:146:42 [INFO] [stderr] | [INFO] [stderr] 146 | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:183:44 [INFO] [stderr] | [INFO] [stderr] 183 | ExpressionKind::CallExpression{token, function, arguments} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:196:43 [INFO] [stderr] | [INFO] [stderr] 196 | ExpressionKind::StringLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/ast.rs:199:51 [INFO] [stderr] | [INFO] [stderr] 199 | ExpressionKind::IntegerLiteral{token, value} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `value: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:211:42 [INFO] [stderr] | [INFO] [stderr] 211 | ExpressionKind::ArrayLiteral{token, elements} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:223:45 [INFO] [stderr] | [INFO] [stderr] 223 | ExpressionKind::IndexExpression{token, left, index} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:284:48 [INFO] [stderr] | [INFO] [stderr] 284 | StatementKind::ExpressionStatement{token, expression} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/ast.rs:294:43 [INFO] [stderr] | [INFO] [stderr] 294 | StatementKind::BlockStatement{token, statements} => { [INFO] [stderr] | ^^^^^ help: try ignoring the field: `token: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `peek_token` [INFO] [stderr] --> src/parser.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let peek_token = self.peek_token.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_peek_token` instead [INFO] [stderr] [INFO] [stderr] warning: structure field `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/ast.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | ExpressionNode{expressionKind: ExpressionKind}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/ast.rs:8:19 [INFO] [stderr] | [INFO] [stderr] 8 | StatementNode{statementKind: StatementKind}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast.rs:17:20 [INFO] [stderr] | [INFO] [stderr] 17 | if statements.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!statements.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: variable `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/ast.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/ast.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | NodeKind::StatementNode{statementKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/repl.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | let mut program = p.parse_program(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:114:17 [INFO] [stderr] | [INFO] [stderr] 114 | / match right { [INFO] [stderr] 115 | | Some(x) => { [INFO] [stderr] 116 | | out.push_str(&x.string()); [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | None => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 114 | if let Some(x) = right { [INFO] [stderr] 115 | out.push_str(&x.string()); [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:125:17 [INFO] [stderr] | [INFO] [stderr] 125 | / match left { [INFO] [stderr] 126 | | Some(s) => { [INFO] [stderr] 127 | | out.push_str(&s.string()); [INFO] [stderr] 128 | | }, [INFO] [stderr] 129 | | _ => {} [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 125 | if let Some(s) = left { [INFO] [stderr] 126 | out.push_str(&s.string()); [INFO] [stderr] 127 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:134:17 [INFO] [stderr] | [INFO] [stderr] 134 | / match right { [INFO] [stderr] 135 | | Some(s) => { [INFO] [stderr] 136 | | out.push_str(&s.string()); [INFO] [stderr] 137 | | }, [INFO] [stderr] 138 | | _ => {} [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 134 | if let Some(s) = right { [INFO] [stderr] 135 | out.push_str(&s.string()); [INFO] [stderr] 136 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:148:17 [INFO] [stderr] | [INFO] [stderr] 148 | / match condition { [INFO] [stderr] 149 | | Some(c) => { [INFO] [stderr] 150 | | out.push_str(&c.string()); [INFO] [stderr] 151 | | }, [INFO] [stderr] 152 | | _ => {} [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 148 | if let Some(c) = condition { [INFO] [stderr] 149 | out.push_str(&c.string()); [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | / match consequence { [INFO] [stderr] 156 | | Some(c) => { [INFO] [stderr] 157 | | out.push_str(&c.string()); [INFO] [stderr] 158 | | }, [INFO] [stderr] 159 | | _ => {} [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 155 | if let Some(c) = consequence { [INFO] [stderr] 156 | out.push_str(&c.string()); [INFO] [stderr] 157 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match alternative { [INFO] [stderr] 163 | | Some(a) => { [INFO] [stderr] 164 | | out.push_str("else "); [INFO] [stderr] 165 | | out.push_str(&a.string()); [INFO] [stderr] 166 | | }, [INFO] [stderr] 167 | | _ => {} [INFO] [stderr] 168 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | if let Some(a) = alternative { [INFO] [stderr] 163 | out.push_str("else "); [INFO] [stderr] 164 | out.push_str(&a.string()); [INFO] [stderr] 165 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `argsVec` should have a snake case name such as `args_vec` [INFO] [stderr] --> src/ast.rs:187:21 [INFO] [stderr] | [INFO] [stderr] 187 | let mut argsVec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `elesVec` should have a snake case name such as `eles_vec` [INFO] [stderr] --> src/ast.rs:214:21 [INFO] [stderr] | [INFO] [stderr] 214 | let mut elesVec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | / match index { [INFO] [stderr] 229 | | Some(i) => { [INFO] [stderr] 230 | | out.push_str(&i.string()); [INFO] [stderr] 231 | | } [INFO] [stderr] 232 | | _ => {} [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 228 | if let Some(i) = index { [INFO] [stderr] 229 | out.push_str(&i.string()); [INFO] [stderr] 230 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | / match value { [INFO] [stderr] 264 | | Some(x) => { [INFO] [stderr] 265 | | out.push_str(&x.string()); [INFO] [stderr] 266 | | } [INFO] [stderr] 267 | | _ => {} [INFO] [stderr] 268 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 263 | if let Some(x) = value { [INFO] [stderr] 264 | out.push_str(&x.string()); [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:275:17 [INFO] [stderr] | [INFO] [stderr] 275 | / match return_value { [INFO] [stderr] 276 | | Some(rv) => { [INFO] [stderr] 277 | | out.push_str(&rv.string()); [INFO] [stderr] 278 | | } [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 275 | if let Some(rv) = return_value { [INFO] [stderr] 276 | out.push_str(&rv.string()); [INFO] [stderr] 277 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/evaluator.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | NodeKind::StatementNode{statementKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:18:21 [INFO] [stderr] | [INFO] [stderr] 18 | / match value { [INFO] [stderr] 19 | | Some(v) => { [INFO] [stderr] 20 | | let val = eval(NodeKind::ExpressionNode{expressionKind: *v}, env); [INFO] [stderr] 21 | | match val { [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => {} [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | if let Some(v) = value { [INFO] [stderr] 19 | let val = eval(NodeKind::ExpressionNode{expressionKind: *v}, env); [INFO] [stderr] 20 | match val { [INFO] [stderr] 21 | ObjectKind::Error{..} => { [INFO] [stderr] 22 | return val; [INFO] [stderr] 23 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | / match name { [INFO] [stderr] 27 | | ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stderr] 28 | | env.insert(name_value, val); [INFO] [stderr] 29 | | }, [INFO] [stderr] 30 | | _ => {} [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | if let ExpressionKind::Identifier{token, value: name_value} = name { [INFO] [stderr] 27 | env.insert(name_value, val); [INFO] [stderr] 28 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `return_value:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:38:48 [INFO] [stderr] | [INFO] [stderr] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stderr] | -------------^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_shorthand_field_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:39:21 [INFO] [stderr] | [INFO] [stderr] 39 | / match return_value { [INFO] [stderr] 40 | | Some(return_val) => { [INFO] [stderr] 41 | | let val = eval(NodeKind::StatementNode{statementKind: *return_val}, env); [INFO] [stderr] 42 | | match is_error(val.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 50 | | None => {} [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 39 | if let Some(return_val) = return_value { [INFO] [stderr] 40 | let val = eval(NodeKind::StatementNode{statementKind: *return_val}, env); [INFO] [stderr] 41 | match is_error(val.clone()) { [INFO] [stderr] 42 | true => { [INFO] [stderr] 43 | return val.clone(); [INFO] [stderr] 44 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:42:29 [INFO] [stderr] | [INFO] [stderr] 42 | / match is_error(val.clone()) { [INFO] [stderr] 43 | | true => { [INFO] [stderr] 44 | | return val.clone(); [INFO] [stderr] 45 | | }, [INFO] [stderr] 46 | | _ => {} [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 42 | if is_error(val.clone()) { [INFO] [stderr] 43 | return val.clone(); [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/evaluator.rs:72:34 [INFO] [stderr] | [INFO] [stderr] 72 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | / match right { [INFO] [stderr] 79 | | Some(r) => { [INFO] [stderr] 80 | | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 81 | | match eval_right { [INFO] [stderr] ... | [INFO] [stderr] 90 | | _ => {} [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 78 | if let Some(r) = right { [INFO] [stderr] 79 | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 80 | match eval_right { [INFO] [stderr] 81 | ObjectKind::Error{..} => { [INFO] [stderr] 82 | return eval_right; [INFO] [stderr] 83 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `operator:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:49 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | ---------^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `left:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:69 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | -----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `right:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:81 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | / match left { [INFO] [stderr] 96 | | Some(l) => { [INFO] [stderr] 97 | | let eval_left = eval(NodeKind::ExpressionNode{expressionKind: *l}, env); [INFO] [stderr] 98 | | match is_error(eval_left.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 95 | if let Some(l) = left { [INFO] [stderr] 96 | let eval_left = eval(NodeKind::ExpressionNode{expressionKind: *l}, env); [INFO] [stderr] 97 | match is_error(eval_left.clone()) { [INFO] [stderr] 98 | true => { [INFO] [stderr] 99 | return eval_left.clone(); [INFO] [stderr] 100 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:98:29 [INFO] [stderr] | [INFO] [stderr] 98 | / match is_error(eval_left.clone()) { [INFO] [stderr] 99 | | true => { [INFO] [stderr] 100 | | return eval_left.clone(); [INFO] [stderr] 101 | | }, [INFO] [stderr] 102 | | _ => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 98 | if is_error(eval_left.clone()) { [INFO] [stderr] 99 | return eval_left.clone(); [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:104:29 [INFO] [stderr] | [INFO] [stderr] 104 | / match right { [INFO] [stderr] 105 | | Some(r) => { [INFO] [stderr] 106 | | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 107 | | match is_error(eval_right.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 115 | | _ => {} [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 104 | if let Some(r) = right { [INFO] [stderr] 105 | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 106 | match is_error(eval_right.clone()) { [INFO] [stderr] 107 | true => { [INFO] [stderr] 108 | return eval_right.clone(); [INFO] [stderr] 109 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | / match is_error(eval_right.clone()) { [INFO] [stderr] 108 | | true => { [INFO] [stderr] 109 | | return eval_right.clone(); [INFO] [stderr] 110 | | }, [INFO] [stderr] 111 | | _ => {} [INFO] [stderr] 112 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 107 | if is_error(eval_right.clone()) { [INFO] [stderr] 108 | return eval_right.clone(); [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `function:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:130:48 [INFO] [stderr] | [INFO] [stderr] 130 | ExpressionKind::CallExpression{function: function, arguments, ..} => { [INFO] [stderr] | ---------^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | / match args.len() == 1 { [INFO] [stderr] 135 | | true => { [INFO] [stderr] 136 | | match args.get(0) { [INFO] [stderr] 137 | | Some(arg) => { [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 134 | if args.len() == 1 { [INFO] [stderr] 135 | match args.get(0) { [INFO] [stderr] 136 | Some(arg) => { [INFO] [stderr] 137 | let first_arg = arg.clone(); [INFO] [stderr] 138 | match is_error(first_arg) { [INFO] [stderr] 139 | true => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:136:29 [INFO] [stderr] | [INFO] [stderr] 136 | / match args.get(0) { [INFO] [stderr] 137 | | Some(arg) => { [INFO] [stderr] 138 | | let first_arg = arg.clone(); [INFO] [stderr] 139 | | match is_error(first_arg) { [INFO] [stderr] ... | [INFO] [stderr] 146 | | _ => {} [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 136 | if let Some(arg) = args.get(0) { [INFO] [stderr] 137 | let first_arg = arg.clone(); [INFO] [stderr] 138 | match is_error(first_arg) { [INFO] [stderr] 139 | true => { [INFO] [stderr] 140 | return arg.clone(); [INFO] [stderr] 141 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:139:37 [INFO] [stderr] | [INFO] [stderr] 139 | / match is_error(first_arg) { [INFO] [stderr] 140 | | true => { [INFO] [stderr] 141 | | return arg.clone(); [INFO] [stderr] 142 | | }, [INFO] [stderr] 143 | | _ => {} [INFO] [stderr] 144 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 139 | if is_error(first_arg) { [INFO] [stderr] 140 | return arg.clone(); [INFO] [stderr] 141 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:153:47 [INFO] [stderr] | [INFO] [stderr] 153 | ExpressionKind::StringLiteral{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: variable `sNode` should have a snake case name such as `s_node` [INFO] [stderr] --> src/evaluator.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | let sNode = NodeKind::StatementNode{statementKind: s}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | / match right { [INFO] [stderr] 207 | | ObjectKind::Integer{..} => { [INFO] [stderr] 208 | | return eval_integer_infix_expression(operator, left, right); [INFO] [stderr] 209 | | }, [INFO] [stderr] 210 | | _ => {} [INFO] [stderr] 211 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 206 | if let ObjectKind::Integer{..} = right { [INFO] [stderr] 207 | return eval_integer_infix_expression(operator, left, right); [INFO] [stderr] 208 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | / match right { [INFO] [stderr] 215 | | ObjectKind::Boolean{value: r_value} => { [INFO] [stderr] 216 | | match operator.as_ref() { [INFO] [stderr] 217 | | "==" => { [INFO] [stderr] ... | [INFO] [stderr] 226 | | _ => {} [INFO] [stderr] 227 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 214 | if let ObjectKind::Boolean{value: r_value} = right { [INFO] [stderr] 215 | match operator.as_ref() { [INFO] [stderr] 216 | "==" => { [INFO] [stderr] 217 | return native_bool_to_boolean_object(l_value == r_value); [INFO] [stderr] 218 | }, [INFO] [stderr] 219 | "!=" => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | / match left_clone.variant_eq(&right) { [INFO] [stderr] 232 | | true => { [INFO] [stderr] 233 | | return eval_string_infix_expression(operator, left.clone(), right) [INFO] [stderr] 234 | | }, [INFO] [stderr] 235 | | _ => {} [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 231 | if left_clone.variant_eq(&right) { [INFO] [stderr] 232 | return eval_string_infix_expression(operator, left.clone(), right) [INFO] [stderr] 233 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / match left.variant_eq(&right) { [INFO] [stderr] 241 | | false => { [INFO] [stderr] 242 | | panic!("infix operator not valid for types"); [INFO] [stderr] 243 | | }, [INFO] [stderr] 244 | | _ => {} [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 240 | if !left.variant_eq(&right) { [INFO] [stderr] 241 | panic!("infix operator not valid for types"); [INFO] [stderr] 242 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:270:5 [INFO] [stderr] | [INFO] [stderr] 270 | / match block { [INFO] [stderr] 271 | | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stderr] 272 | | for statement in statements { [INFO] [stderr] 273 | | result = eval(NodeKind::StatementNode{statementKind:*statement}, env); [INFO] [stderr] ... | [INFO] [stderr] 282 | | _ => {} [INFO] [stderr] 283 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 270 | if let StatementKind::BlockStatement{statements: statements, ..} = block { [INFO] [stderr] 271 | for statement in statements { [INFO] [stderr] 272 | result = eval(NodeKind::StatementNode{statementKind:*statement}, env); [INFO] [stderr] 273 | match result { [INFO] [stderr] 274 | ObjectKind::ReturnValue{..} | ObjectKind::Error{..} => { [INFO] [stderr] 275 | return result.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `statements:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:271:39 [INFO] [stderr] | [INFO] [stderr] 271 | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stderr] | -----------^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:315:5 [INFO] [stderr] | [INFO] [stderr] 315 | / match left { [INFO] [stderr] 316 | | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stderr] 317 | | match right { [INFO] [stderr] 318 | | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] ... | [INFO] [stderr] 353 | | _ => {} [INFO] [stderr] 354 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 315 | if let ObjectKind::Integer{slots: lslots, value: lvalue} = left { [INFO] [stderr] 316 | match right { [INFO] [stderr] 317 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] 318 | match operator.as_ref() { [INFO] [stderr] 319 | "+" => { [INFO] [stderr] 320 | return ObjectKind::Integer{slots: HashMap::new(), value: lvalue + rvalue}; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | / match right { [INFO] [stderr] 318 | | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] 319 | | match operator.as_ref() { [INFO] [stderr] 320 | | "+" => { [INFO] [stderr] ... | [INFO] [stderr] 350 | | _ => {} [INFO] [stderr] 351 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 317 | if let ObjectKind::Integer{slots: rslots, value: rvalue} = right { [INFO] [stderr] 318 | match operator.as_ref() { [INFO] [stderr] 319 | "+" => { [INFO] [stderr] 320 | return ObjectKind::Integer{slots: HashMap::new(), value: lvalue + rvalue}; [INFO] [stderr] 321 | }, [INFO] [stderr] 322 | "-" => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:359:5 [INFO] [stderr] | [INFO] [stderr] 359 | / match ie { [INFO] [stderr] 360 | | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] 361 | | match condition { [INFO] [stderr] 362 | | Some(c) => { [INFO] [stderr] ... | [INFO] [stderr] 390 | | _ => {} [INFO] [stderr] 391 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 359 | if let ExpressionKind::IfExpression{token, condition, consequence, alternative} = ie { [INFO] [stderr] 360 | match condition { [INFO] [stderr] 361 | Some(c) => { [INFO] [stderr] 362 | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 363 | match evaluated_condition { [INFO] [stderr] 364 | ObjectKind::Error{..} => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:361:13 [INFO] [stderr] | [INFO] [stderr] 361 | / match condition { [INFO] [stderr] 362 | | Some(c) => { [INFO] [stderr] 363 | | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 364 | | match evaluated_condition { [INFO] [stderr] ... | [INFO] [stderr] 387 | | _ => {} [INFO] [stderr] 388 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 361 | if let Some(c) = condition { [INFO] [stderr] 362 | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 363 | match evaluated_condition { [INFO] [stderr] 364 | ObjectKind::Error{..} => { [INFO] [stderr] 365 | return evaluated_condition; [INFO] [stderr] 366 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:370:33 [INFO] [stderr] | [INFO] [stderr] 370 | / match consequence { [INFO] [stderr] 371 | | Some(con) => { [INFO] [stderr] 372 | | return eval(NodeKind::StatementNode{statementKind:*con}, env); [INFO] [stderr] 373 | | }, [INFO] [stderr] 374 | | _ => {} [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 370 | if let Some(con) = consequence { [INFO] [stderr] 371 | return eval(NodeKind::StatementNode{statementKind:*con}, env); [INFO] [stderr] 372 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:377:33 [INFO] [stderr] | [INFO] [stderr] 377 | / match alternative { [INFO] [stderr] 378 | | Some(alt) => { [INFO] [stderr] 379 | | return eval(NodeKind::StatementNode{statementKind:*alt}, env); [INFO] [stderr] 380 | | }, [INFO] [stderr] 381 | | _ => {} [INFO] [stderr] 382 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 377 | if let Some(alt) = alternative { [INFO] [stderr] 378 | return eval(NodeKind::StatementNode{statementKind:*alt}, env); [INFO] [stderr] 379 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `expressioNode` should have a snake case name such as `expressio_node` [INFO] [stderr] --> src/evaluator.rs:417:13 [INFO] [stderr] | [INFO] [stderr] 417 | let expressioNode = NodeKind::ExpressionNode{expressionKind: *e}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:419:3 [INFO] [stderr] | [INFO] [stderr] 419 | match evaluated { [INFO] [stderr] | _________^ [INFO] [stderr] 420 | | ObjectKind::Error{..} => { [INFO] [stderr] 421 | | panic!("not implmented"); [INFO] [stderr] 422 | | }, [INFO] [stderr] 423 | | _ => {} [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 419 | if let ObjectKind::Error{..} = evaluated { [INFO] [stderr] 420 | panic!("not implmented"); [INFO] [stderr] 421 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `parameters:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:30 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | -----------^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `body:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:54 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | -----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `env:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:66 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:448:9 [INFO] [stderr] | [INFO] [stderr] 448 | / match param { [INFO] [stderr] 449 | | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] 450 | | match args.get(param_index) { [INFO] [stderr] 451 | | Some(arg) => { [INFO] [stderr] ... | [INFO] [stderr] 457 | | _ => {} [INFO] [stderr] 458 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 448 | if let ExpressionKind::Identifier{token, value} = param { [INFO] [stderr] 449 | match args.get(param_index) { [INFO] [stderr] 450 | Some(arg) => { [INFO] [stderr] 451 | closure.insert(value, arg.clone()); [INFO] [stderr] 452 | }, [INFO] [stderr] 453 | _ => {} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:450:17 [INFO] [stderr] | [INFO] [stderr] 450 | / match args.get(param_index) { [INFO] [stderr] 451 | | Some(arg) => { [INFO] [stderr] 452 | | closure.insert(value, arg.clone()); [INFO] [stderr] 453 | | }, [INFO] [stderr] 454 | | _ => {} [INFO] [stderr] 455 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 450 | if let Some(arg) = args.get(param_index) { [INFO] [stderr] 451 | closure.insert(value, arg.clone()); [INFO] [stderr] 452 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/evaluator.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | param_index = param_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:476:5 [INFO] [stderr] | [INFO] [stderr] 476 | / match operator != "+" { [INFO] [stderr] 477 | | true => { [INFO] [stderr] 478 | | return ObjectKind::Error{message: String::from("not a valid operator.")}; [INFO] [stderr] 479 | | }, [INFO] [stderr] 480 | | _ => {} [INFO] [stderr] 481 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 476 | if operator != "+" { [INFO] [stderr] 477 | return ObjectKind::Error{message: String::from("not a valid operator.")}; [INFO] [stderr] 478 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | / match stmt { [INFO] [stderr] 180 | | Some(x) => { [INFO] [stderr] 181 | | stmt_vec.push(*x); [INFO] [stderr] 182 | | }, [INFO] [stderr] 183 | | None => {} [INFO] [stderr] 184 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 179 | if let Some(x) = stmt { [INFO] [stderr] 180 | stmt_vec.push(*x); [INFO] [stderr] 181 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser.rs:214:19 [INFO] [stderr] | [INFO] [stderr] 214 | let msg = String::from(format!("expected next token to be {}, got {} instead", [INFO] [stderr] | ___________________^ [INFO] [stderr] 215 | | t.name, token.t_type.name)); [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 214 | let msg = format!("expected next token to be {}, got {} instead", [INFO] [stderr] 215 | t.name, token.t_type.name); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/parser.rs:394:9 [INFO] [stderr] | [INFO] [stderr] 394 | / let mut alternative = None; [INFO] [stderr] 395 | | if self.peek_token_is(token::ELSE) { [INFO] [stderr] 396 | | self.next_token(); [INFO] [stderr] 397 | | if !self.expect_peek(token::LBRACE) { [INFO] [stderr] ... | [INFO] [stderr] 400 | | alternative = self.parse_block_statement(); [INFO] [stderr] 401 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let alternative = if self.peek_token_is(token::ELSE) { ..; self.parse_block_statement() } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | / match stmt { [INFO] [stderr] 412 | | Some(x) => { [INFO] [stderr] 413 | | statements.push(x); [INFO] [stderr] 414 | | }, [INFO] [stderr] 415 | | None => {} [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 411 | if let Some(x) = stmt { [INFO] [stderr] 412 | statements.push(x); [INFO] [stderr] 413 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `argsUnwrapped` should have a snake case name such as `args_unwrapped` [INFO] [stderr] --> src/parser.rs:471:26 [INFO] [stderr] | [INFO] [stderr] 471 | Some(argsUnwrapped) => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parser.rs:282:13 [INFO] [stderr] | [INFO] [stderr] 282 | let mut prefix = self.prefix_parse_call(cur_token.clone()); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/object.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/object.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:75:33 [INFO] [stderr] | [INFO] [stderr] 75 | ObjectKind::Integer{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `message:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:78:31 [INFO] [stderr] | [INFO] [stderr] 78 | ObjectKind::Error{message: message, ..} => { [INFO] [stderr] | --------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | ObjectKind::StringObj{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `string` [INFO] [stderr] --> src/ast.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | fn string(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `WhileLiteral` [INFO] [stderr] --> src/ast.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | WhileLiteral{token: token::Token, condition: Box, consequence: Box}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `token_literal` [INFO] [stderr] --> src/ast.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | fn token_literal(self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `as_any` [INFO] [stderr] --> src/ast.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | pub fn as_any(&self) -> &Any { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove` [INFO] [stderr] --> src/environment.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn remove(&mut self, key: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `parse_call_arguments` [INFO] [stderr] --> src/parser.rs:485:5 [INFO] [stderr] | [INFO] [stderr] 485 | fn parse_call_arguments(&mut self) -> Option>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `prase_index_expression` [INFO] [stderr] --> src/parser.rs:534:5 [INFO] [stderr] | [INFO] [stderr] 534 | fn prase_index_expression(&mut self, left: Box) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BuiltIn` [INFO] [stderr] --> src/object.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | BuiltIn, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Array` [INFO] [stderr] --> src/object.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | Array{slots: HashMap, elements: Vec} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_from_slots` [INFO] [stderr] --> src/object.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | fn get_from_slots(self, key: String) -> ObjectKind { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `remove_from_slots` [INFO] [stderr] --> src/object.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | fn remove_from_slots(&mut self, key: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_slots` [INFO] [stderr] --> src/object.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | fn add_to_slots(&mut self, key: String, value: ObjectKind) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:48:41 [INFO] [stderr] | [INFO] [stderr] 48 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:62:41 [INFO] [stderr] | [INFO] [stderr] 62 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer.rs:76:41 [INFO] [stderr] | [INFO] [stderr] 76 | let mut l_literal = String::from(ch.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `ch.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/lexer.rs:487:32 [INFO] [stderr] | [INFO] [stderr] 487 | for output in expected.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: structure field `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/ast.rs:7:20 [INFO] [stderr] | [INFO] [stderr] 7 | ExpressionNode{expressionKind: ExpressionKind}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/ast.rs:8:19 [INFO] [stderr] | [INFO] [stderr] 8 | StatementNode{statementKind: StatementKind}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ast.rs:17:20 [INFO] [stderr] | [INFO] [stderr] 17 | if statements.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!statements.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: variable `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/ast.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/ast.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | NodeKind::StatementNode{statementKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:114:17 [INFO] [stderr] | [INFO] [stderr] 114 | / match right { [INFO] [stderr] 115 | | Some(x) => { [INFO] [stderr] 116 | | out.push_str(&x.string()); [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | None => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 114 | if let Some(x) = right { [INFO] [stderr] 115 | out.push_str(&x.string()); [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:125:17 [INFO] [stderr] | [INFO] [stderr] 125 | / match left { [INFO] [stderr] 126 | | Some(s) => { [INFO] [stderr] 127 | | out.push_str(&s.string()); [INFO] [stderr] 128 | | }, [INFO] [stderr] 129 | | _ => {} [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 125 | if let Some(s) = left { [INFO] [stderr] 126 | out.push_str(&s.string()); [INFO] [stderr] 127 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:134:17 [INFO] [stderr] | [INFO] [stderr] 134 | / match right { [INFO] [stderr] 135 | | Some(s) => { [INFO] [stderr] 136 | | out.push_str(&s.string()); [INFO] [stderr] 137 | | }, [INFO] [stderr] 138 | | _ => {} [INFO] [stderr] 139 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 134 | if let Some(s) = right { [INFO] [stderr] 135 | out.push_str(&s.string()); [INFO] [stderr] 136 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:148:17 [INFO] [stderr] | [INFO] [stderr] 148 | / match condition { [INFO] [stderr] 149 | | Some(c) => { [INFO] [stderr] 150 | | out.push_str(&c.string()); [INFO] [stderr] 151 | | }, [INFO] [stderr] 152 | | _ => {} [INFO] [stderr] 153 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 148 | if let Some(c) = condition { [INFO] [stderr] 149 | out.push_str(&c.string()); [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | / match consequence { [INFO] [stderr] 156 | | Some(c) => { [INFO] [stderr] 157 | | out.push_str(&c.string()); [INFO] [stderr] 158 | | }, [INFO] [stderr] 159 | | _ => {} [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 155 | if let Some(c) = consequence { [INFO] [stderr] 156 | out.push_str(&c.string()); [INFO] [stderr] 157 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | / match alternative { [INFO] [stderr] 163 | | Some(a) => { [INFO] [stderr] 164 | | out.push_str("else "); [INFO] [stderr] 165 | | out.push_str(&a.string()); [INFO] [stderr] 166 | | }, [INFO] [stderr] 167 | | _ => {} [INFO] [stderr] 168 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | if let Some(a) = alternative { [INFO] [stderr] 163 | out.push_str("else "); [INFO] [stderr] 164 | out.push_str(&a.string()); [INFO] [stderr] 165 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `argsVec` should have a snake case name such as `args_vec` [INFO] [stderr] --> src/ast.rs:187:21 [INFO] [stderr] | [INFO] [stderr] 187 | let mut argsVec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `elesVec` should have a snake case name such as `eles_vec` [INFO] [stderr] --> src/ast.rs:214:21 [INFO] [stderr] | [INFO] [stderr] 214 | let mut elesVec = vec![]; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | / match index { [INFO] [stderr] 229 | | Some(i) => { [INFO] [stderr] 230 | | out.push_str(&i.string()); [INFO] [stderr] 231 | | } [INFO] [stderr] 232 | | _ => {} [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 228 | if let Some(i) = index { [INFO] [stderr] 229 | out.push_str(&i.string()); [INFO] [stderr] 230 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | / match value { [INFO] [stderr] 264 | | Some(x) => { [INFO] [stderr] 265 | | out.push_str(&x.string()); [INFO] [stderr] 266 | | } [INFO] [stderr] 267 | | _ => {} [INFO] [stderr] 268 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 263 | if let Some(x) = value { [INFO] [stderr] 264 | out.push_str(&x.string()); [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:275:17 [INFO] [stderr] | [INFO] [stderr] 275 | / match return_value { [INFO] [stderr] 276 | | Some(rv) => { [INFO] [stderr] 277 | | out.push_str(&rv.string()); [INFO] [stderr] 278 | | } [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 275 | if let Some(rv) = return_value { [INFO] [stderr] 276 | out.push_str(&rv.string()); [INFO] [stderr] 277 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `statementKind` should have a snake case name such as `statement_kind` [INFO] [stderr] --> src/evaluator.rs:15:33 [INFO] [stderr] | [INFO] [stderr] 15 | NodeKind::StatementNode{statementKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:18:21 [INFO] [stderr] | [INFO] [stderr] 18 | / match value { [INFO] [stderr] 19 | | Some(v) => { [INFO] [stderr] 20 | | let val = eval(NodeKind::ExpressionNode{expressionKind: *v}, env); [INFO] [stderr] 21 | | match val { [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => {} [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 18 | if let Some(v) = value { [INFO] [stderr] 19 | let val = eval(NodeKind::ExpressionNode{expressionKind: *v}, env); [INFO] [stderr] 20 | match val { [INFO] [stderr] 21 | ObjectKind::Error{..} => { [INFO] [stderr] 22 | return val; [INFO] [stderr] 23 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | / match name { [INFO] [stderr] 27 | | ExpressionKind::Identifier{token, value: name_value} => { [INFO] [stderr] 28 | | env.insert(name_value, val); [INFO] [stderr] 29 | | }, [INFO] [stderr] 30 | | _ => {} [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | if let ExpressionKind::Identifier{token, value: name_value} = name { [INFO] [stderr] 27 | env.insert(name_value, val); [INFO] [stderr] 28 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `return_value:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:38:48 [INFO] [stderr] | [INFO] [stderr] 38 | StatementKind::ReturnStatement{return_value: return_value, ..} => { [INFO] [stderr] | -------------^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_shorthand_field_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:39:21 [INFO] [stderr] | [INFO] [stderr] 39 | / match return_value { [INFO] [stderr] 40 | | Some(return_val) => { [INFO] [stderr] 41 | | let val = eval(NodeKind::StatementNode{statementKind: *return_val}, env); [INFO] [stderr] 42 | | match is_error(val.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 50 | | None => {} [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 39 | if let Some(return_val) = return_value { [INFO] [stderr] 40 | let val = eval(NodeKind::StatementNode{statementKind: *return_val}, env); [INFO] [stderr] 41 | match is_error(val.clone()) { [INFO] [stderr] 42 | true => { [INFO] [stderr] 43 | return val.clone(); [INFO] [stderr] 44 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:42:29 [INFO] [stderr] | [INFO] [stderr] 42 | / match is_error(val.clone()) { [INFO] [stderr] 43 | | true => { [INFO] [stderr] 44 | | return val.clone(); [INFO] [stderr] 45 | | }, [INFO] [stderr] 46 | | _ => {} [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 42 | if is_error(val.clone()) { [INFO] [stderr] 43 | return val.clone(); [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `expressionKind` should have a snake case name such as `expression_kind` [INFO] [stderr] --> src/evaluator.rs:72:34 [INFO] [stderr] | [INFO] [stderr] 72 | NodeKind::ExpressionNode{expressionKind} => { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | / match right { [INFO] [stderr] 79 | | Some(r) => { [INFO] [stderr] 80 | | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 81 | | match eval_right { [INFO] [stderr] ... | [INFO] [stderr] 90 | | _ => {} [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 78 | if let Some(r) = right { [INFO] [stderr] 79 | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 80 | match eval_right { [INFO] [stderr] 81 | ObjectKind::Error{..} => { [INFO] [stderr] 82 | return eval_right; [INFO] [stderr] 83 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `operator:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:49 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | ---------^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `left:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:69 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | -----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `right:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:94:81 [INFO] [stderr] | [INFO] [stderr] 94 | ExpressionKind::InfixExpression{operator: operator, left: left, right: right, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | / match left { [INFO] [stderr] 96 | | Some(l) => { [INFO] [stderr] 97 | | let eval_left = eval(NodeKind::ExpressionNode{expressionKind: *l}, env); [INFO] [stderr] 98 | | match is_error(eval_left.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => {} [INFO] [stderr] 119 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 95 | if let Some(l) = left { [INFO] [stderr] 96 | let eval_left = eval(NodeKind::ExpressionNode{expressionKind: *l}, env); [INFO] [stderr] 97 | match is_error(eval_left.clone()) { [INFO] [stderr] 98 | true => { [INFO] [stderr] 99 | return eval_left.clone(); [INFO] [stderr] 100 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:98:29 [INFO] [stderr] | [INFO] [stderr] 98 | / match is_error(eval_left.clone()) { [INFO] [stderr] 99 | | true => { [INFO] [stderr] 100 | | return eval_left.clone(); [INFO] [stderr] 101 | | }, [INFO] [stderr] 102 | | _ => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 98 | if is_error(eval_left.clone()) { [INFO] [stderr] 99 | return eval_left.clone(); [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:104:29 [INFO] [stderr] | [INFO] [stderr] 104 | / match right { [INFO] [stderr] 105 | | Some(r) => { [INFO] [stderr] 106 | | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 107 | | match is_error(eval_right.clone()) { [INFO] [stderr] ... | [INFO] [stderr] 115 | | _ => {} [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 104 | if let Some(r) = right { [INFO] [stderr] 105 | let eval_right = eval(NodeKind::ExpressionNode{expressionKind: *r}, env); [INFO] [stderr] 106 | match is_error(eval_right.clone()) { [INFO] [stderr] 107 | true => { [INFO] [stderr] 108 | return eval_right.clone(); [INFO] [stderr] 109 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | / match is_error(eval_right.clone()) { [INFO] [stderr] 108 | | true => { [INFO] [stderr] 109 | | return eval_right.clone(); [INFO] [stderr] 110 | | }, [INFO] [stderr] 111 | | _ => {} [INFO] [stderr] 112 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 107 | if is_error(eval_right.clone()) { [INFO] [stderr] 108 | return eval_right.clone(); [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `function:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:130:48 [INFO] [stderr] | [INFO] [stderr] 130 | ExpressionKind::CallExpression{function: function, arguments, ..} => { [INFO] [stderr] | ---------^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:134:21 [INFO] [stderr] | [INFO] [stderr] 134 | / match args.len() == 1 { [INFO] [stderr] 135 | | true => { [INFO] [stderr] 136 | | match args.get(0) { [INFO] [stderr] 137 | | Some(arg) => { [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 134 | if args.len() == 1 { [INFO] [stderr] 135 | match args.get(0) { [INFO] [stderr] 136 | Some(arg) => { [INFO] [stderr] 137 | let first_arg = arg.clone(); [INFO] [stderr] 138 | match is_error(first_arg) { [INFO] [stderr] 139 | true => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:136:29 [INFO] [stderr] | [INFO] [stderr] 136 | / match args.get(0) { [INFO] [stderr] 137 | | Some(arg) => { [INFO] [stderr] 138 | | let first_arg = arg.clone(); [INFO] [stderr] 139 | | match is_error(first_arg) { [INFO] [stderr] ... | [INFO] [stderr] 146 | | _ => {} [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 136 | if let Some(arg) = args.get(0) { [INFO] [stderr] 137 | let first_arg = arg.clone(); [INFO] [stderr] 138 | match is_error(first_arg) { [INFO] [stderr] 139 | true => { [INFO] [stderr] 140 | return arg.clone(); [INFO] [stderr] 141 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:139:37 [INFO] [stderr] | [INFO] [stderr] 139 | / match is_error(first_arg) { [INFO] [stderr] 140 | | true => { [INFO] [stderr] 141 | | return arg.clone(); [INFO] [stderr] 142 | | }, [INFO] [stderr] 143 | | _ => {} [INFO] [stderr] 144 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 139 | if is_error(first_arg) { [INFO] [stderr] 140 | return arg.clone(); [INFO] [stderr] 141 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:153:47 [INFO] [stderr] | [INFO] [stderr] 153 | ExpressionKind::StringLiteral{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: variable `sNode` should have a snake case name such as `s_node` [INFO] [stderr] --> src/evaluator.rs:174:13 [INFO] [stderr] | [INFO] [stderr] 174 | let sNode = NodeKind::StatementNode{statementKind: s}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | / match right { [INFO] [stderr] 207 | | ObjectKind::Integer{..} => { [INFO] [stderr] 208 | | return eval_integer_infix_expression(operator, left, right); [INFO] [stderr] 209 | | }, [INFO] [stderr] 210 | | _ => {} [INFO] [stderr] 211 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 206 | if let ObjectKind::Integer{..} = right { [INFO] [stderr] 207 | return eval_integer_infix_expression(operator, left, right); [INFO] [stderr] 208 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | / match right { [INFO] [stderr] 215 | | ObjectKind::Boolean{value: r_value} => { [INFO] [stderr] 216 | | match operator.as_ref() { [INFO] [stderr] 217 | | "==" => { [INFO] [stderr] ... | [INFO] [stderr] 226 | | _ => {} [INFO] [stderr] 227 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 214 | if let ObjectKind::Boolean{value: r_value} = right { [INFO] [stderr] 215 | match operator.as_ref() { [INFO] [stderr] 216 | "==" => { [INFO] [stderr] 217 | return native_bool_to_boolean_object(l_value == r_value); [INFO] [stderr] 218 | }, [INFO] [stderr] 219 | "!=" => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | / match left_clone.variant_eq(&right) { [INFO] [stderr] 232 | | true => { [INFO] [stderr] 233 | | return eval_string_infix_expression(operator, left.clone(), right) [INFO] [stderr] 234 | | }, [INFO] [stderr] 235 | | _ => {} [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 231 | if left_clone.variant_eq(&right) { [INFO] [stderr] 232 | return eval_string_infix_expression(operator, left.clone(), right) [INFO] [stderr] 233 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / match left.variant_eq(&right) { [INFO] [stderr] 241 | | false => { [INFO] [stderr] 242 | | panic!("infix operator not valid for types"); [INFO] [stderr] 243 | | }, [INFO] [stderr] 244 | | _ => {} [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 240 | if !left.variant_eq(&right) { [INFO] [stderr] 241 | panic!("infix operator not valid for types"); [INFO] [stderr] 242 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:270:5 [INFO] [stderr] | [INFO] [stderr] 270 | / match block { [INFO] [stderr] 271 | | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stderr] 272 | | for statement in statements { [INFO] [stderr] 273 | | result = eval(NodeKind::StatementNode{statementKind:*statement}, env); [INFO] [stderr] ... | [INFO] [stderr] 282 | | _ => {} [INFO] [stderr] 283 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 270 | if let StatementKind::BlockStatement{statements: statements, ..} = block { [INFO] [stderr] 271 | for statement in statements { [INFO] [stderr] 272 | result = eval(NodeKind::StatementNode{statementKind:*statement}, env); [INFO] [stderr] 273 | match result { [INFO] [stderr] 274 | ObjectKind::ReturnValue{..} | ObjectKind::Error{..} => { [INFO] [stderr] 275 | return result.clone(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the `statements:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:271:39 [INFO] [stderr] | [INFO] [stderr] 271 | StatementKind::BlockStatement{statements: statements, ..} => { [INFO] [stderr] | -----------^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:315:5 [INFO] [stderr] | [INFO] [stderr] 315 | / match left { [INFO] [stderr] 316 | | ObjectKind::Integer{slots: lslots, value: lvalue} => { [INFO] [stderr] 317 | | match right { [INFO] [stderr] 318 | | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] ... | [INFO] [stderr] 353 | | _ => {} [INFO] [stderr] 354 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 315 | if let ObjectKind::Integer{slots: lslots, value: lvalue} = left { [INFO] [stderr] 316 | match right { [INFO] [stderr] 317 | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] 318 | match operator.as_ref() { [INFO] [stderr] 319 | "+" => { [INFO] [stderr] 320 | return ObjectKind::Integer{slots: HashMap::new(), value: lvalue + rvalue}; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | / match right { [INFO] [stderr] 318 | | ObjectKind::Integer{slots: rslots, value: rvalue} => { [INFO] [stderr] 319 | | match operator.as_ref() { [INFO] [stderr] 320 | | "+" => { [INFO] [stderr] ... | [INFO] [stderr] 350 | | _ => {} [INFO] [stderr] 351 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 317 | if let ObjectKind::Integer{slots: rslots, value: rvalue} = right { [INFO] [stderr] 318 | match operator.as_ref() { [INFO] [stderr] 319 | "+" => { [INFO] [stderr] 320 | return ObjectKind::Integer{slots: HashMap::new(), value: lvalue + rvalue}; [INFO] [stderr] 321 | }, [INFO] [stderr] 322 | "-" => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:359:5 [INFO] [stderr] | [INFO] [stderr] 359 | / match ie { [INFO] [stderr] 360 | | ExpressionKind::IfExpression{token, condition, consequence, alternative} => { [INFO] [stderr] 361 | | match condition { [INFO] [stderr] 362 | | Some(c) => { [INFO] [stderr] ... | [INFO] [stderr] 390 | | _ => {} [INFO] [stderr] 391 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 359 | if let ExpressionKind::IfExpression{token, condition, consequence, alternative} = ie { [INFO] [stderr] 360 | match condition { [INFO] [stderr] 361 | Some(c) => { [INFO] [stderr] 362 | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 363 | match evaluated_condition { [INFO] [stderr] 364 | ObjectKind::Error{..} => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:361:13 [INFO] [stderr] | [INFO] [stderr] 361 | / match condition { [INFO] [stderr] 362 | | Some(c) => { [INFO] [stderr] 363 | | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 364 | | match evaluated_condition { [INFO] [stderr] ... | [INFO] [stderr] 387 | | _ => {} [INFO] [stderr] 388 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 361 | if let Some(c) = condition { [INFO] [stderr] 362 | let evaluated_condition = eval(NodeKind::ExpressionNode{expressionKind:*c}, env); [INFO] [stderr] 363 | match evaluated_condition { [INFO] [stderr] 364 | ObjectKind::Error{..} => { [INFO] [stderr] 365 | return evaluated_condition; [INFO] [stderr] 366 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:370:33 [INFO] [stderr] | [INFO] [stderr] 370 | / match consequence { [INFO] [stderr] 371 | | Some(con) => { [INFO] [stderr] 372 | | return eval(NodeKind::StatementNode{statementKind:*con}, env); [INFO] [stderr] 373 | | }, [INFO] [stderr] 374 | | _ => {} [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 370 | if let Some(con) = consequence { [INFO] [stderr] 371 | return eval(NodeKind::StatementNode{statementKind:*con}, env); [INFO] [stderr] 372 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:377:33 [INFO] [stderr] | [INFO] [stderr] 377 | / match alternative { [INFO] [stderr] 378 | | Some(alt) => { [INFO] [stderr] 379 | | return eval(NodeKind::StatementNode{statementKind:*alt}, env); [INFO] [stderr] 380 | | }, [INFO] [stderr] 381 | | _ => {} [INFO] [stderr] 382 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 377 | if let Some(alt) = alternative { [INFO] [stderr] 378 | return eval(NodeKind::StatementNode{statementKind:*alt}, env); [INFO] [stderr] 379 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `expressioNode` should have a snake case name such as `expressio_node` [INFO] [stderr] --> src/evaluator.rs:417:13 [INFO] [stderr] | [INFO] [stderr] 417 | let expressioNode = NodeKind::ExpressionNode{expressionKind: *e}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:419:3 [INFO] [stderr] | [INFO] [stderr] 419 | match evaluated { [INFO] [stderr] | _________^ [INFO] [stderr] 420 | | ObjectKind::Error{..} => { [INFO] [stderr] 421 | | panic!("not implmented"); [INFO] [stderr] 422 | | }, [INFO] [stderr] 423 | | _ => {} [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 419 | if let ObjectKind::Error{..} = evaluated { [INFO] [stderr] 420 | panic!("not implmented"); [INFO] [stderr] 421 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `parameters:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:30 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | -----------^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `body:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:54 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | -----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `env:` in this pattern is redundant [INFO] [stderr] --> src/evaluator.rs:432:66 [INFO] [stderr] | [INFO] [stderr] 432 | ObjectKind::Function{parameters: parameters, body: body, env: env, ..} => { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:448:9 [INFO] [stderr] | [INFO] [stderr] 448 | / match param { [INFO] [stderr] 449 | | ExpressionKind::Identifier{token, value} => { [INFO] [stderr] 450 | | match args.get(param_index) { [INFO] [stderr] 451 | | Some(arg) => { [INFO] [stderr] ... | [INFO] [stderr] 457 | | _ => {} [INFO] [stderr] 458 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 448 | if let ExpressionKind::Identifier{token, value} = param { [INFO] [stderr] 449 | match args.get(param_index) { [INFO] [stderr] 450 | Some(arg) => { [INFO] [stderr] 451 | closure.insert(value, arg.clone()); [INFO] [stderr] 452 | }, [INFO] [stderr] 453 | _ => {} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/evaluator.rs:450:17 [INFO] [stderr] | [INFO] [stderr] 450 | / match args.get(param_index) { [INFO] [stderr] 451 | | Some(arg) => { [INFO] [stderr] 452 | | closure.insert(value, arg.clone()); [INFO] [stderr] 453 | | }, [INFO] [stderr] 454 | | _ => {} [INFO] [stderr] 455 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 450 | if let Some(arg) = args.get(param_index) { [INFO] [stderr] 451 | closure.insert(value, arg.clone()); [INFO] [stderr] 452 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/evaluator.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | param_index = param_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/evaluator.rs:476:5 [INFO] [stderr] | [INFO] [stderr] 476 | / match operator != "+" { [INFO] [stderr] 477 | | true => { [INFO] [stderr] 478 | | return ObjectKind::Error{message: String::from("not a valid operator.")}; [INFO] [stderr] 479 | | }, [INFO] [stderr] 480 | | _ => {} [INFO] [stderr] 481 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 476 | if operator != "+" { [INFO] [stderr] 477 | return ObjectKind::Error{message: String::from("not a valid operator.")}; [INFO] [stderr] 478 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | / match stmt { [INFO] [stderr] 180 | | Some(x) => { [INFO] [stderr] 181 | | stmt_vec.push(*x); [INFO] [stderr] 182 | | }, [INFO] [stderr] 183 | | None => {} [INFO] [stderr] 184 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 179 | if let Some(x) = stmt { [INFO] [stderr] 180 | stmt_vec.push(*x); [INFO] [stderr] 181 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser.rs:214:19 [INFO] [stderr] | [INFO] [stderr] 214 | let msg = String::from(format!("expected next token to be {}, got {} instead", [INFO] [stderr] | ___________________^ [INFO] [stderr] 215 | | t.name, token.t_type.name)); [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 214 | let msg = format!("expected next token to be {}, got {} instead", [INFO] [stderr] 215 | t.name, token.t_type.name); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/parser.rs:394:9 [INFO] [stderr] | [INFO] [stderr] 394 | / let mut alternative = None; [INFO] [stderr] 395 | | if self.peek_token_is(token::ELSE) { [INFO] [stderr] 396 | | self.next_token(); [INFO] [stderr] 397 | | if !self.expect_peek(token::LBRACE) { [INFO] [stderr] ... | [INFO] [stderr] 400 | | alternative = self.parse_block_statement(); [INFO] [stderr] 401 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let alternative = if self.peek_token_is(token::ELSE) { ..; self.parse_block_statement() } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | / match stmt { [INFO] [stderr] 412 | | Some(x) => { [INFO] [stderr] 413 | | statements.push(x); [INFO] [stderr] 414 | | }, [INFO] [stderr] 415 | | None => {} [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 411 | if let Some(x) = stmt { [INFO] [stderr] 412 | statements.push(x); [INFO] [stderr] 413 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `argsUnwrapped` should have a snake case name such as `args_unwrapped` [INFO] [stderr] --> src/parser.rs:471:26 [INFO] [stderr] | [INFO] [stderr] 471 | Some(argsUnwrapped) => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/object.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/object.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | Function{slots: HashMap, parameters: Vec, body: StatementKind, env: Environment}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:75:33 [INFO] [stderr] | [INFO] [stderr] 75 | ObjectKind::Integer{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `message:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:78:31 [INFO] [stderr] | [INFO] [stderr] 78 | ObjectKind::Error{message: message, ..} => { [INFO] [stderr] | --------^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] warning: the `value:` in this pattern is redundant [INFO] [stderr] --> src/object.rs:84:35 [INFO] [stderr] | [INFO] [stderr] 84 | ObjectKind::StringObj{value: value, ..} => { [INFO] [stderr] | ------^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.45s [INFO] running `"docker" "inspect" "0485833c0715d4f57c76c0ffd0c84fd0cc20ffba31838656172296024f015060"` [INFO] running `"docker" "rm" "-f" "0485833c0715d4f57c76c0ffd0c84fd0cc20ffba31838656172296024f015060"` [INFO] [stdout] 0485833c0715d4f57c76c0ffd0c84fd0cc20ffba31838656172296024f015060