[INFO] cloning repository https://github.com/jayden-chan/boolean-evaluator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jayden-chan/boolean-evaluator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayden-chan%2Fboolean-evaluator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayden-chan%2Fboolean-evaluator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 06b7c923e35cbdbe5d15334c71623e678a63e9f6 [INFO] linting jayden-chan/boolean-evaluator against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjayden-chan%2Fboolean-evaluator" "/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/jayden-chan/boolean-evaluator [INFO] finished tweaking git repo https://github.com/jayden-chan/boolean-evaluator [INFO] tweaked toml for git repo https://github.com/jayden-chan/boolean-evaluator written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jayden-chan/boolean-evaluator 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/jayden-chan/boolean-evaluator 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] [stderr] Blocking waiting for file lock on package cache [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] 583bb16f7838b2ebd4f4dea0c9d2be281b73ec578554fb7c6a98fa853cb69f2e [INFO] running `Command { std: "docker" "start" "-a" "583bb16f7838b2ebd4f4dea0c9d2be281b73ec578554fb7c6a98fa853cb69f2e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "583bb16f7838b2ebd4f4dea0c9d2be281b73ec578554fb7c6a98fa853cb69f2e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "583bb16f7838b2ebd4f4dea0c9d2be281b73ec578554fb7c6a98fa853cb69f2e", kill_on_drop: false }` [INFO] [stdout] 583bb16f7838b2ebd4f4dea0c9d2be281b73ec578554fb7c6a98fa853cb69f2e [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] 422fcc24099dfb4fee6d535ac660b3c74fc769d1f5007e1c5875af05b5da2e8c [INFO] running `Command { std: "docker" "start" "-a" "422fcc24099dfb4fee6d535ac660b3c74fc769d1f5007e1c5875af05b5da2e8c", kill_on_drop: false }` [INFO] [stderr] Checking boolean-evaluator v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/evaluator.rs:4:25 [INFO] [stdout] | [INFO] [stdout] 4 | pub fn evaluate_postfix<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/evaluator.rs:48:74 [INFO] [stdout] | [INFO] [stdout] 48 | Token::LogicalImp => operand_stack.push(Token::Value(!(left_value && !right_value))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!left_value || right_value` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:25:45 [INFO] [stdout] | [INFO] [stdout] 25 | ... _ => return Err(format!("Multiple variables undefined")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Multiple variables undefined".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/parser.rs:43:67 [INFO] [stdout] | [INFO] [stdout] 43 | if curr_char != "~" && *t == Token::OpenParen { [INFO] [stdout] | ___________________________________________________________________^ [INFO] [stdout] 44 | | break; [INFO] [stdout] 45 | | } else if curr_char == "~" && *t != Token::LogicalNot { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/parser.rs:45:75 [INFO] [stdout] | [INFO] [stdout] 45 | } else if curr_char == "~" && *t != Token::LogicalNot { [INFO] [stdout] | ___________________________________________________________________________^ [INFO] [stdout] 46 | | break; [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter_map()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/main.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | .filter_map(|e| e.ok()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/main.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | let all_lines = io::BufReader::new(file) [INFO] [stdout] | _____________________^ [INFO] [stdout] 27 | | .lines() [INFO] [stdout] | |________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/main.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/main.rs:51:17 [INFO] [stdout] | [INFO] [stdout] 51 | for i in 0..(2 as usize).pow(variables.len() as u32) { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `2_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/evaluator.rs:4:25 [INFO] [stdout] | [INFO] [stdout] 4 | pub fn evaluate_postfix<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/evaluator.rs:48:74 [INFO] [stdout] | [INFO] [stdout] 48 | Token::LogicalImp => operand_stack.push(Token::Value(!(left_value && !right_value))), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!left_value || right_value` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:25:45 [INFO] [stdout] | [INFO] [stdout] 25 | ... _ => return Err(format!("Multiple variables undefined")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Multiple variables undefined".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 92 - assert_eq!(result.unwrap(), true); [INFO] [stdout] 92 + assert!(result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | assert_eq!(result.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 109 - assert_eq!(result.unwrap(), false); [INFO] [stdout] 109 + assert!(!result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | assert_eq!(result.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 126 - assert_eq!(result.unwrap(), false); [INFO] [stdout] 126 + assert!(!result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:143:9 [INFO] [stdout] | [INFO] [stdout] 143 | assert_eq!(result.unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 143 - assert_eq!(result.unwrap(), true); [INFO] [stdout] 143 + assert!(result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | assert_eq!(result.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 161 - assert_eq!(result.unwrap(), false); [INFO] [stdout] 161 + assert!(!result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/evaluator.rs:183:9 [INFO] [stdout] | [INFO] [stdout] 183 | assert_eq!(result.unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 183 - assert_eq!(result.unwrap(), false); [INFO] [stdout] 183 + assert!(!result.unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/parser.rs:43:67 [INFO] [stdout] | [INFO] [stdout] 43 | if curr_char != "~" && *t == Token::OpenParen { [INFO] [stdout] | ___________________________________________________________________^ [INFO] [stdout] 44 | | break; [INFO] [stdout] 45 | | } else if curr_char == "~" && *t != Token::LogicalNot { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/parser.rs:45:75 [INFO] [stdout] | [INFO] [stdout] 45 | } else if curr_char == "~" && *t != Token::LogicalNot { [INFO] [stdout] | ___________________________________________________________________________^ [INFO] [stdout] 46 | | break; [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter_map()` will run forever if the iterator repeatedly produces an `Err` [INFO] [stdout] --> src/main.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | .filter_map(|e| e.ok()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `map_while(Result::ok)` [INFO] [stdout] | [INFO] [stdout] note: this expression returning a `std::io::Lines` may produce an infinite number of `Err` in case of a read error [INFO] [stdout] --> src/main.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | let all_lines = io::BufReader::new(file) [INFO] [stdout] | _____________________^ [INFO] [stdout] 27 | | .lines() [INFO] [stdout] | |________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok [INFO] [stdout] = note: `#[warn(clippy::lines_filter_map_ok)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/main.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/main.rs:51:17 [INFO] [stdout] | [INFO] [stdout] 51 | for i in 0..(2 as usize).pow(variables.len() as u32) { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `2_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s [INFO] running `Command { std: "docker" "inspect" "422fcc24099dfb4fee6d535ac660b3c74fc769d1f5007e1c5875af05b5da2e8c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "422fcc24099dfb4fee6d535ac660b3c74fc769d1f5007e1c5875af05b5da2e8c", kill_on_drop: false }` [INFO] [stdout] 422fcc24099dfb4fee6d535ac660b3c74fc769d1f5007e1c5875af05b5da2e8c