[INFO] cloning repository https://github.com/izik1/yaplwrs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/izik1/yaplwrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fizik1%2Fyaplwrs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fizik1%2Fyaplwrs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 111ee715de7178014028321b656e2e1ce578d970 [INFO] linting izik1/yaplwrs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fizik1%2Fyaplwrs" "/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/izik1/yaplwrs [INFO] finished tweaking git repo https://github.com/izik1/yaplwrs [INFO] tweaked toml for git repo https://github.com/izik1/yaplwrs written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/izik1/yaplwrs 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/izik1/yaplwrs 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] Downloading crates ... [INFO] [stderr] Downloaded adler v0.2.3 [INFO] [stderr] Downloaded addr2line v0.13.0 [INFO] [stderr] Downloaded miniz_oxide v0.4.0 [INFO] [stderr] Downloaded either v1.6.0 [INFO] [stderr] Downloaded bit-vec v0.6.2 [INFO] [stderr] Downloaded backtrace v0.3.50 [INFO] [stderr] Downloaded object v0.20.0 [INFO] [stderr] Downloaded proptest v0.10.0 [INFO] [stderr] Downloaded libc v0.2.74 [INFO] [stderr] Downloaded gimli v0.22.0 [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] a54a803e8ee582bcde7887aea12ff872e4115fd2fcba01db1b3a7086cc8b3f70 [INFO] running `Command { std: "docker" "start" "-a" "a54a803e8ee582bcde7887aea12ff872e4115fd2fcba01db1b3a7086cc8b3f70", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a54a803e8ee582bcde7887aea12ff872e4115fd2fcba01db1b3a7086cc8b3f70", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a54a803e8ee582bcde7887aea12ff872e4115fd2fcba01db1b3a7086cc8b3f70", kill_on_drop: false }` [INFO] [stdout] a54a803e8ee582bcde7887aea12ff872e4115fd2fcba01db1b3a7086cc8b3f70 [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] 682a646d2fd5547d736ba2ebcdaa4bcdc4e7a70020d0cc490de29f88f2297ba4 [INFO] running `Command { std: "docker" "start" "-a" "682a646d2fd5547d736ba2ebcdaa4bcdc4e7a70020d0cc490de29f88f2297ba4", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.74 [INFO] [stderr] Compiling byteorder v1.3.4 [INFO] [stderr] Compiling num-traits v0.2.12 [INFO] [stderr] Checking remove_dir_all v0.5.3 [INFO] [stderr] Compiling syn v1.0.38 [INFO] [stderr] Checking bit-vec v0.6.2 [INFO] [stderr] Compiling yaplwrs v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking gimli v0.22.0 [INFO] [stderr] Compiling failure_derive v0.1.8 [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> build.rs:68:30 [INFO] [stdout] | [INFO] [stdout] 68 | let mut f = File::create(&dest_path).unwrap(); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `dest_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking adler v0.2.3 [INFO] [stderr] Checking either v1.6.0 [INFO] [stderr] Checking miniz_oxide v0.4.0 [INFO] [stderr] Checking itertools v0.9.0 [INFO] [stderr] Checking bit-set v0.5.2 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Checking object v0.20.0 [INFO] [stderr] Checking getrandom v0.1.14 [INFO] [stderr] Checking wait-timeout v0.2.0 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking rand_xorshift v0.2.0 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking tempfile v3.1.0 [INFO] [stderr] Checking rusty-fork v0.3.0 [INFO] [stderr] Checking addr2line v0.13.0 [INFO] [stderr] Checking proptest v0.10.0 [INFO] [stderr] Checking backtrace v0.3.50 [INFO] [stderr] Compiling synstructure v0.12.4 [INFO] [stderr] Checking failure v0.1.8 [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lexer.rs:148:15 [INFO] [stdout] | [INFO] [stdout] 148 | while self.chars.peek().map_or(false, &f) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 148 - while self.chars.peek().map_or(false, &f) { [INFO] [stdout] 148 + while self.chars.peek().is_some_and(&f) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lexer.rs:210:19 [INFO] [stdout] | [INFO] [stdout] 210 | while let Some(_) = self.chars.peek() { [INFO] [stdout] | ----------^^^^^^^-------------------- help: try: `while self.chars.peek().is_some()` [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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/lexer.rs:256:9 [INFO] [stdout] | [INFO] [stdout] 256 | / if let Some(lookahead) = self.chars.peek() { [INFO] [stdout] 257 | | Some(match lookahead { [INFO] [stdout] 258 | | '0'..='9' => self.lex_number(), [INFO] [stdout] 259 | | 'A'..='Z' | 'a'..='z' | '_' => self.lex_ident(), [INFO] [stdout] ... | [INFO] [stdout] 269 | | None [INFO] [stdout] 270 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ self.chars.peek().map(|lookahead| match lookahead { [INFO] [stdout] 257 + '0'..='9' => self.lex_number(), [INFO] [stdout] 258 + 'A'..='Z' | 'a'..='z' | '_' => self.lex_ident(), [INFO] [stdout] 259 + c => { [INFO] [stdout] 260 + if operator_map().keys().any(|k| k.starts_with(*c)) { [INFO] [stdout] 261 + self.lex_operator() [INFO] [stdout] 262 + } else { [INFO] [stdout] 263 + self.lex_invalid_token() [INFO] [stdout] 264 + } [INFO] [stdout] 265 + } [INFO] [stdout] 266 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/parser.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 89 | if let Some(_) = tokens.peeking_next(|tok| tok.token_type == token::Keyword::Else.into()) { [INFO] [stdout] | -------^^^^^^^--------------------------------------------------------------------------- help: try: `if tokens.peeking_next(|tok| tok.token_type == token::Keyword::Else.into()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/parser.rs:90:20 [INFO] [stdout] | [INFO] [stdout] 90 | if let Some(_) = tokens.peeking_next(|tok| tok.token_type == token::Keyword::If.into()) [INFO] [stdout] | -------^^^^^^^------------------------------------------------------------------------- help: try: `if tokens.peeking_next(|tok| tok.token_type == token::Keyword::If.into()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:129:11 [INFO] [stdout] | [INFO] [stdout] 129 | while !tokens [INFO] [stdout] | ___________^ [INFO] [stdout] 130 | | .peeking_next(|tok| tok.token_type == token::Kind::Grammar(token::Grammar::CloseParen)) [INFO] [stdout] 131 | | .is_some() [INFO] [stdout] | |__________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 129 ~ while tokens [INFO] [stdout] 130 + .peeking_next(|tok| tok.token_type == token::Kind::Grammar(token::Grammar::CloseParen)).is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prim_int` is never used [INFO] [stdout] --> src/lib.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | fn prim_int(val: i32) -> ast::Expr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/lexer.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub(crate) fn is_keyword(s: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | fn keyword_map() -> HashMap<&'static str, token::Kind> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | fn operator_map() -> HashMap<&'static str, token::Grammar> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub struct Lexer<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | impl<'a> Lexer<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 274 | impl<'a> Iterator for Lexer<'a> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] = help: move the items to before the test module was defined [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lexer.rs:148:15 [INFO] [stdout] | [INFO] [stdout] 148 | while self.chars.peek().map_or(false, &f) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 148 - while self.chars.peek().map_or(false, &f) { [INFO] [stdout] 148 + while self.chars.peek().is_some_and(&f) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lexer.rs:210:19 [INFO] [stdout] | [INFO] [stdout] 210 | while let Some(_) = self.chars.peek() { [INFO] [stdout] | ----------^^^^^^^-------------------- help: try: `while self.chars.peek().is_some()` [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] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/lexer.rs:256:9 [INFO] [stdout] | [INFO] [stdout] 256 | / if let Some(lookahead) = self.chars.peek() { [INFO] [stdout] 257 | | Some(match lookahead { [INFO] [stdout] 258 | | '0'..='9' => self.lex_number(), [INFO] [stdout] 259 | | 'A'..='Z' | 'a'..='z' | '_' => self.lex_ident(), [INFO] [stdout] ... | [INFO] [stdout] 269 | | None [INFO] [stdout] 270 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 256 ~ self.chars.peek().map(|lookahead| match lookahead { [INFO] [stdout] 257 + '0'..='9' => self.lex_number(), [INFO] [stdout] 258 + 'A'..='Z' | 'a'..='z' | '_' => self.lex_ident(), [INFO] [stdout] 259 + c => { [INFO] [stdout] 260 + if operator_map().keys().any(|k| k.starts_with(*c)) { [INFO] [stdout] 261 + self.lex_operator() [INFO] [stdout] 262 + } else { [INFO] [stdout] 263 + self.lex_invalid_token() [INFO] [stdout] 264 + } [INFO] [stdout] 265 + } [INFO] [stdout] 266 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/parser.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 89 | if let Some(_) = tokens.peeking_next(|tok| tok.token_type == token::Keyword::Else.into()) { [INFO] [stdout] | -------^^^^^^^--------------------------------------------------------------------------- help: try: `if tokens.peeking_next(|tok| tok.token_type == token::Keyword::Else.into()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/parser.rs:90:20 [INFO] [stdout] | [INFO] [stdout] 90 | if let Some(_) = tokens.peeking_next(|tok| tok.token_type == token::Keyword::If.into()) [INFO] [stdout] | -------^^^^^^^------------------------------------------------------------------------- help: try: `if tokens.peeking_next(|tok| tok.token_type == token::Keyword::If.into()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:129:11 [INFO] [stdout] | [INFO] [stdout] 129 | while !tokens [INFO] [stdout] | ___________^ [INFO] [stdout] 130 | | .peeking_next(|tok| tok.token_type == token::Kind::Grammar(token::Grammar::CloseParen)) [INFO] [stdout] 131 | | .is_some() [INFO] [stdout] | |__________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 129 ~ while tokens [INFO] [stdout] 130 + .peeking_next(|tok| tok.token_type == token::Kind::Grammar(token::Grammar::CloseParen)).is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/bin/cli.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use yaplwrs; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/bin/cli.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use yaplwrs; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.15s [INFO] running `Command { std: "docker" "inspect" "682a646d2fd5547d736ba2ebcdaa4bcdc4e7a70020d0cc490de29f88f2297ba4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "682a646d2fd5547d736ba2ebcdaa4bcdc4e7a70020d0cc490de29f88f2297ba4", kill_on_drop: false }` [INFO] [stdout] 682a646d2fd5547d736ba2ebcdaa4bcdc4e7a70020d0cc490de29f88f2297ba4