[INFO] updating cached repository scott-linder/rustpn [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/scott-linder/rustpn [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/scott-linder/rustpn" "work/ex/clippy-test-run/sources/stable/gh/scott-linder/rustpn"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/scott-linder/rustpn'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/scott-linder/rustpn" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scott-linder/rustpn"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scott-linder/rustpn'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 4a27b2fef149d711e5d2388dfdc516199c587f8d [INFO] sha for GitHub repo scott-linder/rustpn: 4a27b2fef149d711e5d2388dfdc516199c587f8d [INFO] validating manifest of scott-linder/rustpn 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 scott-linder/rustpn 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 scott-linder/rustpn [INFO] finished frobbing scott-linder/rustpn [INFO] frobbed toml for scott-linder/rustpn written to work/ex/clippy-test-run/sources/stable/gh/scott-linder/rustpn/Cargo.toml [INFO] started frobbing scott-linder/rustpn [INFO] finished frobbing scott-linder/rustpn [INFO] frobbed toml for scott-linder/rustpn written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scott-linder/rustpn/Cargo.toml [INFO] crate scott-linder/rustpn 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 scott-linder/rustpn against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/scott-linder/rustpn:/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] 37d6604b0da8fe2e7f1ef3f57d9a96fb624543a4fcff95f6c66ae4de6e76996a [INFO] running `"docker" "start" "-a" "37d6604b0da8fe2e7f1ef3f57d9a96fb624543a4fcff95f6c66ae4de6e76996a"` [INFO] [stderr] Checking num-traits v0.1.41 [INFO] [stderr] Checking rand v0.3.18 [INFO] [stderr] Checking num-integer v0.1.35 [INFO] [stderr] Checking num-complex v0.1.41 [INFO] [stderr] Checking num-bigint v0.1.41 [INFO] [stderr] Checking num-iter v0.1.34 [INFO] [stderr] Checking num-rational v0.1.40 [INFO] [stderr] Checking num v0.1.41 [INFO] [stderr] Checking rustpn v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lex.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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/lex.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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: unneeded return statement [INFO] [stderr] --> src/lex.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | Some(c) => return match c { [INFO] [stderr] | ________________________^ [INFO] [stderr] 188 | | '"' => Ok('"'), [INFO] [stderr] 189 | | 'n' => Ok('\n'), [INFO] [stderr] 190 | | 'r' => Ok('\r'), [INFO] [stderr] 191 | | 't' => Ok('\t'), [INFO] [stderr] 192 | | _ => Err(Error::UnknownEscape), [INFO] [stderr] 193 | | }, [INFO] [stderr] | |_____________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 187 | Some(c) => match c { [INFO] [stderr] 188 | '"' => Ok('"'), [INFO] [stderr] 189 | 'n' => Ok('\n'), [INFO] [stderr] 190 | 'r' => Ok('\r'), [INFO] [stderr] 191 | 't' => Ok('\t'), [INFO] [stderr] 192 | _ => Err(Error::UnknownEscape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lex.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | None => return Err(Error::IncompleteEscape), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::IncompleteEscape)` [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: `Error` [INFO] [stderr] --> src/parse.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | use super::{Error, parse}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lex.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | Some(c) => return match c { [INFO] [stderr] | ________________________^ [INFO] [stderr] 188 | | '"' => Ok('"'), [INFO] [stderr] 189 | | 'n' => Ok('\n'), [INFO] [stderr] 190 | | 'r' => Ok('\r'), [INFO] [stderr] 191 | | 't' => Ok('\t'), [INFO] [stderr] 192 | | _ => Err(Error::UnknownEscape), [INFO] [stderr] 193 | | }, [INFO] [stderr] | |_____________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 187 | Some(c) => match c { [INFO] [stderr] 188 | '"' => Ok('"'), [INFO] [stderr] 189 | 'n' => Ok('\n'), [INFO] [stderr] 190 | 'r' => Ok('\r'), [INFO] [stderr] 191 | 't' => Ok('\t'), [INFO] [stderr] 192 | _ => Err(Error::UnknownEscape), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lex.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | None => return Err(Error::IncompleteEscape), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::IncompleteEscape)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lex.rs:25:27 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn is_recoverable(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / loop { [INFO] [stderr] 143 | | match self.chars.next() { [INFO] [stderr] 144 | | Some(c) => if c.is_digit(DECIMAL) { [INFO] [stderr] 145 | | s.push(c); [INFO] [stderr] ... | [INFO] [stderr] 156 | | } [INFO] [stderr] 157 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.chars.next() { .. }` [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] error: this loop never actually loops [INFO] [stderr] --> src/lex.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / loop { [INFO] [stderr] 233 | | let c = match self.chars.next() { [INFO] [stderr] 234 | | Some(c) => c, [INFO] [stderr] 235 | | None => return None, [INFO] [stderr] ... | [INFO] [stderr] 262 | | return Some(result); [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lex.rs:253:35 [INFO] [stderr] | [INFO] [stderr] 253 | self.symbol().map(|s| Token::Symbol(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Symbol` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lex.rs:256:35 [INFO] [stderr] | [INFO] [stderr] 256 | self.symbol().map(|s| Token::Call(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Call` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/parse.rs:81:25 [INFO] [stderr] | [INFO] [stderr] 81 | let f = s.parse().ok() [INFO] [stderr] | _________________________^ [INFO] [stderr] 82 | | .expect("lexer should have rejected float"); [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `vm::Vm` [INFO] [stderr] --> src/vm.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / pub fn new() -> Vm { [INFO] [stderr] 59 | | Vm { [INFO] [stderr] 60 | | stack: Stack(Vec::new()), [INFO] [stderr] 61 | | methods: HashMap::new(), [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 57 | impl Default for vm::Vm { [INFO] [stderr] 58 | fn default() -> Self { [INFO] [stderr] 59 | Self::new() [INFO] [stderr] 60 | } [INFO] [stderr] 61 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lex.rs:25:27 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn is_recoverable(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / loop { [INFO] [stderr] 143 | | match self.chars.next() { [INFO] [stderr] 144 | | Some(c) => if c.is_digit(DECIMAL) { [INFO] [stderr] 145 | | s.push(c); [INFO] [stderr] ... | [INFO] [stderr] 156 | | } [INFO] [stderr] 157 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.chars.next() { .. }` [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] error: this loop never actually loops [INFO] [stderr] --> src/lex.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / loop { [INFO] [stderr] 233 | | let c = match self.chars.next() { [INFO] [stderr] 234 | | Some(c) => c, [INFO] [stderr] 235 | | None => return None, [INFO] [stderr] ... | [INFO] [stderr] 262 | | return Some(result); [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lex.rs:253:35 [INFO] [stderr] | [INFO] [stderr] 253 | self.symbol().map(|s| Token::Symbol(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Symbol` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/lex.rs:256:35 [INFO] [stderr] | [INFO] [stderr] 256 | self.symbol().map(|s| Token::Call(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Call` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/parse.rs:81:25 [INFO] [stderr] | [INFO] [stderr] 81 | let f = s.parse().ok() [INFO] [stderr] | _________________________^ [INFO] [stderr] 82 | | .expect("lexer should have rejected float"); [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `vm::Vm` [INFO] [stderr] --> src/vm.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / pub fn new() -> Vm { [INFO] [stderr] 59 | | Vm { [INFO] [stderr] 60 | | stack: Stack(Vec::new()), [INFO] [stderr] 61 | | methods: HashMap::new(), [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 57 | impl Default for vm::Vm { [INFO] [stderr] 58 | fn default() -> Self { [INFO] [stderr] 59 | Self::new() [INFO] [stderr] 60 | } [INFO] [stderr] 61 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/builtin.rs:134:31 [INFO] [stderr] | [INFO] [stderr] 134 | let nth = vm.stack.0.get(idx).map(|i| i.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `vm.stack.0.get(idx).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/builtin.rs:134:31 [INFO] [stderr] | [INFO] [stderr] 134 | let nth = vm.stack.0.get(idx).map(|i| i.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `vm.stack.0.get(idx).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rustpn`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: Could not compile `rustpn`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "37d6604b0da8fe2e7f1ef3f57d9a96fb624543a4fcff95f6c66ae4de6e76996a"` [INFO] running `"docker" "rm" "-f" "37d6604b0da8fe2e7f1ef3f57d9a96fb624543a4fcff95f6c66ae4de6e76996a"` [INFO] [stdout] 37d6604b0da8fe2e7f1ef3f57d9a96fb624543a4fcff95f6c66ae4de6e76996a