[INFO] crate file-lock 1.1.20 is already in cache [INFO] extracting crate file-lock 1.1.20 into work/ex/clippy-test-run/sources/stable/reg/file-lock/1.1.20 [INFO] extracting crate file-lock 1.1.20 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/file-lock/1.1.20 [INFO] validating manifest of file-lock-1.1.20 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 file-lock-1.1.20 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 file-lock-1.1.20 [INFO] finished frobbing file-lock-1.1.20 [INFO] frobbed toml for file-lock-1.1.20 written to work/ex/clippy-test-run/sources/stable/reg/file-lock/1.1.20/Cargo.toml [INFO] started frobbing file-lock-1.1.20 [INFO] finished frobbing file-lock-1.1.20 [INFO] frobbed toml for file-lock-1.1.20 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/file-lock/1.1.20/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 file-lock-1.1.20 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/reg/file-lock/1.1.20:/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] 8932eeccd4f3a2043912c4a97ff6b55db3bfb4bd7b80bd5f736718934e3f7291 [INFO] running `"docker" "start" "-a" "8932eeccd4f3a2043912c4a97ff6b55db3bfb4bd7b80bd5f736718934e3f7291"` [INFO] [stderr] Compiling file-lock v1.1.20 (/opt/crater/workdir) [INFO] [stderr] warning: use of deprecated item 'gcc::Build': crate has been renamed to `cc`, the `gcc` name is not maintained [INFO] [stderr] --> build.rs:4:3 [INFO] [stderr] | [INFO] [stderr] 4 | gcc::Build::new() [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'gcc::Build::new': crate has been renamed to `cc`, the `gcc` name is not maintained [INFO] [stderr] --> build.rs:4:3 [INFO] [stderr] | [INFO] [stderr] 4 | gcc::Build::new() [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: All the struct fields are matched to a wildcard pattern, consider using `..`. [INFO] [stderr] --> src/lib.rs:205:36 [INFO] [stderr] | [INFO] [stderr] 205 | Ok(Parent { child: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Parent { .. }` instead [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: the function has a cyclomatic complexity of 29 [INFO] [stderr] --> src/lib.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | / fn lock_and_unlock() { [INFO] [stderr] 171 | | let filename = "filelock.test"; [INFO] [stderr] 172 | | [INFO] [stderr] 173 | | for already_exists in &[true, false] { [INFO] [stderr] ... | [INFO] [stderr] 281 | | } [INFO] [stderr] 282 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:185:47 [INFO] [stderr] | [INFO] [stderr] 185 | let parent_lock = match *already_exists { [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 186 | | false => None, [INFO] [stderr] 187 | | true => { [INFO] [stderr] 188 | | OpenOptions::new() [INFO] [stderr] ... | [INFO] [stderr] 201 | | }, [INFO] [stderr] 202 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 185 | let parent_lock = if *already_exists { [INFO] [stderr] 186 | OpenOptions::new() [INFO] [stderr] 187 | .write(true) [INFO] [stderr] 188 | .create(true) [INFO] [stderr] 189 | .open(&filename) [INFO] [stderr] 190 | .is_ok(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:194:37 [INFO] [stderr] | [INFO] [stderr] 194 | / match *already_locked { [INFO] [stderr] 195 | | false => None, [INFO] [stderr] 196 | | true => match FileLock::lock(&filename, true, *already_writable) { [INFO] [stderr] 197 | | Ok(lock) => Some(lock), [INFO] [stderr] 198 | | Err(err) => panic!("Error creating parent lock ({})", err), [INFO] [stderr] 199 | | }, [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 194 | if *already_locked { match FileLock::lock(&filename, true, *already_writable) { [INFO] [stderr] 195 | Ok(lock) => Some(lock), [INFO] [stderr] 196 | Err(err) => panic!("Error creating parent lock ({})", err), [INFO] [stderr] 197 | } } else { None } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:271:33 [INFO] [stderr] | [INFO] [stderr] 271 | Err(_) => { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [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/lib.rs:208:37 [INFO] [stderr] | [INFO] [stderr] 208 | / match parent_lock { [INFO] [stderr] 209 | | Some(lock) => { lock.unlock().is_ok(); }, [INFO] [stderr] 210 | | None => {}, [INFO] [stderr] 211 | | } [INFO] [stderr] | |_____________________________________^ help: try this: `if let Some(lock) = parent_lock { lock.unlock().is_ok(); }` [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] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:219:37 [INFO] [stderr] | [INFO] [stderr] 219 | / match *already_locked { [INFO] [stderr] 220 | | true => match *is_blocking { [INFO] [stderr] 221 | | true => { [INFO] [stderr] 222 | | match FileLock::lock(filename, *is_blocking, *is_writable) { [INFO] [stderr] ... | [INFO] [stderr] 248 | | }, [INFO] [stderr] 249 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 219 | if *already_locked { match *is_blocking { [INFO] [stderr] 220 | true => { [INFO] [stderr] 221 | match FileLock::lock(filename, *is_blocking, *is_writable) { [INFO] [stderr] 222 | Ok(_) => { locked = true }, [INFO] [stderr] 223 | Err(_) => panic!("Error getting lock after wating for release"), [INFO] [stderr] 224 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:220:49 [INFO] [stderr] | [INFO] [stderr] 220 | true => match *is_blocking { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 221 | | true => { [INFO] [stderr] 222 | | match FileLock::lock(filename, *is_blocking, *is_writable) { [INFO] [stderr] 223 | | Ok(_) => { locked = true }, [INFO] [stderr] ... | [INFO] [stderr] 240 | | }, [INFO] [stderr] 241 | | }, [INFO] [stderr] | |_________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 220 | true => if *is_blocking { [INFO] [stderr] 221 | match FileLock::lock(filename, *is_blocking, *is_writable) { [INFO] [stderr] 222 | Ok(_) => { locked = true }, [INFO] [stderr] 223 | Err(_) => panic!("Error getting lock after wating for release"), [INFO] [stderr] 224 | } [INFO] [stderr] 225 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/lib.rs:224:53 [INFO] [stderr] | [INFO] [stderr] 224 | Err(_) => panic!("Error getting lock after wating for release"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:236:61 [INFO] [stderr] | [INFO] [stderr] 236 | try_count = try_count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `try_count += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:244:55 [INFO] [stderr] | [INFO] [stderr] 244 | Err(_) => match !*already_exists && !*is_writable { [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 245 | | true => {}, [INFO] [stderr] 246 | | false => panic!("Error getting lock with no competition"), [INFO] [stderr] 247 | | }, [INFO] [stderr] | |_____________________________________________^ help: consider using an if/else expression: `if !(!*already_exists && !*is_writable) { panic!("Error getting lock with no competition") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:251:37 [INFO] [stderr] | [INFO] [stderr] 251 | / match !*already_exists && !is_writable { [INFO] [stderr] 252 | | true => assert!(locked == false, "Locking a non-existent file for reading should fail"), [INFO] [stderr] 253 | | false => assert!(locked == true, "Lock should have been successful"), [INFO] [stderr] 254 | | } [INFO] [stderr] | |_____________________________________^ help: consider using an if/else expression: `if !*already_exists && !is_writable { assert!(locked == false, "Locking a non-existent file for reading should fail") } else { assert!(locked == true, "Lock should have been successful") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/lib.rs:252:58 [INFO] [stderr] | [INFO] [stderr] 252 | true => assert!(locked == false, "Locking a non-existent file for reading should fail"), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!locked` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/lib.rs:253:58 [INFO] [stderr] | [INFO] [stderr] 253 | false => assert!(locked == true, "Lock should have been successful"), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try simplifying it as shown: `locked` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:256:37 [INFO] [stderr] | [INFO] [stderr] 256 | / match *is_blocking { [INFO] [stderr] 257 | | true => assert!(try_count == 0, "Try count should be zero when blocking"), [INFO] [stderr] 258 | | false => { [INFO] [stderr] 259 | | match *already_locked { [INFO] [stderr] ... | [INFO] [stderr] 266 | | }, [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 256 | if *is_blocking { assert!(try_count == 0, "Try count should be zero when blocking") } else { [INFO] [stderr] 257 | match *already_locked { [INFO] [stderr] 258 | false => assert!(try_count == 0, "Try count should be zero when no competition"), [INFO] [stderr] 259 | true => match !*already_writable && !is_writable { [INFO] [stderr] 260 | true => assert!(try_count == 0, "Read lock when locked for reading should succeed first go"), [INFO] [stderr] 261 | false => assert!(try_count >= 3, "Try count should be >= 3"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:259:45 [INFO] [stderr] | [INFO] [stderr] 259 | / match *already_locked { [INFO] [stderr] 260 | | false => assert!(try_count == 0, "Try count should be zero when no competition"), [INFO] [stderr] 261 | | true => match !*already_writable && !is_writable { [INFO] [stderr] 262 | | true => assert!(try_count == 0, "Read lock when locked for reading should succeed first go"), [INFO] [stderr] 263 | | false => assert!(try_count >= 3, "Try count should be >= 3"), [INFO] [stderr] 264 | | }, [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 259 | if *already_locked { match !*already_writable && !is_writable { [INFO] [stderr] 260 | true => assert!(try_count == 0, "Read lock when locked for reading should succeed first go"), [INFO] [stderr] 261 | false => assert!(try_count >= 3, "Try count should be >= 3"), [INFO] [stderr] 262 | } } else { assert!(try_count == 0, "Try count should be zero when no competition") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:261:58 [INFO] [stderr] | [INFO] [stderr] 261 | true => match !*already_writable && !is_writable { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 262 | | true => assert!(try_count == 0, "Read lock when locked for reading should succeed first go"), [INFO] [stderr] 263 | | false => assert!(try_count >= 3, "Try count should be >= 3"), [INFO] [stderr] 264 | | }, [INFO] [stderr] | |_________________________________________________^ help: consider using an if/else expression: `if !*already_writable && !is_writable { assert!(try_count == 0, "Read lock when locked for reading should succeed first go") } else { assert!(try_count >= 3, "Try count should be >= 3") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.44s [INFO] running `"docker" "inspect" "8932eeccd4f3a2043912c4a97ff6b55db3bfb4bd7b80bd5f736718934e3f7291"` [INFO] running `"docker" "rm" "-f" "8932eeccd4f3a2043912c4a97ff6b55db3bfb4bd7b80bd5f736718934e3f7291"` [INFO] [stdout] 8932eeccd4f3a2043912c4a97ff6b55db3bfb4bd7b80bd5f736718934e3f7291