[INFO] cloning repository https://github.com/traxys/lang_test [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/traxys/lang_test" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftraxys%2Flang_test", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftraxys%2Flang_test'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d44e38ebab2fac1b98cbd974c97b8b2a117c9b8c [INFO] linting traxys/lang_test against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftraxys%2Flang_test" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/traxys/lang_test [INFO] finished tweaking git repo https://github.com/traxys/lang_test [INFO] tweaked toml for git repo https://github.com/traxys/lang_test written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/traxys/lang_test 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/traxys/lang_test 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 cc v1.0.39 [INFO] [stderr] Downloaded blake2b_simd v0.5.6 [INFO] [stderr] Downloaded maplit v1.0.1 [INFO] [stderr] Downloaded ucd-trie v0.1.2 [INFO] [stderr] Downloaded rustyline v5.0.1 [INFO] [stderr] Downloaded pest v2.1.1 [INFO] [stderr] Downloaded pest_meta v2.1.1 [INFO] [stderr] Downloaded crossbeam v0.5.0 [INFO] [stderr] Downloaded rust-argon2 v0.5.0 [INFO] [stderr] Downloaded libc v0.2.61 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 260d9a1c6573343a13229fa2f404cfece97ca4c2a95f3ac42a771ab435d3475d [INFO] running `Command { std: "docker" "start" "-a" "260d9a1c6573343a13229fa2f404cfece97ca4c2a95f3ac42a771ab435d3475d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "260d9a1c6573343a13229fa2f404cfece97ca4c2a95f3ac42a771ab435d3475d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "260d9a1c6573343a13229fa2f404cfece97ca4c2a95f3ac42a771ab435d3475d", kill_on_drop: false }` [INFO] [stdout] 260d9a1c6573343a13229fa2f404cfece97ca4c2a95f3ac42a771ab435d3475d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 4e01af60a62054c0868bb85c5fcd8983c7a65c89c87b1ed3a2ee14cce83d51a1 [INFO] running `Command { std: "docker" "start" "-a" "4e01af60a62054c0868bb85c5fcd8983c7a65c89c87b1ed3a2ee14cce83d51a1", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.61 [INFO] [stderr] Compiling syn v0.15.44 [INFO] [stderr] Compiling ucd-trie v0.1.2 [INFO] [stderr] Compiling log v0.4.8 [INFO] [stderr] Compiling maplit v1.0.1 [INFO] [stderr] Checking utf8parse v0.1.1 [INFO] [stderr] Checking unicode-segmentation v1.3.0 [INFO] [stderr] Checking pest v2.1.1 [INFO] [stderr] Checking dirs-sys v0.3.4 [INFO] [stderr] Checking nix v0.14.1 [INFO] [stderr] Checking dirs v2.0.2 [INFO] [stderr] Compiling pest_meta v2.1.1 [INFO] [stderr] Compiling pest_generator v2.1.0 [INFO] [stderr] Checking rustyline v5.0.1 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Checking lang_test v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `semi_expr` [INFO] [stdout] --> src/interpret/mod.rs:13:24 [INFO] [stdout] | [INFO] [stdout] 13 | pub use semi_resolve::{semi_expr, ResolveResult}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `semi_expr` [INFO] [stdout] --> src/interpret/mod.rs:13:24 [INFO] [stdout] | [INFO] [stdout] 13 | pub use semi_resolve::{semi_expr, ResolveResult}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completer.rs:27:47 [INFO] [stdout] | [INFO] [stdout] 27 | rl.helper_mut().unwrap().colored_prompt = format!("\x1b[1;32m>>\x1b[0m "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\x1b[1;32m>>\x1b[0m ".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: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/interpret/func.rs:35:17 [INFO] [stdout] | [INFO] [stdout] 35 | fn as_value(self) -> RefValue { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/func.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / if let Argument::Type(_) = self { [INFO] [stdout] 43 | | true [INFO] [stdout] 44 | | } else { [INFO] [stdout] 45 | | false [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 42 - if let Argument::Type(_) = self { [INFO] [stdout] 43 - true [INFO] [stdout] 44 - } else { [INFO] [stdout] 45 - false [INFO] [stdout] 46 - } [INFO] [stdout] 42 + matches!(self, Argument::Type(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpret/func.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | if !arg.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `arg.is_some()` [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: called `unwrap` on `arg` after checking its variant with `is_none` [INFO] [stdout] --> src/interpret/func.rs:121:53 [INFO] [stdout] | [INFO] [stdout] 120 | if !arg.is_none() { [INFO] [stdout] | ------------- the check is happening here [INFO] [stdout] 121 | new_args[arg_to_insert].satisfy(arg.unwrap())?; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/interpret/func.rs:112:30 [INFO] [stdout] | [INFO] [stdout] 112 | let mut remain = self.remain.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.remain` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/interpret/func.rs:131:28 [INFO] [stdout] | [INFO] [stdout] 131 | rec_depth: self.rec_depth.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.rec_depth` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpret/semi_resolve.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | / return Ok(ResolveResult { [INFO] [stdout] 29 | | ast: ASTNode::Assign { [INFO] [stdout] 30 | | lhs: var, [INFO] [stdout] 31 | | expr: Box::new(expr), [INFO] [stdout] 32 | | }, [INFO] [stdout] 33 | | is_rec, [INFO] [stdout] 34 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 28 ~ Ok(ResolveResult { [INFO] [stdout] 29 + ast: ASTNode::Assign { [INFO] [stdout] 30 + lhs: var, [INFO] [stdout] 31 + expr: Box::new(expr), [INFO] [stdout] 32 + }, [INFO] [stdout] 33 + is_rec, [INFO] [stdout] 34 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:116:32 [INFO] [stdout] | [INFO] [stdout] 116 | let mut can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 117 | | true [INFO] [stdout] 118 | | } else { [INFO] [stdout] 119 | | false [INFO] [stdout] 120 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 116 - let mut can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] 117 - true [INFO] [stdout] 118 - } else { [INFO] [stdout] 119 - false [INFO] [stdout] 120 - }; [INFO] [stdout] 116 + let mut can_eval = matches!(&partial, ASTNode::Value(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:138:32 [INFO] [stdout] | [INFO] [stdout] 138 | can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 139 | | true [INFO] [stdout] 140 | | } else { [INFO] [stdout] 141 | | false [INFO] [stdout] 142 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 138 - can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] 139 - true [INFO] [stdout] 140 - } else { [INFO] [stdout] 141 - false [INFO] [stdout] 142 - }; [INFO] [stdout] 138 + can_eval = matches!(&partial, ASTNode::Value(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:235:32 [INFO] [stdout] | [INFO] [stdout] 235 | if args.iter().all(|n| match n { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 236 | | ASTNode::Placeholder | ASTNode::Value(_) => true, [INFO] [stdout] 237 | | _ => false, [INFO] [stdout] 238 | | }) { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 235 - if args.iter().all(|n| match n { [INFO] [stdout] 236 - ASTNode::Placeholder | ASTNode::Value(_) => true, [INFO] [stdout] 237 - _ => false, [INFO] [stdout] 238 - }) { [INFO] [stdout] 235 + if args.iter().all(|n| matches!(n, ASTNode::Placeholder | ASTNode::Value(_))) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/interpret/value.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | s = &ns; [INFO] [stdout] | ^^^ help: change this to: `ns` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | o = &no; [INFO] [stdout] | ^^^ help: change this to: `no` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:84:20 [INFO] [stdout] | [INFO] [stdout] 84 | list = &next; [INFO] [stdout] | ^^^^^ help: change this to: `next` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:128:63 [INFO] [stdout] | [INFO] [stdout] 128 | Value::List { data: l, .. } => list_to_string(&l), [INFO] [stdout] | ^^ help: change this to: `l` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/interpret/value.rs:147:22 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn as_string(self) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/completer.rs:27:47 [INFO] [stdout] | [INFO] [stdout] 27 | rl.helper_mut().unwrap().colored_prompt = format!("\x1b[1;32m>>\x1b[0m "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"\x1b[1;32m>>\x1b[0m ".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: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/interpret/func.rs:35:17 [INFO] [stdout] | [INFO] [stdout] 35 | fn as_value(self) -> RefValue { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/func.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / if let Argument::Type(_) = self { [INFO] [stdout] 43 | | true [INFO] [stdout] 44 | | } else { [INFO] [stdout] 45 | | false [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 42 - if let Argument::Type(_) = self { [INFO] [stdout] 43 - true [INFO] [stdout] 44 - } else { [INFO] [stdout] 45 - false [INFO] [stdout] 46 - } [INFO] [stdout] 42 + matches!(self, Argument::Type(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpret/func.rs:120:20 [INFO] [stdout] | [INFO] [stdout] 120 | if !arg.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `arg.is_some()` [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: called `unwrap` on `arg` after checking its variant with `is_none` [INFO] [stdout] --> src/interpret/func.rs:121:53 [INFO] [stdout] | [INFO] [stdout] 120 | if !arg.is_none() { [INFO] [stdout] | ------------- the check is happening here [INFO] [stdout] 121 | new_args[arg_to_insert].satisfy(arg.unwrap())?; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/interpret/func.rs:112:30 [INFO] [stdout] | [INFO] [stdout] 112 | let mut remain = self.remain.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.remain` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/interpret/func.rs:131:28 [INFO] [stdout] | [INFO] [stdout] 131 | rec_depth: self.rec_depth.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.rec_depth` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpret/semi_resolve.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | / return Ok(ResolveResult { [INFO] [stdout] 29 | | ast: ASTNode::Assign { [INFO] [stdout] 30 | | lhs: var, [INFO] [stdout] 31 | | expr: Box::new(expr), [INFO] [stdout] 32 | | }, [INFO] [stdout] 33 | | is_rec, [INFO] [stdout] 34 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 28 ~ Ok(ResolveResult { [INFO] [stdout] 29 + ast: ASTNode::Assign { [INFO] [stdout] 30 + lhs: var, [INFO] [stdout] 31 + expr: Box::new(expr), [INFO] [stdout] 32 + }, [INFO] [stdout] 33 + is_rec, [INFO] [stdout] 34 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/main.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | / match self { [INFO] [stdout] 64 | | ASTNode::Litteral(_) [INFO] [stdout] 65 | | | ASTNode::Cond { .. } [INFO] [stdout] 66 | | | ASTNode::Value(_) [INFO] [stdout] ... | [INFO] [stdout] 71 | | _ => false, [INFO] [stdout] 72 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 63 ~ matches!(self, ASTNode::Litteral(_) [INFO] [stdout] 64 + | ASTNode::Cond { .. } [INFO] [stdout] 65 + | ASTNode::Value(_) [INFO] [stdout] 66 + | ASTNode::Expr { .. } [INFO] [stdout] 67 + | ASTNode::List(_) [INFO] [stdout] 68 + | ASTNode::MultiCall { .. } [INFO] [stdout] 69 + | ASTNode::Placeholder) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:116:32 [INFO] [stdout] | [INFO] [stdout] 116 | let mut can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 117 | | true [INFO] [stdout] 118 | | } else { [INFO] [stdout] 119 | | false [INFO] [stdout] 120 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 116 - let mut can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] 117 - true [INFO] [stdout] 118 - } else { [INFO] [stdout] 119 - false [INFO] [stdout] 120 - }; [INFO] [stdout] 116 + let mut can_eval = matches!(&partial, ASTNode::Value(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/main.rs:76:27 [INFO] [stdout] | [INFO] [stdout] 76 | fn parse(source: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 184 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `pest::error::Error`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:138:32 [INFO] [stdout] | [INFO] [stdout] 138 | can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 139 | | true [INFO] [stdout] 140 | | } else { [INFO] [stdout] 141 | | false [INFO] [stdout] 142 | | }; [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 138 - can_eval = if let ASTNode::Value(_) = &partial { [INFO] [stdout] 139 - true [INFO] [stdout] 140 - } else { [INFO] [stdout] 141 - false [INFO] [stdout] 142 - }; [INFO] [stdout] 138 + can_eval = matches!(&partial, ASTNode::Value(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpret/semi_resolve.rs:235:32 [INFO] [stdout] | [INFO] [stdout] 235 | if args.iter().all(|n| match n { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 236 | | ASTNode::Placeholder | ASTNode::Value(_) => true, [INFO] [stdout] 237 | | _ => false, [INFO] [stdout] 238 | | }) { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 235 - if args.iter().all(|n| match n { [INFO] [stdout] 236 - ASTNode::Placeholder | ASTNode::Value(_) => true, [INFO] [stdout] 237 - _ => false, [INFO] [stdout] 238 - }) { [INFO] [stdout] 235 + if args.iter().all(|n| matches!(n, ASTNode::Placeholder | ASTNode::Value(_))) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/interpret/value.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | Type, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | s = &ns; [INFO] [stdout] | ^^^ help: change this to: `ns` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | o = &no; [INFO] [stdout] | ^^^ help: change this to: `no` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:84:20 [INFO] [stdout] | [INFO] [stdout] 84 | list = &next; [INFO] [stdout] | ^^^^^ help: change this to: `next` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpret/value.rs:128:63 [INFO] [stdout] | [INFO] [stdout] 128 | Value::List { data: l, .. } => list_to_string(&l), [INFO] [stdout] | ^^ help: change this to: `l` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `as_*` usually take `self` by reference or `self` by mutable reference [INFO] [stdout] --> src/interpret/value.rs:147:22 [INFO] [stdout] | [INFO] [stdout] 147 | pub fn as_string(self) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/main.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | / match self { [INFO] [stdout] 64 | | ASTNode::Litteral(_) [INFO] [stdout] 65 | | | ASTNode::Cond { .. } [INFO] [stdout] 66 | | | ASTNode::Value(_) [INFO] [stdout] ... | [INFO] [stdout] 71 | | _ => false, [INFO] [stdout] 72 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 63 ~ matches!(self, ASTNode::Litteral(_) [INFO] [stdout] 64 + | ASTNode::Cond { .. } [INFO] [stdout] 65 + | ASTNode::Value(_) [INFO] [stdout] 66 + | ASTNode::Expr { .. } [INFO] [stdout] 67 + | ASTNode::List(_) [INFO] [stdout] 68 + | ASTNode::MultiCall { .. } [INFO] [stdout] 69 + | ASTNode::Placeholder) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `Err`-variant returned from this function is very large [INFO] [stdout] --> src/main.rs:76:27 [INFO] [stdout] | [INFO] [stdout] 76 | fn parse(source: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `Err`-variant is at least 184 bytes [INFO] [stdout] | [INFO] [stdout] = help: try reducing the size of `pest::error::Error`, for example by boxing large elements or replacing it with `Box>` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err [INFO] [stdout] = note: `#[warn(clippy::result_large_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.27s [INFO] running `Command { std: "docker" "inspect" "4e01af60a62054c0868bb85c5fcd8983c7a65c89c87b1ed3a2ee14cce83d51a1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4e01af60a62054c0868bb85c5fcd8983c7a65c89c87b1ed3a2ee14cce83d51a1", kill_on_drop: false }` [INFO] [stdout] 4e01af60a62054c0868bb85c5fcd8983c7a65c89c87b1ed3a2ee14cce83d51a1