[INFO] updating cached repository flyfische/Rust-Pascy [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/flyfische/Rust-Pascy [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/flyfische/Rust-Pascy" "work/ex/clippy-test-run/sources/stable/gh/flyfische/Rust-Pascy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/flyfische/Rust-Pascy'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/flyfische/Rust-Pascy" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/flyfische/Rust-Pascy"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/flyfische/Rust-Pascy'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d8597cb83584ec541f8126dcdf27b16d675e646a [INFO] sha for GitHub repo flyfische/Rust-Pascy: d8597cb83584ec541f8126dcdf27b16d675e646a [INFO] validating manifest of flyfische/Rust-Pascy 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 flyfische/Rust-Pascy 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 flyfische/Rust-Pascy [INFO] finished frobbing flyfische/Rust-Pascy [INFO] frobbed toml for flyfische/Rust-Pascy written to work/ex/clippy-test-run/sources/stable/gh/flyfische/Rust-Pascy/Cargo.toml [INFO] started frobbing flyfische/Rust-Pascy [INFO] finished frobbing flyfische/Rust-Pascy [INFO] frobbed toml for flyfische/Rust-Pascy written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/flyfische/Rust-Pascy/Cargo.toml [INFO] crate flyfische/Rust-Pascy 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 flyfische/Rust-Pascy 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-5/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/flyfische/Rust-Pascy:/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] 2f755b6c27271c45dab0d8eb00f84b43a5009f50e67aab83f6a0cd2319f1ac74 [INFO] running `"docker" "start" "-a" "2f755b6c27271c45dab0d8eb00f84b43a5009f50e67aab83f6a0cd2319f1ac74"` [INFO] [stderr] Checking rust-pascal v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `std::cmp::PartialEq` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::cmp::PartialEq; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | return lex; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `lex` [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/main.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | return digit; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `digit` [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/main.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | / return Token { [INFO] [stderr] 176 | | t_type: TokenType::EOF, [INFO] [stderr] 177 | | value: None [INFO] [stderr] 178 | | }; [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] 175 | Token { [INFO] [stderr] 176 | t_type: TokenType::EOF, [INFO] [stderr] 177 | value: None [INFO] [stderr] 178 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::PartialEq` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::cmp::PartialEq; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | return lex; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `lex` [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/main.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | return digit; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `digit` [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/main.rs:175:9 [INFO] [stderr] | [INFO] [stderr] 175 | / return Token { [INFO] [stderr] 176 | | t_type: TokenType::EOF, [INFO] [stderr] 177 | | value: None [INFO] [stderr] 178 | | }; [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] 175 | Token { [INFO] [stderr] 176 | t_type: TokenType::EOF, [INFO] [stderr] 177 | value: None [INFO] [stderr] 178 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tok` [INFO] [stderr] --> src/main.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | let mut tok: Token; [INFO] [stderr] | ^^^ help: consider using `_tok` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `result` is assigned to, but never used [INFO] [stderr] --> src/main.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | let mut result: i32; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_result` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result` is never read [INFO] [stderr] --> src/main.rs:217:25 [INFO] [stderr] | [INFO] [stderr] 217 | result = y.parse::().unwrap(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | let mut cur_char = lex.text.next(); [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: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:120:17 [INFO] [stderr] | [INFO] [stderr] 120 | let mut current_char: char; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] warning: unused variable: `tok` [INFO] [stderr] --> src/main.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | let mut tok: Token; [INFO] [stderr] | ^^^ help: consider using `_tok` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `result` is assigned to, but never used [INFO] [stderr] --> src/main.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | let mut result: i32; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_result` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `result` is never read [INFO] [stderr] --> src/main.rs:217:25 [INFO] [stderr] | [INFO] [stderr] 217 | result = y.parse::().unwrap(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | let mut cur_char = lex.text.next(); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:185:13 [INFO] [stderr] | [INFO] [stderr] 185 | let mut token = lex.get_next_token(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | let mut tok: Token; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | let mut next = self.lexer.get_next_token(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut result: i32; [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: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:120:17 [INFO] [stderr] | [INFO] [stderr] 120 | let mut current_char: char; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `DIV` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | DIV, [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:185:13 [INFO] [stderr] | [INFO] [stderr] 185 | let mut token = lex.get_next_token(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `current_token` [INFO] [stderr] --> src/main.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | current_token: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `eval` [INFO] [stderr] --> src/main.rs:210:5 [INFO] [stderr] | [INFO] [stderr] 210 | fn eval(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | let mut tok: Token; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | let mut next = self.lexer.get_next_token(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let mut result: i32; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `DIV` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | DIV, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `current_token` [INFO] [stderr] --> src/main.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | current_token: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `eval` [INFO] [stderr] --> src/main.rs:210:5 [INFO] [stderr] | [INFO] [stderr] 210 | fn eval(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / loop { [INFO] [stderr] 98 | | //println!("Checking whitespace..."); [INFO] [stderr] 99 | | match self.current_char { [INFO] [stderr] 100 | | Some(x) => { [INFO] [stderr] ... | [INFO] [stderr] 113 | | } [INFO] [stderr] 114 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = self.current_char { .. }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / match self.current_token { [INFO] [stderr] 214 | | Some(ref x) => { [INFO] [stderr] 215 | | match x.value { [INFO] [stderr] 216 | | Some(ref y) => { [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [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] 213 | if let Some(ref x) = self.current_token { [INFO] [stderr] 214 | match x.value { [INFO] [stderr] 215 | Some(ref y) => { [INFO] [stderr] 216 | result = y.parse::().unwrap(); [INFO] [stderr] 217 | }, [INFO] [stderr] 218 | None => {}, [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/main.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | / match x.value { [INFO] [stderr] 216 | | Some(ref y) => { [INFO] [stderr] 217 | | result = y.parse::().unwrap(); [INFO] [stderr] 218 | | }, [INFO] [stderr] 219 | | None => {}, [INFO] [stderr] 220 | | } [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] 215 | if let Some(ref y) = x.value { [INFO] [stderr] 216 | result = y.parse::().unwrap(); [INFO] [stderr] 217 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / loop { [INFO] [stderr] 98 | | //println!("Checking whitespace..."); [INFO] [stderr] 99 | | match self.current_char { [INFO] [stderr] 100 | | Some(x) => { [INFO] [stderr] ... | [INFO] [stderr] 113 | | } [INFO] [stderr] 114 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = self.current_char { .. }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / match self.current_token { [INFO] [stderr] 214 | | Some(ref x) => { [INFO] [stderr] 215 | | match x.value { [INFO] [stderr] 216 | | Some(ref y) => { [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [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] 213 | if let Some(ref x) = self.current_token { [INFO] [stderr] 214 | match x.value { [INFO] [stderr] 215 | Some(ref y) => { [INFO] [stderr] 216 | result = y.parse::().unwrap(); [INFO] [stderr] 217 | }, [INFO] [stderr] 218 | None => {}, [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/main.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | / match x.value { [INFO] [stderr] 216 | | Some(ref y) => { [INFO] [stderr] 217 | | result = y.parse::().unwrap(); [INFO] [stderr] 218 | | }, [INFO] [stderr] 219 | | None => {}, [INFO] [stderr] 220 | | } [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] 215 | if let Some(ref y) = x.value { [INFO] [stderr] 216 | result = y.parse::().unwrap(); [INFO] [stderr] 217 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.81s [INFO] running `"docker" "inspect" "2f755b6c27271c45dab0d8eb00f84b43a5009f50e67aab83f6a0cd2319f1ac74"` [INFO] running `"docker" "rm" "-f" "2f755b6c27271c45dab0d8eb00f84b43a5009f50e67aab83f6a0cd2319f1ac74"` [INFO] [stdout] 2f755b6c27271c45dab0d8eb00f84b43a5009f50e67aab83f6a0cd2319f1ac74