[INFO] cloning repository https://github.com/rtaylor034/brainsuck [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rtaylor034/brainsuck" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frtaylor034%2Fbrainsuck", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frtaylor034%2Fbrainsuck'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] dd9688304a77bb9d76e073da88bb6d7054746f6f [INFO] linting rtaylor034/brainsuck against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frtaylor034%2Fbrainsuck" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/rtaylor034/brainsuck [INFO] finished tweaking git repo https://github.com/rtaylor034/brainsuck [INFO] tweaked toml for git repo https://github.com/rtaylor034/brainsuck written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/rtaylor034/brainsuck on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/rtaylor034/brainsuck already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 03781716fbac1499f3d71de85210fb76ebd5e0fd41124d5ea4a2d481ec2cfa63 [INFO] running `Command { std: "docker" "start" "-a" "03781716fbac1499f3d71de85210fb76ebd5e0fd41124d5ea4a2d481ec2cfa63", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "03781716fbac1499f3d71de85210fb76ebd5e0fd41124d5ea4a2d481ec2cfa63", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "03781716fbac1499f3d71de85210fb76ebd5e0fd41124d5ea4a2d481ec2cfa63", kill_on_drop: false }` [INFO] [stdout] 03781716fbac1499f3d71de85210fb76ebd5e0fd41124d5ea4a2d481ec2cfa63 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aaeea261bc508f3b98c6971acc7dab923d31bd8abb269af3c45a9681964a10fc [INFO] running `Command { std: "docker" "start" "-a" "aaeea261bc508f3b98c6971acc7dab923d31bd8abb269af3c45a9681964a10fc", kill_on_drop: false }` [INFO] [stderr] Checking gfunc v0.1.1 (/opt/rustwide/workdir/bundled_dependencies/gfunc/v0.1) [INFO] [stderr] Checking brainsuck v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: you should consider adding a `Default` implementation for `State` [INFO] [stdout] --> src/lib.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { [INFO] [stdout] 14 | | memory: vec![0], [INFO] [stdout] 15 | | cursor: 0, [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for State { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/lib.rs:40:14 [INFO] [stdout] | [INFO] [stdout] 40 | .expect(format!("cursor at invalid position?: {}", state.cursor).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("cursor at invalid position?: {}", state.cursor))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | assert!(!(block_buf.len() < 1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block_buf.len() >= 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/lib.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 89 | if let Ok(_) = match c { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 89 ~ if (match c { [INFO] [stdout] 90 + '[' => Ok(block_buf.push(Block(pos, CodeBuf::new()))), [INFO] [stdout] 91 + ']' => { [INFO] [stdout] 92 + if block_buf.len() <= 1 { [INFO] [stdout] 93 + return Err(ReadError::InvalidBlockEnd(pos)); [INFO] [stdout] 94 + } [INFO] [stdout] 95 + let Block(start, mut branch) = block_buf.pop().unwrap(); [INFO] [stdout] 96 + let root = current_buf!(); [INFO] [stdout] 97 + root.push(Instruction::Start(pos)); [INFO] [stdout] 98 + root.append(&mut branch); [INFO] [stdout] 99 + root.push(Instruction::End(start)); [INFO] [stdout] 100 + Ok(()) [INFO] [stdout] 101 + }, [INFO] [stdout] 102 + '+' => add_instr!(Add), [INFO] [stdout] 103 + '-' => add_instr!(Sub), [INFO] [stdout] 104 + '>' => add_instr!(Right), [INFO] [stdout] 105 + '<' => add_instr!(Left), [INFO] [stdout] 106 + ':' => add_instr!(Store), [INFO] [stdout] 107 + ';' => add_instr!(Goto), [INFO] [stdout] 108 + '.' => add_instr!(Write), [INFO] [stdout] 109 + ',' => add_instr!(Read), [INFO] [stdout] 110 + // swap [INFO] [stdout] 111 + '|' => add_instr!(Custom(&|state| std::mem::swap(&mut state.stored_location, &mut state.cursor))), [INFO] [stdout] 112 + //debug [INFO] [stdout] 113 + '?' => add_instr!(Custom(&|state| debug_print(state))), [INFO] [stdout] 114 + _ => Err(()) [INFO] [stdout] 115 ~ }).is_ok() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/lib.rs:90:20 [INFO] [stdout] | [INFO] [stdout] 90 | '[' => Ok(block_buf.push(Block(pos, CodeBuf::new()))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 90 ~ '[' => { [INFO] [stdout] 91 + let _: () = block_buf.push(Block(pos, CodeBuf::new())); [INFO] [stdout] 92 + Ok(()) [INFO] [stdout] 93 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/lib.rs:119:15 [INFO] [stdout] | [INFO] [stdout] 119 | assert!(!(block_buf.len() < 1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `block_buf.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `State` [INFO] [stdout] --> src/lib.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { [INFO] [stdout] 14 | | memory: vec![0], [INFO] [stdout] 15 | | cursor: 0, [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for State { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/lib.rs:40:14 [INFO] [stdout] | [INFO] [stdout] 40 | .expect(format!("cursor at invalid position?: {}", state.cursor).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("cursor at invalid position?: {}", state.cursor))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | assert!(!(block_buf.len() < 1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block_buf.len() >= 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/lib.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 89 | if let Ok(_) = match c { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 89 ~ if (match c { [INFO] [stdout] 90 + '[' => Ok(block_buf.push(Block(pos, CodeBuf::new()))), [INFO] [stdout] 91 + ']' => { [INFO] [stdout] 92 + if block_buf.len() <= 1 { [INFO] [stdout] 93 + return Err(ReadError::InvalidBlockEnd(pos)); [INFO] [stdout] 94 + } [INFO] [stdout] 95 + let Block(start, mut branch) = block_buf.pop().unwrap(); [INFO] [stdout] 96 + let root = current_buf!(); [INFO] [stdout] 97 + root.push(Instruction::Start(pos)); [INFO] [stdout] 98 + root.append(&mut branch); [INFO] [stdout] 99 + root.push(Instruction::End(start)); [INFO] [stdout] 100 + Ok(()) [INFO] [stdout] 101 + }, [INFO] [stdout] 102 + '+' => add_instr!(Add), [INFO] [stdout] 103 + '-' => add_instr!(Sub), [INFO] [stdout] 104 + '>' => add_instr!(Right), [INFO] [stdout] 105 + '<' => add_instr!(Left), [INFO] [stdout] 106 + ':' => add_instr!(Store), [INFO] [stdout] 107 + ';' => add_instr!(Goto), [INFO] [stdout] 108 + '.' => add_instr!(Write), [INFO] [stdout] 109 + ',' => add_instr!(Read), [INFO] [stdout] 110 + // swap [INFO] [stdout] 111 + '|' => add_instr!(Custom(&|state| std::mem::swap(&mut state.stored_location, &mut state.cursor))), [INFO] [stdout] 112 + //debug [INFO] [stdout] 113 + '?' => add_instr!(Custom(&|state| debug_print(state))), [INFO] [stdout] 114 + _ => Err(()) [INFO] [stdout] 115 ~ }).is_ok() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: passing a unit value to a function [INFO] [stdout] --> src/lib.rs:90:20 [INFO] [stdout] | [INFO] [stdout] 90 | '[' => Ok(block_buf.push(Block(pos, CodeBuf::new()))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stdout] = note: `#[warn(clippy::unit_arg)]` on by default [INFO] [stdout] help: move the expression in front of the call and replace it with the unit literal `()` [INFO] [stdout] | [INFO] [stdout] 90 ~ '[' => { [INFO] [stdout] 91 + let _: () = block_buf.push(Block(pos, CodeBuf::new())); [INFO] [stdout] 92 + Ok(()) [INFO] [stdout] 93 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/lib.rs:119:15 [INFO] [stdout] | [INFO] [stdout] 119 | assert!(!(block_buf.len() < 1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `block_buf.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.72s [INFO] running `Command { std: "docker" "inspect" "aaeea261bc508f3b98c6971acc7dab923d31bd8abb269af3c45a9681964a10fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aaeea261bc508f3b98c6971acc7dab923d31bd8abb269af3c45a9681964a10fc", kill_on_drop: false }` [INFO] [stdout] aaeea261bc508f3b98c6971acc7dab923d31bd8abb269af3c45a9681964a10fc