[INFO] updating cached repository Wyverald/basic-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Wyverald/basic-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Wyverald/basic-rs" "work/ex/clippy-test-run/sources/stable/gh/Wyverald/basic-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Wyverald/basic-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Wyverald/basic-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Wyverald/basic-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Wyverald/basic-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d253072f7381a7a528cb645a91ac06f76a13bb95 [INFO] sha for GitHub repo Wyverald/basic-rs: d253072f7381a7a528cb645a91ac06f76a13bb95 [INFO] validating manifest of Wyverald/basic-rs 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 Wyverald/basic-rs 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 Wyverald/basic-rs [INFO] finished frobbing Wyverald/basic-rs [INFO] frobbed toml for Wyverald/basic-rs written to work/ex/clippy-test-run/sources/stable/gh/Wyverald/basic-rs/Cargo.toml [INFO] started frobbing Wyverald/basic-rs [INFO] finished frobbing Wyverald/basic-rs [INFO] frobbed toml for Wyverald/basic-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Wyverald/basic-rs/Cargo.toml [INFO] crate Wyverald/basic-rs 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 Wyverald/basic-rs against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Wyverald/basic-rs:/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 -Dclippy::into_iter_on_array" "-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] 1c52a631526adf975e8a2051afcd4c30482f9ff19f11e12ff666f006785b22f4 [INFO] running `"docker" "start" "-a" "1c52a631526adf975e8a2051afcd4c30482f9ff19f11e12ff666f006785b22f4"` [INFO] [stderr] Checking basic-rs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:51:29 [INFO] [stderr] | [INFO] [stderr] 51 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:235:37 [INFO] [stderr] | [INFO] [stderr] 235 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/interpreter.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [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/lexer/token.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [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/lexer/token.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/mod.rs:142:25 [INFO] [stderr] | [INFO] [stderr] 142 | follow_type: follow_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `follow_type` [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/mod.rs:202:21 [INFO] [stderr] | [INFO] [stderr] 202 | condition: condition, [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/mod.rs:211:53 [INFO] [stderr] | [INFO] [stderr] 211 | let variable = Identifier { name: name, position: token.position }; [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/mod.rs:244:21 [INFO] [stderr] | [INFO] [stderr] 244 | variable: variable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `variable` [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/mod.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/mod.rs:246:21 [INFO] [stderr] | [INFO] [stderr] 246 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/mod.rs:247:21 [INFO] [stderr] | [INFO] [stderr] 247 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [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/mod.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:51:29 [INFO] [stderr] | [INFO] [stderr] 51 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/interpreter.rs:235:37 [INFO] [stderr] | [INFO] [stderr] 235 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/interpreter.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [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/lexer/token.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | content: content, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `content` [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/lexer/token.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | position: position, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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/mod.rs:142:25 [INFO] [stderr] | [INFO] [stderr] 142 | follow_type: follow_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `follow_type` [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/mod.rs:202:21 [INFO] [stderr] | [INFO] [stderr] 202 | condition: condition, [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/mod.rs:211:53 [INFO] [stderr] | [INFO] [stderr] 211 | let variable = Identifier { name: name, position: token.position }; [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/mod.rs:244:21 [INFO] [stderr] | [INFO] [stderr] 244 | variable: variable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `variable` [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/mod.rs:245:21 [INFO] [stderr] | [INFO] [stderr] 245 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [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/mod.rs:246:21 [INFO] [stderr] | [INFO] [stderr] 246 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [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/mod.rs:247:21 [INFO] [stderr] | [INFO] [stderr] 247 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [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/mod.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:35:53 [INFO] [stderr] | [INFO] [stderr] 35 | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:35:68 [INFO] [stderr] | [INFO] [stderr] 35 | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Def { name: ref identifier, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:114:55 [INFO] [stderr] | [INFO] [stderr] 114 | &Statement::For { ref variable, ref from, to: _, step: _ } => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:114:62 [INFO] [stderr] | [INFO] [stderr] 114 | &Statement::For { ref variable, ref from, to: _, step: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { ref variable, ref from, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:120:55 [INFO] [stderr] | [INFO] [stderr] 120 | if let Statement::For { ref variable, from: _, ref to, ref step } = [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { ref variable, ref to, ref step, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:252:46 [INFO] [stderr] | [INFO] [stderr] 252 | Statement::Def { name: _, ref parameters, ref body } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Def { ref parameters, ref body, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/mod.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return char; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `char` [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/mod.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | return Ok(Token::new(content, cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(content, cur_position))` [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/mod.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | return Ok(Token::new(TokenContent::keyword_or_identifier(s), cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(TokenContent::keyword_or_identifier(s), cur_position))` [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/mod.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return Ok(Token::new(content, cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(content, cur_position))` [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/mod.rs:153:17 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(Token::new(TokenContent::StringLiteral(s), cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(TokenContent::StringLiteral(s), cur_position))` [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/mod.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | return self.make_error(ErrorKind::UnexpectedCharacter) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.make_error(ErrorKind::UnexpectedCharacter)` [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: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | from: _, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:93:17 [INFO] [stderr] | [INFO] [stderr] 93 | to: _, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | step: _, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { variable: ref identifier, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/mod.rs:273:18 [INFO] [stderr] | [INFO] [stderr] 273 | _ => return Err(Error::unexpected_token(token, "expected statement")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::unexpected_token(token, "expected 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: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:35:53 [INFO] [stderr] | [INFO] [stderr] 35 | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:35:68 [INFO] [stderr] | [INFO] [stderr] 35 | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Def { name: ref identifier, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:114:55 [INFO] [stderr] | [INFO] [stderr] 114 | &Statement::For { ref variable, ref from, to: _, step: _ } => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:114:62 [INFO] [stderr] | [INFO] [stderr] 114 | &Statement::For { ref variable, ref from, to: _, step: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { ref variable, ref from, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:120:55 [INFO] [stderr] | [INFO] [stderr] 120 | if let Statement::For { ref variable, from: _, ref to, ref step } = [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { ref variable, ref to, ref step, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:252:46 [INFO] [stderr] | [INFO] [stderr] 252 | Statement::Def { name: _, ref parameters, ref body } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Def { ref parameters, ref body, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/mod.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return char; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `char` [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/mod.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | return Ok(Token::new(content, cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(content, cur_position))` [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/mod.rs:113:17 [INFO] [stderr] | [INFO] [stderr] 113 | return Ok(Token::new(TokenContent::keyword_or_identifier(s), cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(TokenContent::keyword_or_identifier(s), cur_position))` [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/mod.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return Ok(Token::new(content, cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(content, cur_position))` [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/mod.rs:153:17 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(Token::new(TokenContent::StringLiteral(s), cur_position)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::new(TokenContent::StringLiteral(s), cur_position))` [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/mod.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | return self.make_error(ErrorKind::UnexpectedCharacter) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.make_error(ErrorKind::UnexpectedCharacter)` [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: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:92:17 [INFO] [stderr] | [INFO] [stderr] 92 | from: _, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:93:17 [INFO] [stderr] | [INFO] [stderr] 93 | to: _, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/parser/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | step: _, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `For { variable: ref identifier, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/mod.rs:273:18 [INFO] [stderr] | [INFO] [stderr] 273 | _ => return Err(Error::unexpected_token(token, "expected statement")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::unexpected_token(token, "expected 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: method is never used: `reset` [INFO] [stderr] --> src/interpreter.rs:440:5 [INFO] [stderr] | [INFO] [stderr] 440 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / For { [INFO] [stderr] 31 | | variable: Identifier, [INFO] [stderr] 32 | | from: Expression, [INFO] [stderr] 33 | | to: Expression, [INFO] [stderr] 34 | | step: Option, [INFO] [stderr] 35 | | }, [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/ast.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / For { [INFO] [stderr] 31 | | variable: Identifier, [INFO] [stderr] 32 | | from: Expression, [INFO] [stderr] 33 | | to: Expression, [INFO] [stderr] 34 | | step: Option, [INFO] [stderr] 35 | | }, [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: method is never used: `reset` [INFO] [stderr] --> src/interpreter.rs:440:5 [INFO] [stderr] | [INFO] [stderr] 440 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / match statement { [INFO] [stderr] 35 | | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] 36 | | self.fns.insert(identifier.name.clone(), self.pc); [INFO] [stderr] 37 | | Ok(ExecutionResult::NextStatement) [INFO] [stderr] ... | [INFO] [stderr] 144 | | }, [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | match *statement { [INFO] [stderr] 35 | Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] 36 | self.fns.insert(identifier.name.clone(), self.pc); [INFO] [stderr] 37 | Ok(ExecutionResult::NextStatement) [INFO] [stderr] 38 | }, [INFO] [stderr] 39 | Statement::Print(ref print_exprs) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | / match else_branch { [INFO] [stderr] 78 | | &Some(ref stmt) => self.execute(ast, stmt.as_ref()), [INFO] [stderr] 79 | | &None => Ok(ExecutionResult::NextStatement), [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | match *else_branch { [INFO] [stderr] 78 | Some(ref stmt) => self.execute(ast, stmt.as_ref()), [INFO] [stderr] 79 | None => Ok(ExecutionResult::NextStatement), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/ast.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / For { [INFO] [stderr] 31 | | variable: Identifier, [INFO] [stderr] 32 | | from: Expression, [INFO] [stderr] 33 | | to: Expression, [INFO] [stderr] 34 | | step: Option, [INFO] [stderr] 35 | | }, [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/ast.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / For { [INFO] [stderr] 31 | | variable: Identifier, [INFO] [stderr] 32 | | from: Expression, [INFO] [stderr] 33 | | to: Expression, [INFO] [stderr] 34 | | step: Option, [INFO] [stderr] 35 | | }, [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:124:40 [INFO] [stderr] | [INFO] [stderr] 124 | let step_val = match step { [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 125 | | &Some(ref step_expr) => self.evaluate(ast, step_expr)?, [INFO] [stderr] 126 | | &None => Value::Integer(1), [INFO] [stderr] 127 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | let step_val = match *step { [INFO] [stderr] 125 | Some(ref step_expr) => self.evaluate(ast, step_expr)?, [INFO] [stderr] 126 | None => Value::Integer(1), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / match expr { [INFO] [stderr] 150 | | &Expression::Binary(bin_op, ref expr1, ref expr2) => { [INFO] [stderr] 151 | | let val1 = self.evaluate(ast, expr1)?; [INFO] [stderr] 152 | | let val2 = self.evaluate(ast, expr2)?; [INFO] [stderr] ... | [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 149 | match *expr { [INFO] [stderr] 150 | Expression::Binary(bin_op, ref expr1, ref expr2) => { [INFO] [stderr] 151 | let val1 = self.evaluate(ast, expr1)?; [INFO] [stderr] 152 | let val2 = self.evaluate(ast, expr2)?; [INFO] [stderr] 153 | Ok(match bin_op { [INFO] [stderr] 154 | BinaryOperator::Divide => val1 / val2, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / match statement { [INFO] [stderr] 35 | | &Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] 36 | | self.fns.insert(identifier.name.clone(), self.pc); [INFO] [stderr] 37 | | Ok(ExecutionResult::NextStatement) [INFO] [stderr] ... | [INFO] [stderr] 144 | | }, [INFO] [stderr] 145 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 34 | match *statement { [INFO] [stderr] 35 | Statement::Def { name: ref identifier, parameters: _, body: _ } => { [INFO] [stderr] 36 | self.fns.insert(identifier.name.clone(), self.pc); [INFO] [stderr] 37 | Ok(ExecutionResult::NextStatement) [INFO] [stderr] 38 | }, [INFO] [stderr] 39 | Statement::Print(ref print_exprs) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | / match self { [INFO] [stderr] 289 | | &Value::Integer(i) => Some(i), [INFO] [stderr] 290 | | _ => None, [INFO] [stderr] 291 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 288 | match *self { [INFO] [stderr] 289 | Value::Integer(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | / match else_branch { [INFO] [stderr] 78 | | &Some(ref stmt) => self.execute(ast, stmt.as_ref()), [INFO] [stderr] 79 | | &None => Ok(ExecutionResult::NextStatement), [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 77 | match *else_branch { [INFO] [stderr] 78 | Some(ref stmt) => self.execute(ast, stmt.as_ref()), [INFO] [stderr] 79 | None => Ok(ExecutionResult::NextStatement), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:295:9 [INFO] [stderr] | [INFO] [stderr] 295 | / match self { [INFO] [stderr] 296 | | &Value::Integer(i) => Some(i as f64), [INFO] [stderr] 297 | | &Value::Float(f) => Some(f), [INFO] [stderr] 298 | | _ => None, [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *self { [INFO] [stderr] 296 | Value::Integer(i) => Some(i as f64), [INFO] [stderr] 297 | Value::Float(f) => Some(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/interpreter.rs:296:40 [INFO] [stderr] | [INFO] [stderr] 296 | &Value::Integer(i) => Some(i as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:124:40 [INFO] [stderr] | [INFO] [stderr] 124 | let step_val = match step { [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 125 | | &Some(ref step_expr) => self.evaluate(ast, step_expr)?, [INFO] [stderr] 126 | | &None => Value::Integer(1), [INFO] [stderr] 127 | | }; [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | let step_val = match *step { [INFO] [stderr] 125 | Some(ref step_expr) => self.evaluate(ast, step_expr)?, [INFO] [stderr] 126 | None => Value::Integer(1), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | / if let &mut Value::String(ref mut s) = self { [INFO] [stderr] 408 | | s.push_str(&other.to_string()); [INFO] [stderr] 409 | | } else { [INFO] [stderr] 410 | | *self = self.clone() + other; [INFO] [stderr] 411 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | if let Value::String(ref mut s) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | / match expr { [INFO] [stderr] 150 | | &Expression::Binary(bin_op, ref expr1, ref expr2) => { [INFO] [stderr] 151 | | let val1 = self.evaluate(ast, expr1)?; [INFO] [stderr] 152 | | let val2 = self.evaluate(ast, expr2)?; [INFO] [stderr] ... | [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 149 | match *expr { [INFO] [stderr] 150 | Expression::Binary(bin_op, ref expr1, ref expr2) => { [INFO] [stderr] 151 | let val1 = self.evaluate(ast, expr1)?; [INFO] [stderr] 152 | let val2 = self.evaluate(ast, expr2)?; [INFO] [stderr] 153 | Ok(match bin_op { [INFO] [stderr] 154 | BinaryOperator::Divide => val1 / val2, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:417:9 [INFO] [stderr] | [INFO] [stderr] 417 | / match self { [INFO] [stderr] 418 | | &Value::Integer(i) => write!(f, " {} ", i), [INFO] [stderr] 419 | | &Value::Float(fl) => write!(f, " {} ", fl), [INFO] [stderr] 420 | | &Value::String(ref s) => write!(f, "{}", s), [INFO] [stderr] 421 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 417 | match *self { [INFO] [stderr] 418 | Value::Integer(i) => write!(f, " {} ", i), [INFO] [stderr] 419 | Value::Float(fl) => write!(f, " {} ", fl), [INFO] [stderr] 420 | Value::String(ref s) => write!(f, "{}", s), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/interpreter.rs:451:13 [INFO] [stderr] | [INFO] [stderr] 451 | let ref statement = self.ast.statements[self.environment.pc.0]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------------------------------------- help: try: `let statement = &self.ast.statements[self.environment.pc.0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | / match self { [INFO] [stderr] 289 | | &Value::Integer(i) => Some(i), [INFO] [stderr] 290 | | _ => None, [INFO] [stderr] 291 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 288 | match *self { [INFO] [stderr] 289 | Value::Integer(i) => Some(i), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:295:9 [INFO] [stderr] | [INFO] [stderr] 295 | / match self { [INFO] [stderr] 296 | | &Value::Integer(i) => Some(i as f64), [INFO] [stderr] 297 | | &Value::Float(f) => Some(f), [INFO] [stderr] 298 | | _ => None, [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 295 | match *self { [INFO] [stderr] 296 | Value::Integer(i) => Some(i as f64), [INFO] [stderr] 297 | Value::Float(f) => Some(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/interpreter.rs:296:40 [INFO] [stderr] | [INFO] [stderr] 296 | &Value::Integer(i) => Some(i as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | / if let &mut Value::String(ref mut s) = self { [INFO] [stderr] 408 | | s.push_str(&other.to_string()); [INFO] [stderr] 409 | | } else { [INFO] [stderr] 410 | | *self = self.clone() + other; [INFO] [stderr] 411 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | if let Value::String(ref mut s) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:417:9 [INFO] [stderr] | [INFO] [stderr] 417 | / match self { [INFO] [stderr] 418 | | &Value::Integer(i) => write!(f, " {} ", i), [INFO] [stderr] 419 | | &Value::Float(fl) => write!(f, " {} ", fl), [INFO] [stderr] 420 | | &Value::String(ref s) => write!(f, "{}", s), [INFO] [stderr] 421 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 417 | match *self { [INFO] [stderr] 418 | Value::Integer(i) => write!(f, " {} ", i), [INFO] [stderr] 419 | Value::Float(fl) => write!(f, " {} ", fl), [INFO] [stderr] 420 | Value::String(ref s) => write!(f, "{}", s), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/interpreter.rs:451:13 [INFO] [stderr] | [INFO] [stderr] 451 | let ref statement = self.ast.statements[self.environment.pc.0]; [INFO] [stderr] | ----^^^^^^^^^^^^^---------------------------------------------- help: try: `let statement = &self.ast.statements[self.environment.pc.0];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/lexer/mod.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / if self.cur_line.is_none() { [INFO] [stderr] 43 | | return None; [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.cur_line?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/lexer/mod.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / if self.cur_line.is_none() { [INFO] [stderr] 43 | | return None; [INFO] [stderr] 44 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.cur_line?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parser/mod.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | / if let &Statement::For { [INFO] [stderr] 91 | | variable: ref identifier, [INFO] [stderr] 92 | | from: _, [INFO] [stderr] 93 | | to: _, [INFO] [stderr] ... | [INFO] [stderr] 99 | | }) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 90 | if let Statement::For { [INFO] [stderr] 91 | variable: ref identifier, [INFO] [stderr] 92 | from: _, [INFO] [stderr] 93 | to: _, [INFO] [stderr] 94 | step: _, [INFO] [stderr] 95 | } = statement { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parser/mod.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | / if let &Statement::For { [INFO] [stderr] 91 | | variable: ref identifier, [INFO] [stderr] 92 | | from: _, [INFO] [stderr] 93 | | to: _, [INFO] [stderr] ... | [INFO] [stderr] 99 | | }) [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 90 | if let Statement::For { [INFO] [stderr] 91 | variable: ref identifier, [INFO] [stderr] 92 | from: _, [INFO] [stderr] 93 | to: _, [INFO] [stderr] 94 | step: _, [INFO] [stderr] 95 | } = statement { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser/mod.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | / loop { [INFO] [stderr] 400 | | match self.peek_token()?.content { [INFO] [stderr] 401 | | TokenContent::Comma => (), [INFO] [stderr] 402 | | _ => break, [INFO] [stderr] ... | [INFO] [stderr] 405 | | arguments.push(self.parse_expression()?); [INFO] [stderr] 406 | | } [INFO] [stderr] | |_____________________^ help: try: `while let TokenContent::Comma = self.peek_token()?.content { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser/mod.rs:399:21 [INFO] [stderr] | [INFO] [stderr] 399 | / loop { [INFO] [stderr] 400 | | match self.peek_token()?.content { [INFO] [stderr] 401 | | TokenContent::Comma => (), [INFO] [stderr] 402 | | _ => break, [INFO] [stderr] ... | [INFO] [stderr] 405 | | arguments.push(self.parse_expression()?); [INFO] [stderr] 406 | | } [INFO] [stderr] | |_____________________^ help: try: `while let TokenContent::Comma = self.peek_token()?.content { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.92s [INFO] running `"docker" "inspect" "1c52a631526adf975e8a2051afcd4c30482f9ff19f11e12ff666f006785b22f4"` [INFO] running `"docker" "rm" "-f" "1c52a631526adf975e8a2051afcd4c30482f9ff19f11e12ff666f006785b22f4"` [INFO] [stdout] 1c52a631526adf975e8a2051afcd4c30482f9ff19f11e12ff666f006785b22f4