[INFO] crate ptags 0.2.1 is already in cache [INFO] extracting crate ptags 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/ptags/0.2.1 [INFO] extracting crate ptags 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ptags/0.2.1 [INFO] validating manifest of ptags-0.2.1 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 ptags-0.2.1 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 ptags-0.2.1 [INFO] finished frobbing ptags-0.2.1 [INFO] frobbed toml for ptags-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/ptags/0.2.1/Cargo.toml [INFO] started frobbing ptags-0.2.1 [INFO] finished frobbing ptags-0.2.1 [INFO] frobbed toml for ptags-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ptags/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 ptags-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/ptags/0.2.1:/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] cd3ffb320ff792164cb09352b7690029428bec4e2283a3a329bfcdc27aebf274 [INFO] running `"docker" "start" "-a" "cd3ffb320ff792164cb09352b7690029428bec4e2283a3a329bfcdc27aebf274"` [INFO] [stderr] Compiling structopt-toml-derive v0.2.4 [INFO] [stderr] Checking structopt-toml v0.2.4 [INFO] [stderr] Checking ptags v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/bin.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 197 | | if !lines[i].is_none() [INFO] [stderr] 198 | | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] 199 | | { [INFO] [stderr] 200 | | min = i; [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 196 | } else if !lines[i].is_none() [INFO] [stderr] 197 | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] 198 | { [INFO] [stderr] 199 | min = i; [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/bin.rs:196:20 [INFO] [stderr] | [INFO] [stderr] 196 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 197 | | if !lines[i].is_none() [INFO] [stderr] 198 | | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] 199 | | { [INFO] [stderr] 200 | | min = i; [INFO] [stderr] 201 | | } [INFO] [stderr] 202 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 196 | } else if !lines[i].is_none() [INFO] [stderr] 197 | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] 198 | { [INFO] [stderr] 199 | min = i; [INFO] [stderr] 200 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/bin.rs:193:20 [INFO] [stderr] | [INFO] [stderr] 193 | if !lines[i].is_none() && lines[min].is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines[i].is_some() && lines[min].is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/bin.rs:197:20 [INFO] [stderr] | [INFO] [stderr] 197 | if !lines[i].is_none() [INFO] [stderr] | ____________________^ [INFO] [stderr] 198 | | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] | |________________________________________________________________________________________^ help: try: `lines[i].is_some() && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | f.write(get_tags_header(&opt)?.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:204:9 [INFO] [stderr] | [INFO] [stderr] 204 | f.write(lines[min].unwrap().as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:205:9 [INFO] [stderr] | [INFO] [stderr] 205 | f.write("\n".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/bin.rs:223:5 [INFO] [stderr] | [INFO] [stderr] 223 | / match opt.completion { [INFO] [stderr] 224 | | Some(ref x) => { [INFO] [stderr] 225 | | let shell = match x.as_str() { [INFO] [stderr] 226 | | "bash" => clap::Shell::Bash, [INFO] [stderr] ... | [INFO] [stderr] 235 | | None => {} [INFO] [stderr] 236 | | } [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] 223 | if let Some(ref x) = opt.completion { [INFO] [stderr] 224 | let shell = match x.as_str() { [INFO] [stderr] 225 | "bash" => clap::Shell::Bash, [INFO] [stderr] 226 | "fish" => clap::Shell::Fish, [INFO] [stderr] 227 | "zsh" => clap::Shell::Zsh, [INFO] [stderr] 228 | "powershell" => clap::Shell::PowerShell, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/bin.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / let _ = write_tags(&opt, &outputs) [INFO] [stderr] 250 | | .chain_err(|| format!("failed to write file ({:?})", &opt.output))?; [INFO] [stderr] | |________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/cmd_ctags.rs:58:23 [INFO] [stderr] | [INFO] [stderr] 58 | args.push(String::from(format!("--exclude={}", e))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("--exclude={}", e)` [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: the loop variable `i` is only used to index `files`. [INFO] [stderr] --> src/cmd_ctags.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..opt.thread { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 66 | for in files.iter().take(opt.thread) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/cmd_ctags.rs:92:58 [INFO] [stderr] | [INFO] [stderr] 92 | .or_else(|x| tx.send(Err(x.into()))); [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ptags`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/bin.rs:193:20 [INFO] [stderr] | [INFO] [stderr] 193 | if !lines[i].is_none() && lines[min].is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `lines[i].is_some() && lines[min].is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/bin.rs:197:20 [INFO] [stderr] | [INFO] [stderr] 197 | if !lines[i].is_none() [INFO] [stderr] | ____________________^ [INFO] [stderr] 198 | | && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap()) [INFO] [stderr] | |________________________________________________________________________________________^ help: try: `lines[i].is_some() && (lines[min].is_none() || lines[i].unwrap() < lines[min].unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | f.write(get_tags_header(&opt)?.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:204:9 [INFO] [stderr] | [INFO] [stderr] 204 | f.write(lines[min].unwrap().as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/bin.rs:205:9 [INFO] [stderr] | [INFO] [stderr] 205 | f.write("\n".as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/bin.rs:223:5 [INFO] [stderr] | [INFO] [stderr] 223 | / match opt.completion { [INFO] [stderr] 224 | | Some(ref x) => { [INFO] [stderr] 225 | | let shell = match x.as_str() { [INFO] [stderr] 226 | | "bash" => clap::Shell::Bash, [INFO] [stderr] ... | [INFO] [stderr] 235 | | None => {} [INFO] [stderr] 236 | | } [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] 223 | if let Some(ref x) = opt.completion { [INFO] [stderr] 224 | let shell = match x.as_str() { [INFO] [stderr] 225 | "bash" => clap::Shell::Bash, [INFO] [stderr] 226 | "fish" => clap::Shell::Fish, [INFO] [stderr] 227 | "zsh" => clap::Shell::Zsh, [INFO] [stderr] 228 | "powershell" => clap::Shell::PowerShell, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/bin.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | / let _ = write_tags(&opt, &outputs) [INFO] [stderr] 250 | | .chain_err(|| format!("failed to write file ({:?})", &opt.output))?; [INFO] [stderr] | |________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/cmd_ctags.rs:58:23 [INFO] [stderr] | [INFO] [stderr] 58 | args.push(String::from(format!("--exclude={}", e))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("--exclude={}", e)` [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: the loop variable `i` is only used to index `files`. [INFO] [stderr] --> src/cmd_ctags.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for i in 0..opt.thread { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 66 | for in files.iter().take(opt.thread) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/cmd_ctags.rs:92:58 [INFO] [stderr] | [INFO] [stderr] 92 | .or_else(|x| tx.send(Err(x.into()))); [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ptags`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "cd3ffb320ff792164cb09352b7690029428bec4e2283a3a329bfcdc27aebf274"` [INFO] running `"docker" "rm" "-f" "cd3ffb320ff792164cb09352b7690029428bec4e2283a3a329bfcdc27aebf274"` [INFO] [stdout] cd3ffb320ff792164cb09352b7690029428bec4e2283a3a329bfcdc27aebf274