[INFO] crate oil-lang 2.3.0 is already in cache [INFO] extracting crate oil-lang 2.3.0 into work/ex/clippy-test-run/sources/stable/reg/oil-lang/2.3.0 [INFO] extracting crate oil-lang 2.3.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/oil-lang/2.3.0 [INFO] validating manifest of oil-lang-2.3.0 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 oil-lang-2.3.0 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 oil-lang-2.3.0 [INFO] finished frobbing oil-lang-2.3.0 [INFO] frobbed toml for oil-lang-2.3.0 written to work/ex/clippy-test-run/sources/stable/reg/oil-lang/2.3.0/Cargo.toml [INFO] started frobbing oil-lang-2.3.0 [INFO] finished frobbing oil-lang-2.3.0 [INFO] frobbed toml for oil-lang-2.3.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/oil-lang/2.3.0/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 oil-lang-2.3.0 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/oil-lang/2.3.0:/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] 3b98dc866a47d9a59f6700bd02eb4cbc4282ce9cc4a87ec1e80768654783ce38 [INFO] running `"docker" "start" "-a" "3b98dc866a47d9a59f6700bd02eb4cbc4282ce9cc4a87ec1e80768654783ce38"` [INFO] [stderr] Checking fnv v1.0.6 [INFO] [stderr] Checking libc v0.2.48 [INFO] [stderr] Checking oil-lang v2.3.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tape.rs:36:4 [INFO] [stderr] | [INFO] [stderr] 36 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/tape.rs:283:16 [INFO] [stderr] | [INFO] [stderr] 283 | Value::I(x) if x >= 0 && x <= 0x10ffff => char::from_u32(x as u32).unwrap_or('\u{fffd}'), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/tape.rs:338:13 [INFO] [stderr] | [INFO] [stderr] 338 | 11 => println!(""), [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tape.rs:283:37 [INFO] [stderr] | [INFO] [stderr] 283 | Value::I(x) if x >= 0 && x <= 0x10ffff => char::from_u32(x as u32).unwrap_or('\u{fffd}'), [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0010_ffff` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/value.rs:317:10 [INFO] [stderr] | [INFO] [stderr] 317 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 318 | | if xn { [INFO] [stderr] 319 | | match unum_cmp(&x[1..], y) { [INFO] [stderr] 320 | | Ordering::Equal => Value::I(0), [INFO] [stderr] ... | [INFO] [stderr] 330 | | } [INFO] [stderr] 331 | | } [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] 317 | } else if xn { [INFO] [stderr] 318 | match unum_cmp(&x[1..], y) { [INFO] [stderr] 319 | Ordering::Equal => Value::I(0), [INFO] [stderr] 320 | Ordering::Less => num_decr_by_core(y, &x[1..], false), [INFO] [stderr] 321 | Ordering::Greater => num_decr_by_core(&x[1..], y, true), [INFO] [stderr] 322 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/value.rs:356:10 [INFO] [stderr] | [INFO] [stderr] 356 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 357 | | if xn { [INFO] [stderr] 358 | | match unum_cmp(&x[1..], y) { [INFO] [stderr] 359 | | Ordering::Equal => Value::I(0), [INFO] [stderr] ... | [INFO] [stderr] 369 | | } [INFO] [stderr] 370 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 356 | } else if xn { [INFO] [stderr] 357 | match unum_cmp(&x[1..], y) { [INFO] [stderr] 358 | Ordering::Equal => Value::I(0), [INFO] [stderr] 359 | Ordering::Less => num_decr_by_core(y, &x[1..], false), [INFO] [stderr] 360 | Ordering::Greater => num_decr_by_core(&x[1..], y, true), [INFO] [stderr] 361 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/value.rs:397:8 [INFO] [stderr] | [INFO] [stderr] 397 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 398 | | if !s.is_empty() && s.chars().nth(1).is_none() { Value::C(s.chars().nth(0).unwrap()) } [INFO] [stderr] 399 | | else { Value::S(Rc::new(String::from(s))) } [INFO] [stderr] 400 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 397 | else if !s.is_empty() && s.chars().nth(1).is_none() { Value::C(s.chars().nth(0).unwrap()) } [INFO] [stderr] 398 | else { Value::S(Rc::new(String::from(s))) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/value.rs:407:8 [INFO] [stderr] | [INFO] [stderr] 407 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 408 | | if !s.is_empty() && s.chars().nth(1).is_none() { Value::C(s.chars().nth(0).unwrap()) } [INFO] [stderr] 409 | | else { Value::S(Rc::new(s)) } [INFO] [stderr] 410 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 407 | else if !s.is_empty() && s.chars().nth(1).is_none() { Value::C(s.chars().nth(0).unwrap()) } [INFO] [stderr] 408 | else { Value::S(Rc::new(s)) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tape.rs:164:26 [INFO] [stderr] | [INFO] [stderr] 164 | if let Some(lib) = stdlib.get(&x[..]).map(|m| m.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `stdlib.get(&x[..]).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/tape.rs:178:26 [INFO] [stderr] | [INFO] [stderr] 178 | if let Some(lib) = stdlib.get(&xs[..]).map(|m| m.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `stdlib.get(&xs[..]).cloned()` [INFO] [stderr] | [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/tape.rs:193:26 [INFO] [stderr] | [INFO] [stderr] 193 | if let Some(lib) = stdlib.get(cx).map(|m| m.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `stdlib.get(cx).cloned()` [INFO] [stderr] | [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/tape.rs:203:21 [INFO] [stderr] | [INFO] [stderr] 203 | if let Some(m) = modcache.get(&path).map(|m| m.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `modcache.get(&path).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/tape.rs:269:41 [INFO] [stderr] | [INFO] [stderr] 269 | self.tape.insert(b.clone(), Value::I(ch as u32 as i64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i64::from(ch as u32)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:198:28 [INFO] [stderr] | [INFO] [stderr] 198 | Some(x @ b'1'...b'9') => (x - b'0') as u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(x - b'0')` [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: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:204:79 [INFO] [stderr] | [INFO] [stderr] 204 | if let Some(v10) = val.checked_mul(10).and_then(move|v10| v10.checked_add((x - b'0') as u64)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(x - b'0')` [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] error: this loop never actually loops [INFO] [stderr] --> src/value.rs:231:3 [INFO] [stderr] | [INFO] [stderr] 231 | loop { [INFO] [stderr] | _________^ [INFO] [stderr] 232 | | match *self { [INFO] [stderr] 233 | | Value::I(i64::MAX) => *self = Value::S(Rc::new(String::from("9223372036854775808"))), [INFO] [stderr] 234 | | Value::I(ref mut x) => *x += 1, [INFO] [stderr] ... | [INFO] [stderr] 257 | | return [INFO] [stderr] 258 | | } [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] error: this loop never actually loops [INFO] [stderr] --> src/value.rs:264:3 [INFO] [stderr] | [INFO] [stderr] 264 | loop { [INFO] [stderr] | _________^ [INFO] [stderr] 265 | | match *self { [INFO] [stderr] 266 | | Value::I(i64::MIN) => *self = Value::S(Rc::new(String::from("-9223372036854775809"))), [INFO] [stderr] 267 | | Value::I(ref mut x) => *x -= 1, [INFO] [stderr] ... | [INFO] [stderr] 290 | | return [INFO] [stderr] 291 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:417:26 [INFO] [stderr] | [INFO] [stderr] 417 | '0'...'9' => Value::I((c as u32 - '0' as u32) as i64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(c as u32 - '0' as u32)` [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 `idx` is used as a loop counter. Consider using `for (idx, item) in src.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/stdlib.rs:7:14 [INFO] [stderr] | [INFO] [stderr] 7 | for line in src.lines() { [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] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `oil-lang`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "3b98dc866a47d9a59f6700bd02eb4cbc4282ce9cc4a87ec1e80768654783ce38"` [INFO] running `"docker" "rm" "-f" "3b98dc866a47d9a59f6700bd02eb4cbc4282ce9cc4a87ec1e80768654783ce38"` [INFO] [stdout] 3b98dc866a47d9a59f6700bd02eb4cbc4282ce9cc4a87ec1e80768654783ce38