[INFO] updating cached repository Jess3Jane/arm_shenanigans [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Jess3Jane/arm_shenanigans [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Jess3Jane/arm_shenanigans" "work/ex/clippy-test-run/sources/stable/gh/Jess3Jane/arm_shenanigans"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Jess3Jane/arm_shenanigans'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Jess3Jane/arm_shenanigans" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jess3Jane/arm_shenanigans"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jess3Jane/arm_shenanigans'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c70be3e2b158f4d9ba41b385433dfe987c4dc3da [INFO] sha for GitHub repo Jess3Jane/arm_shenanigans: c70be3e2b158f4d9ba41b385433dfe987c4dc3da [INFO] validating manifest of Jess3Jane/arm_shenanigans 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 Jess3Jane/arm_shenanigans 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 Jess3Jane/arm_shenanigans [INFO] finished frobbing Jess3Jane/arm_shenanigans [INFO] frobbed toml for Jess3Jane/arm_shenanigans written to work/ex/clippy-test-run/sources/stable/gh/Jess3Jane/arm_shenanigans/Cargo.toml [INFO] started frobbing Jess3Jane/arm_shenanigans [INFO] finished frobbing Jess3Jane/arm_shenanigans [INFO] frobbed toml for Jess3Jane/arm_shenanigans written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Jess3Jane/arm_shenanigans/Cargo.toml [INFO] crate Jess3Jane/arm_shenanigans 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 Jess3Jane/arm_shenanigans against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Jess3Jane/arm_shenanigans:/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] 0f4b778bd982f5fa6932e8011abe8e8f9e1a360c0b3e758007584360482a264a [INFO] running `"docker" "start" "-a" "0f4b778bd982f5fa6932e8011abe8e8f9e1a360c0b3e758007584360482a264a"` [INFO] [stderr] Compiling memchr v0.1.11 [INFO] [stderr] Compiling build-helper v0.1.1 [INFO] [stderr] Compiling thread-id v2.0.0 [INFO] [stderr] Compiling thread_local v0.2.7 [INFO] [stderr] Compiling aho-corasick v0.5.3 [INFO] [stderr] Compiling regex v0.1.80 [INFO] [stderr] Compiling os_type v0.6.0 [INFO] [stderr] Compiling libunicorn-sys v0.8.0 [INFO] [stderr] Checking unicorn v0.8.0 [INFO] [stderr] Checking arm_shenanigans v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/assembler.rs:52:43 [INFO] [stderr] | [INFO] [stderr] 52 | AssemblerError::AssembleError(e) => { None }, [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/assembler.rs:53:39 [INFO] [stderr] | [INFO] [stderr] 53 | AssemblerError::CopyError(e) => { None }, [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/assembler.rs:52:43 [INFO] [stderr] | [INFO] [stderr] 52 | AssemblerError::AssembleError(e) => { None }, [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/assembler.rs:53:39 [INFO] [stderr] | [INFO] [stderr] 53 | AssemblerError::CopyError(e) => { None }, [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/util.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | let mut width = v[0].len(); [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/util.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | let mut width = v[0].len(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `preprocess::Preprocessor` [INFO] [stderr] --> src/preprocess.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Preprocessor { [INFO] [stderr] 10 | | Preprocessor { line_rules: HashMap::new(), word_rules: HashMap::new() } [INFO] [stderr] 11 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 3 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/assembler.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | / { match match File::create(tmp_dir.path().join("code.s")) { [INFO] [stderr] 65 | | Ok(f) => f, [INFO] [stderr] 66 | | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 67 | | }.write_all(code.as_bytes()) { [INFO] [stderr] 68 | | Ok(_) => {}, [INFO] [stderr] 69 | | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 70 | | }}; [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] help: replace it with [INFO] [stderr] | [INFO] [stderr] 64 | match match File::create(tmp_dir.path().join("code.s")) { [INFO] [stderr] 65 | Ok(f) => f, [INFO] [stderr] 66 | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 67 | }.write_all(code.as_bytes()) { [INFO] [stderr] 68 | Ok(_) => {}, [INFO] [stderr] 69 | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `Box>`. Consider using just `Vec` [INFO] [stderr] --> src/util.rs:4:35 [INFO] [stderr] | [INFO] [stderr] 4 | fn print_columns(mut columns: Vec>>, col_seperator: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::box_vec)] on by default [INFO] [stderr] = help: `Vec` is already on the heap, `Box>` makes an extra allocation. [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_vec [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/util.rs:16:20 [INFO] [stderr] | [INFO] [stderr] 16 | v.push(String::from(s.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `preprocess::Preprocessor` [INFO] [stderr] --> src/preprocess.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Preprocessor { [INFO] [stderr] 10 | | Preprocessor { line_rules: HashMap::new(), word_rules: HashMap::new() } [INFO] [stderr] 11 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 3 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/assembler.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | / { match match File::create(tmp_dir.path().join("code.s")) { [INFO] [stderr] 65 | | Ok(f) => f, [INFO] [stderr] 66 | | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 67 | | }.write_all(code.as_bytes()) { [INFO] [stderr] 68 | | Ok(_) => {}, [INFO] [stderr] 69 | | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 70 | | }}; [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] help: replace it with [INFO] [stderr] | [INFO] [stderr] 64 | match match File::create(tmp_dir.path().join("code.s")) { [INFO] [stderr] 65 | Ok(f) => f, [INFO] [stderr] 66 | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] 67 | }.write_all(code.as_bytes()) { [INFO] [stderr] 68 | Ok(_) => {}, [INFO] [stderr] 69 | Err(e) => {return Err(AssemblerError::IOError(e));}, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `Box>`. Consider using just `Vec` [INFO] [stderr] --> src/util.rs:4:35 [INFO] [stderr] | [INFO] [stderr] 4 | fn print_columns(mut columns: Vec>>, col_seperator: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::box_vec)] on by default [INFO] [stderr] = help: `Vec` is already on the heap, `Box>` makes an extra allocation. [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_vec [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:88:68 [INFO] [stderr] | [INFO] [stderr] 88 | cols[col].push(format!("{:08x}", b.iter().fold(0, |cur, v| (*v as u32) << 24 | cur >> 8))); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(*v)` [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: identical conversion [INFO] [stderr] --> src/util.rs:16:20 [INFO] [stderr] | [INFO] [stderr] 16 | v.push(String::from(s.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:116:68 [INFO] [stderr] | [INFO] [stderr] 116 | cols[col].push(format!("{:04x}", b.iter().fold(0, |cur, v| (*v as u32) << 8 | cur >> 8))); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `row` is used as a loop counter. Consider using `for (row, item) in data.enumerate()` or similar iterators [INFO] [stderr] --> src/util.rs:139:14 [INFO] [stderr] | [INFO] [stderr] 139 | for b in data { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:88:68 [INFO] [stderr] | [INFO] [stderr] 88 | cols[col].push(format!("{:08x}", b.iter().fold(0, |cur, v| (*v as u32) << 24 | cur >> 8))); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(*v)` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:116:68 [INFO] [stderr] | [INFO] [stderr] 116 | cols[col].push(format!("{:04x}", b.iter().fold(0, |cur, v| (*v as u32) << 8 | cur >> 8))); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(*v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `row` is used as a loop counter. Consider using `for (row, item) in data.enumerate()` or similar iterators [INFO] [stderr] --> src/util.rs:139:14 [INFO] [stderr] | [INFO] [stderr] 139 | for b in data { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: unused import: `Preprocessor` [INFO] [stderr] --> src/main.rs:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use arm_shenanigans::{Preprocessor, assemble}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | let mut emu = CpuARM::new(unicorn::Mode::LITTLE_ENDIAN).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | emu.mem_map(0, (code.len() / 0x1000 + 1) * 0x1000, unicorn::PROT_ALL); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | emu.mem_write(0, &code); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | emu.emu_start(0, code.len() as u64, 10 * unicorn::SECOND_SCALE, 100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused import: `Preprocessor` [INFO] [stderr] --> src/main.rs:3:23 [INFO] [stderr] | [INFO] [stderr] 3 | use arm_shenanigans::{Preprocessor, assemble}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | let mut emu = CpuARM::new(unicorn::Mode::LITTLE_ENDIAN).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | emu.mem_map(0, (code.len() / 0x1000 + 1) * 0x1000, unicorn::PROT_ALL); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | emu.mem_write(0, &code); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | emu.emu_start(0, code.len() as u64, 10 * unicorn::SECOND_SCALE, 100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 17.56s [INFO] running `"docker" "inspect" "0f4b778bd982f5fa6932e8011abe8e8f9e1a360c0b3e758007584360482a264a"` [INFO] running `"docker" "rm" "-f" "0f4b778bd982f5fa6932e8011abe8e8f9e1a360c0b3e758007584360482a264a"` [INFO] [stdout] 0f4b778bd982f5fa6932e8011abe8e8f9e1a360c0b3e758007584360482a264a