[INFO] cloning repository https://github.com/scampi/falcon [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/scampi/falcon" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscampi%2Ffalcon", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscampi%2Ffalcon'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a0cfc078d782d89ef5523957b8cc4a12e11ef9bf [INFO] linting scampi/falcon against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fscampi%2Ffalcon" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/scampi/falcon [INFO] finished tweaking git repo https://github.com/scampi/falcon [INFO] tweaked toml for git repo https://github.com/scampi/falcon written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/scampi/falcon 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/scampi/falcon 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] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded redox_syscall v0.1.51 [INFO] [stderr] Downloaded structopt-derive v0.3.1 [INFO] [stderr] Downloaded predicates-tree v1.0.0 [INFO] [stderr] Downloaded proc-macro-error v0.2.6 [INFO] [stderr] Downloaded predicates-core v1.0.0 [INFO] [stderr] Downloaded predicates v1.0.1 [INFO] [stderr] Downloaded wasi v0.5.0 [INFO] [stderr] Downloaded proc-macro2 v1.0.3 [INFO] [stderr] Downloaded ascii v0.9.1 [INFO] [stderr] Downloaded getrandom v0.1.9 [INFO] [stderr] Downloaded structopt v0.3.1 [INFO] [stderr] Downloaded syn v1.0.5 [INFO] [stderr] Downloaded regex-syntax v0.6.11 [INFO] [stderr] Downloaded regex v1.2.1 [INFO] [stderr] Downloaded libc v0.2.62 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] fd602e65cd41d9c73bb7c3ba831a20e0ee99cc7ddbb97c46ca6ac776f5fb84ac [INFO] running `Command { std: "docker" "start" "-a" "fd602e65cd41d9c73bb7c3ba831a20e0ee99cc7ddbb97c46ca6ac776f5fb84ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fd602e65cd41d9c73bb7c3ba831a20e0ee99cc7ddbb97c46ca6ac776f5fb84ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fd602e65cd41d9c73bb7c3ba831a20e0ee99cc7ddbb97c46ca6ac776f5fb84ac", kill_on_drop: false }` [INFO] [stdout] fd602e65cd41d9c73bb7c3ba831a20e0ee99cc7ddbb97c46ca6ac776f5fb84ac [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] e81b8a6abe8c10c4748109f83862faa35fc9db93ec98341d2217cb4255553e71 [INFO] running `Command { std: "docker" "start" "-a" "e81b8a6abe8c10c4748109f83862faa35fc9db93ec98341d2217cb4255553e71", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.62 [INFO] [stderr] Compiling proc-macro2 v0.4.24 [INFO] [stderr] Checking cfg-if v0.1.6 [INFO] [stderr] Checking lazy_static v1.3.0 [INFO] [stderr] Compiling proc-macro2 v1.0.3 [INFO] [stderr] Compiling getrandom v0.1.9 [INFO] [stderr] Compiling memchr v2.2.1 [INFO] [stderr] Compiling syn v1.0.5 [INFO] [stderr] Compiling cc v1.0.28 [INFO] [stderr] Compiling autocfg v0.1.1 [INFO] [stderr] Compiling ryu v1.0.0 [INFO] [stderr] Checking ppv-lite86 v0.2.5 [INFO] [stderr] Compiling serde v1.0.98 [INFO] [stderr] Checking c2-chacha v0.2.2 [INFO] [stderr] Compiling backtrace v0.3.13 [INFO] [stderr] Compiling quote v0.6.10 [INFO] [stderr] Compiling log v0.4.8 [INFO] [stderr] Compiling failure_derive v0.1.5 [INFO] [stderr] Compiling unicode-segmentation v1.2.1 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stderr] Compiling syn v0.15.23 [INFO] [stderr] Checking rand_core v0.5.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking rustc-demangle v0.1.11 [INFO] [stderr] Checking itoa v0.4.4 [INFO] [stderr] Compiling escargot v0.4.0 [INFO] [stderr] Checking rand_chacha v0.2.1 [INFO] [stderr] Compiling heck v0.3.1 [INFO] [stderr] Compiling quote v1.0.2 [INFO] [stderr] Checking predicates-core v1.0.0 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Checking aho-corasick v0.7.6 [INFO] [stderr] Checking rand v0.7.0 [INFO] [stderr] Checking thread_local v0.3.6 [INFO] [stderr] Checking ascii v0.9.1 [INFO] [stderr] Checking treeline v0.1.0 [INFO] [stderr] Compiling backtrace-sys v0.1.28 [INFO] [stderr] Checking byteorder v1.2.7 [INFO] [stderr] Checking either v1.5.0 [INFO] [stderr] Checking difference v2.0.0 [INFO] [stderr] Checking regex-syntax v0.6.11 [INFO] [stderr] Checking predicates v1.0.1 [INFO] [stderr] Checking combine v3.8.1 [INFO] [stderr] Checking predicates-tree v1.0.0 [INFO] [stderr] Checking exitcode v1.1.2 [INFO] [stderr] Checking tempfile v3.1.0 [INFO] [stderr] Checking regex v1.2.1 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling serde_derive v1.0.98 [INFO] [stderr] Compiling proc-macro-error v0.2.6 [INFO] [stderr] Checking failure v0.1.5 [INFO] [stderr] Compiling structopt-derive v0.3.1 [INFO] [stderr] Checking structopt v0.3.1 [INFO] [stderr] Checking falcon v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | use atty; [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/main.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | use exitcode; [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] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/util.rs:70:25 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn parse_string<'a, I: 'a>() -> impl Parser + 'a [INFO] [stdout] | ^ [INFO] [stdout] 71 | where [INFO] [stdout] 72 | I: RangeStream, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/util.rs:88:25 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn parse_regexp<'a, I: 'a>() -> impl Parser + 'a [INFO] [stdout] | ^ [INFO] [stdout] 89 | where [INFO] [stdout] 90 | I: RangeStream, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Parser` [INFO] [stdout] --> src/parser/stmt.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | Parser, [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: `Parser` [INFO] [stdout] --> src/parser/program.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | Parser, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking serde_json v1.0.40 [INFO] [stderr] Checking assert_cmd v0.11.1 [INFO] [stdout] warning: variant `Exit` is never constructed [INFO] [stdout] --> src/interpreter/stmt.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum StmtResult { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Exit(isize), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StmtResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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/interpreter/expr.rs:102:39 [INFO] [stdout] | [INFO] [stdout] 102 | rt.record.set(&mut rt.vars, *ty, index, new_value) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:116:30 [INFO] [stdout] | [INFO] [stdout] 116 | .set(&mut rt.vars, AssignType::Add, index, Value::from(1)) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | .set(&mut rt.vars, AssignType::Sub, index, Value::from(1)) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:149:30 [INFO] [stdout] | [INFO] [stdout] 149 | .set(&mut rt.vars, AssignType::Add, index, Value::from(1))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:171:30 [INFO] [stdout] | [INFO] [stdout] 171 | .set(&mut rt.vars, AssignType::Sub, index, Value::from(1))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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 boolean expression can be simplified [INFO] [stdout] --> src/interpreter/expr.rs:191:32 [INFO] [stdout] | [INFO] [stdout] 191 | Ok(Value::from(res == !*neg)) [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `res != *neg` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/functions/builtins.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | / match name { [INFO] [stdout] 12 | | "atan2" | "close" | "cos" | "exp" | "gsub" | "index" | "int" | "length" | "log" [INFO] [stdout] 13 | | | "match" | "rand" | "sin" | "split" | "sprintf" | "sqrt" | "srand" | "sub" | "substr" [INFO] [stdout] 14 | | | "system" | "tolower" | "toupper" => true, [INFO] [stdout] 15 | | _ => false, [INFO] [stdout] 16 | | } [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] 11 ~ matches!(name, "atan2" | "close" | "cos" | "exp" | "gsub" | "index" | "int" | "length" | "log" [INFO] [stdout] 12 + | "match" | "rand" | "sin" | "split" | "sprintf" | "sqrt" | "srand" | "sub" | "substr" [INFO] [stdout] 13 + | "system" | "tolower" | "toupper") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/functions/builtins/split.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | rt.vars.clear(&array_name)?; [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `array_name` [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/interpreter/functions/builtins/split.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | &array_name, [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `array_name` [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: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:63:25 [INFO] [stdout] | [INFO] [stdout] 63 | if !p.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `p.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:81:21 [INFO] [stdout] | [INFO] [stdout] 81 | if !p.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `p.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:209:29 [INFO] [stdout] | [INFO] [stdout] 209 | while fract != 0 && fract % 10 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `fract.is_multiple_of(10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `stderr` and `should_fail` are never used [INFO] [stdout] --> tests/common.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl<'a> Test<'a> { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn stderr(mut self, stderr: &'a str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn should_fail(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/print.rs:42:24 [INFO] [stdout] | [INFO] [stdout] 42 | run_test(Test::new(&script).input("john").stdout("hello\t%s john\n")); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/print.rs:46:19 [INFO] [stdout] | [INFO] [stdout] 46 | Test::new(&script) [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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 `impl` can be derived [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:420:1 [INFO] [stdout] | [INFO] [stdout] 420 | / impl Default for ConversionSpecifier { [INFO] [stdout] 421 | | fn default() -> Self { [INFO] [stdout] 422 | | ConversionSpecifier::Percent [INFO] [stdout] 423 | | } [INFO] [stdout] 424 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 404 + #[derive(Default)] [INFO] [stdout] 405 | enum ConversionSpecifier { [INFO] [stdout] 406 | SignedDecimal, [INFO] [stdout] ... [INFO] [stdout] 417 | String, [INFO] [stdout] 418 ~ #[default] [INFO] [stdout] 419 ~ Percent, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:475:24 [INFO] [stdout] | [INFO] [stdout] 475 | 'n' => write!(output, "\n")?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 475 - 'n' => write!(output, "\n")?, [INFO] [stdout] 475 + 'n' => writeln!(output)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:524:34 [INFO] [stdout] | [INFO] [stdout] 524 | let path = file_name(rt, &redir)?; [INFO] [stdout] | ^^^^^^ help: change this to: `redir` [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: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:562:24 [INFO] [stdout] | [INFO] [stdout] 562 | 'n' => write!(output, "\n")?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 562 - 'n' => write!(output, "\n")?, [INFO] [stdout] 562 + 'n' => writeln!(output)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:583:34 [INFO] [stdout] | [INFO] [stdout] 583 | let path = file_name(rt, &redir)?; [INFO] [stdout] | ^^^^^^ help: change this to: `redir` [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] --> tests/builtin.rs:71:24 [INFO] [stdout] | [INFO] [stdout] 71 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:83:24 [INFO] [stdout] | [INFO] [stdout] 83 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:95:24 [INFO] [stdout] | [INFO] [stdout] 95 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:103:24 [INFO] [stdout] | [INFO] [stdout] 103 | run_test(Test::new(&script).input(input).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:108:24 [INFO] [stdout] | [INFO] [stdout] 108 | run_test(Test::new(&script).input(input).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:112:24 [INFO] [stdout] | [INFO] [stdout] 112 | run_test(Test::new(&script).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:117:24 [INFO] [stdout] | [INFO] [stdout] 117 | run_test(Test::new(&script).input(input).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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/interpreter/stmt.rs:35:50 [INFO] [stdout] | [INFO] [stdout] 35 | .set(AssignType::Normal, &var, None, Value::from(key.to_owned()))?; [INFO] [stdout] | ^^^^ help: change this to: `var` [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] --> tests/builtin.rs:121:24 [INFO] [stdout] | [INFO] [stdout] 121 | run_test(Test::new(&script).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:126:24 [INFO] [stdout] | [INFO] [stdout] 126 | run_test(Test::new(&script).input(input).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:131:24 [INFO] [stdout] | [INFO] [stdout] 131 | run_test(Test::new(&script).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:135:24 [INFO] [stdout] | [INFO] [stdout] 135 | run_test(Test::new(&script).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:139:24 [INFO] [stdout] | [INFO] [stdout] 139 | run_test(Test::new(&script).stdout(output)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/value.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | / match self { [INFO] [stdout] 80 | | Value::Bool(_) | Value::String(_) | Value::Number(_) => true, [INFO] [stdout] 81 | | _ => false, [INFO] [stdout] 82 | | } [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] 79 - match self { [INFO] [stdout] 80 - Value::Bool(_) | Value::String(_) | Value::Number(_) => true, [INFO] [stdout] 81 - _ => false, [INFO] [stdout] 82 - } [INFO] [stdout] 79 + matches!(self, Value::Bool(_) | Value::String(_) | Value::Number(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Result::unwrap_or` [INFO] [stdout] --> src/interpreter/value.rs:119:33 [INFO] [stdout] | [INFO] [stdout] 119 | Value::String(s) => match s.parse::() { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 120 | | Ok(n) => n, [INFO] [stdout] 121 | | Err(_) => 0.0, [INFO] [stdout] 122 | | }, [INFO] [stdout] | |_____________^ help: replace with: `s.parse::().unwrap_or(0.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / match name { [INFO] [stdout] 63 | | "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP" => true, [INFO] [stdout] 64 | | _ => false, [INFO] [stdout] 65 | | } [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] 62 - match name { [INFO] [stdout] 63 - "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP" => true, [INFO] [stdout] 64 - _ => false, [INFO] [stdout] 65 - } [INFO] [stdout] 62 + matches!(name, "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/builtin.rs:152:19 [INFO] [stdout] | [INFO] [stdout] 152 | Test::new(&script) [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:168:24 [INFO] [stdout] | [INFO] [stdout] 168 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:179:24 [INFO] [stdout] | [INFO] [stdout] 179 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:189:24 [INFO] [stdout] | [INFO] [stdout] 189 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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] --> tests/builtin.rs:199:24 [INFO] [stdout] | [INFO] [stdout] 199 | run_test(Test::new(&script)); [INFO] [stdout] | ^^^^^^^ help: change this to: `script` [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 `map_or` can be simplified [INFO] [stdout] --> src/interpreter/variables.rs:234:34 [INFO] [stdout] | [INFO] [stdout] 234 | let is_local_array = locals.get(name).map_or(false, |value| { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 235 | | if let Value::Array(_) = value { [INFO] [stdout] 236 | | true [INFO] [stdout] 237 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 240 | | }); [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] 234 - let is_local_array = locals.get(name).map_or(false, |value| { [INFO] [stdout] 234 + let is_local_array = locals.get(name).is_some_and(|value| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:235:17 [INFO] [stdout] | [INFO] [stdout] 235 | / if let Value::Array(_) = value { [INFO] [stdout] 236 | | true [INFO] [stdout] 237 | | } else { [INFO] [stdout] 238 | | false [INFO] [stdout] 239 | | } [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 let Value::Array(_) = value { [INFO] [stdout] 236 - true [INFO] [stdout] 237 - } else { [INFO] [stdout] 238 - false [INFO] [stdout] 239 - } [INFO] [stdout] 235 + matches!(value, Value::Array(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | / if let Some(Value::Array(_)) = self.globals.get(name) { [INFO] [stdout] 246 | | true [INFO] [stdout] 247 | | } else { [INFO] [stdout] 248 | | false [INFO] [stdout] 249 | | } [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] 245 - if let Some(Value::Array(_)) = self.globals.get(name) { [INFO] [stdout] 246 - true [INFO] [stdout] 247 - } else { [INFO] [stdout] 248 - false [INFO] [stdout] 249 - } [INFO] [stdout] 245 + matches!(self.globals.get(name), Some(Value::Array(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser/expr.rs:608:46 [INFO] [stdout] | [INFO] [stdout] 608 | Expr::Assign(AssignType::new(&op), lvalue, Box::new(rvalue)) [INFO] [stdout] | ^^^ help: change this to: `op` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/parser/util.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / match name { [INFO] [stdout] 62 | | "BEGIN" | "break" | "continue" | "delete" | "do" | "else" | "END" | "exit" | "for" [INFO] [stdout] 63 | | | "function" | "getline" | "if" | "in" | "next" | "print" | "printf" | "return" [INFO] [stdout] 64 | | | "while" => true, [INFO] [stdout] 65 | | _ => false, [INFO] [stdout] 66 | | } [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] 61 ~ matches!(name, "BEGIN" | "break" | "continue" | "delete" | "do" | "else" | "END" | "exit" | "for" [INFO] [stdout] 62 + | "function" | "getline" | "if" | "in" | "next" | "print" | "printf" | "return" [INFO] [stdout] 63 + | "while") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_EvaluationError` [INFO] [stdout] 6 | pub enum EvaluationError { [INFO] [stdout] | --------------- `EvaluationError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_EvaluationError` [INFO] [stdout] 6 | pub enum EvaluationError { [INFO] [stdout] | --------------- `EvaluationError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_ParseError` [INFO] [stdout] 71 | pub enum ParseError { [INFO] [stdout] | ---------- `ParseError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_ParseError` [INFO] [stdout] 71 | pub enum ParseError { [INFO] [stdout] | ---------- `ParseError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | use atty; [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/main.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | use exitcode; [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] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter/expr.rs:253:13 [INFO] [stdout] | [INFO] [stdout] 253 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter/expr.rs:260:13 [INFO] [stdout] | [INFO] [stdout] 260 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter/expr.rs:448:13 [INFO] [stdout] | [INFO] [stdout] 448 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter/expr.rs:643:13 [INFO] [stdout] | [INFO] [stdout] 643 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter/expr.rs:833:13 [INFO] [stdout] | [INFO] [stdout] 833 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:256:13 [INFO] [stdout] | [INFO] [stdout] 256 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:264:13 [INFO] [stdout] | [INFO] [stdout] 264 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:272:13 [INFO] [stdout] | [INFO] [stdout] 272 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:280:13 [INFO] [stdout] | [INFO] [stdout] 280 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:466:13 [INFO] [stdout] | [INFO] [stdout] 466 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `err @ _` pattern can be written as just `err` [INFO] [stdout] --> src/interpreter.rs:477:13 [INFO] [stdout] | [INFO] [stdout] 477 | err @ _ => panic!("Unexpected error: {}", err), [INFO] [stdout] | ^^^^^^^ help: try: `err` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/util.rs:70:25 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn parse_string<'a, I: 'a>() -> impl Parser + 'a [INFO] [stdout] | ^ [INFO] [stdout] 71 | where [INFO] [stdout] 72 | I: RangeStream, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/util.rs:88:25 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn parse_regexp<'a, I: 'a>() -> impl Parser + 'a [INFO] [stdout] | ^ [INFO] [stdout] 89 | where [INFO] [stdout] 90 | I: RangeStream, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Exit` is never constructed [INFO] [stdout] --> src/interpreter/stmt.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum StmtResult { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Exit(isize), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StmtResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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/interpreter/expr.rs:102:39 [INFO] [stdout] | [INFO] [stdout] 102 | rt.record.set(&mut rt.vars, *ty, index, new_value) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:116:30 [INFO] [stdout] | [INFO] [stdout] 116 | .set(&mut rt.vars, AssignType::Add, index, Value::from(1)) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:130:30 [INFO] [stdout] | [INFO] [stdout] 130 | .set(&mut rt.vars, AssignType::Sub, index, Value::from(1)) [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:149:30 [INFO] [stdout] | [INFO] [stdout] 149 | .set(&mut rt.vars, AssignType::Add, index, Value::from(1))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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/interpreter/expr.rs:171:30 [INFO] [stdout] | [INFO] [stdout] 171 | .set(&mut rt.vars, AssignType::Sub, index, Value::from(1))?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `rt.vars` [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 boolean expression can be simplified [INFO] [stdout] --> src/interpreter/expr.rs:191:32 [INFO] [stdout] | [INFO] [stdout] 191 | Ok(Value::from(res == !*neg)) [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `res != *neg` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/functions/builtins.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | / match name { [INFO] [stdout] 12 | | "atan2" | "close" | "cos" | "exp" | "gsub" | "index" | "int" | "length" | "log" [INFO] [stdout] 13 | | | "match" | "rand" | "sin" | "split" | "sprintf" | "sqrt" | "srand" | "sub" | "substr" [INFO] [stdout] 14 | | | "system" | "tolower" | "toupper" => true, [INFO] [stdout] 15 | | _ => false, [INFO] [stdout] 16 | | } [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] 11 ~ matches!(name, "atan2" | "close" | "cos" | "exp" | "gsub" | "index" | "int" | "length" | "log" [INFO] [stdout] 12 + | "match" | "rand" | "sin" | "split" | "sprintf" | "sqrt" | "srand" | "sub" | "substr" [INFO] [stdout] 13 + | "system" | "tolower" | "toupper") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/functions/builtins/split.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | rt.vars.clear(&array_name)?; [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `array_name` [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/interpreter/functions/builtins/split.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | &array_name, [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `array_name` [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: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:63:25 [INFO] [stdout] | [INFO] [stdout] 63 | if !p.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `p.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:81:21 [INFO] [stdout] | [INFO] [stdout] 81 | if !p.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `p.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:209:29 [INFO] [stdout] | [INFO] [stdout] 209 | while fract != 0 && fract % 10 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace with: `fract.is_multiple_of(10)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:420:1 [INFO] [stdout] | [INFO] [stdout] 420 | / impl Default for ConversionSpecifier { [INFO] [stdout] 421 | | fn default() -> Self { [INFO] [stdout] 422 | | ConversionSpecifier::Percent [INFO] [stdout] 423 | | } [INFO] [stdout] 424 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 404 + #[derive(Default)] [INFO] [stdout] 405 | enum ConversionSpecifier { [INFO] [stdout] 406 | SignedDecimal, [INFO] [stdout] ... [INFO] [stdout] 417 | String, [INFO] [stdout] 418 ~ #[default] [INFO] [stdout] 419 ~ Percent, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:475:24 [INFO] [stdout] | [INFO] [stdout] 475 | 'n' => write!(output, "\n")?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 475 - 'n' => write!(output, "\n")?, [INFO] [stdout] 475 + 'n' => writeln!(output)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:524:34 [INFO] [stdout] | [INFO] [stdout] 524 | let path = file_name(rt, &redir)?; [INFO] [stdout] | ^^^^^^ help: change this to: `redir` [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: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:562:24 [INFO] [stdout] | [INFO] [stdout] 562 | 'n' => write!(output, "\n")?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 562 - 'n' => write!(output, "\n")?, [INFO] [stdout] 562 + 'n' => writeln!(output)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/stmt/formatting.rs:583:34 [INFO] [stdout] | [INFO] [stdout] 583 | let path = file_name(rt, &redir)?; [INFO] [stdout] | ^^^^^^ help: change this to: `redir` [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/interpreter/stmt/formatting.rs:672:36 [INFO] [stdout] | [INFO] [stdout] 672 | conv.convert(&mut out, &arg).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `arg` [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/interpreter/stmt.rs:35:50 [INFO] [stdout] | [INFO] [stdout] 35 | .set(AssignType::Normal, &var, None, Value::from(key.to_owned()))?; [INFO] [stdout] | ^^^^ help: change this to: `var` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/value.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | / match self { [INFO] [stdout] 80 | | Value::Bool(_) | Value::String(_) | Value::Number(_) => true, [INFO] [stdout] 81 | | _ => false, [INFO] [stdout] 82 | | } [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] 79 - match self { [INFO] [stdout] 80 - Value::Bool(_) | Value::String(_) | Value::Number(_) => true, [INFO] [stdout] 81 - _ => false, [INFO] [stdout] 82 - } [INFO] [stdout] 79 + matches!(self, Value::Bool(_) | Value::String(_) | Value::Number(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Result::unwrap_or` [INFO] [stdout] --> src/interpreter/value.rs:119:33 [INFO] [stdout] | [INFO] [stdout] 119 | Value::String(s) => match s.parse::() { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 120 | | Ok(n) => n, [INFO] [stdout] 121 | | Err(_) => 0.0, [INFO] [stdout] 122 | | }, [INFO] [stdout] | |_____________^ help: replace with: `s.parse::().unwrap_or(0.0)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / match name { [INFO] [stdout] 63 | | "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP" => true, [INFO] [stdout] 64 | | _ => false, [INFO] [stdout] 65 | | } [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] 62 - match name { [INFO] [stdout] 63 - "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP" => true, [INFO] [stdout] 64 - _ => false, [INFO] [stdout] 65 - } [INFO] [stdout] 62 + matches!(name, "FNR" | "FS" | "NF" | "NR" | "OFMT" | "OFS" | "ORS" | "SUBSEP") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/interpreter/variables.rs:234:34 [INFO] [stdout] | [INFO] [stdout] 234 | let is_local_array = locals.get(name).map_or(false, |value| { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 235 | | if let Value::Array(_) = value { [INFO] [stdout] 236 | | true [INFO] [stdout] 237 | | } else { [INFO] [stdout] ... | [INFO] [stdout] 240 | | }); [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] 234 - let is_local_array = locals.get(name).map_or(false, |value| { [INFO] [stdout] 234 + let is_local_array = locals.get(name).is_some_and(|value| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:235:17 [INFO] [stdout] | [INFO] [stdout] 235 | / if let Value::Array(_) = value { [INFO] [stdout] 236 | | true [INFO] [stdout] 237 | | } else { [INFO] [stdout] 238 | | false [INFO] [stdout] 239 | | } [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 let Value::Array(_) = value { [INFO] [stdout] 236 - true [INFO] [stdout] 237 - } else { [INFO] [stdout] 238 - false [INFO] [stdout] 239 - } [INFO] [stdout] 235 + matches!(value, Value::Array(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/variables.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | / if let Some(Value::Array(_)) = self.globals.get(name) { [INFO] [stdout] 246 | | true [INFO] [stdout] 247 | | } else { [INFO] [stdout] 248 | | false [INFO] [stdout] 249 | | } [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] 245 - if let Some(Value::Array(_)) = self.globals.get(name) { [INFO] [stdout] 246 - true [INFO] [stdout] 247 - } else { [INFO] [stdout] 248 - false [INFO] [stdout] 249 - } [INFO] [stdout] 245 + matches!(self.globals.get(name), Some(Value::Array(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser/expr.rs:608:46 [INFO] [stdout] | [INFO] [stdout] 608 | Expr::Assign(AssignType::new(&op), lvalue, Box::new(rvalue)) [INFO] [stdout] | ^^^ help: change this to: `op` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/parser/util.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / match name { [INFO] [stdout] 62 | | "BEGIN" | "break" | "continue" | "delete" | "do" | "else" | "END" | "exit" | "for" [INFO] [stdout] 63 | | | "function" | "getline" | "if" | "in" | "next" | "print" | "printf" | "return" [INFO] [stdout] 64 | | | "while" => true, [INFO] [stdout] 65 | | _ => false, [INFO] [stdout] 66 | | } [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] 61 ~ matches!(name, "BEGIN" | "break" | "continue" | "delete" | "do" | "else" | "END" | "exit" | "for" [INFO] [stdout] 62 + | "function" | "getline" | "if" | "in" | "next" | "print" | "printf" | "return" [INFO] [stdout] 63 + | "while") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_EvaluationError` [INFO] [stdout] 6 | pub enum EvaluationError { [INFO] [stdout] | --------------- `EvaluationError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_EvaluationError` [INFO] [stdout] 6 | pub enum EvaluationError { [INFO] [stdout] | --------------- `EvaluationError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_ParseError` [INFO] [stdout] 71 | pub enum ParseError { [INFO] [stdout] | ---------- `ParseError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/errors.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | #[derive(Debug, Fail)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_ParseError` [INFO] [stdout] 71 | pub enum ParseError { [INFO] [stdout] | ---------- `ParseError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.01s [INFO] running `Command { std: "docker" "inspect" "e81b8a6abe8c10c4748109f83862faa35fc9db93ec98341d2217cb4255553e71", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e81b8a6abe8c10c4748109f83862faa35fc9db93ec98341d2217cb4255553e71", kill_on_drop: false }` [INFO] [stdout] e81b8a6abe8c10c4748109f83862faa35fc9db93ec98341d2217cb4255553e71