[INFO] cloning repository https://github.com/rzeigler/loxide [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rzeigler/loxide" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frzeigler%2Floxide", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frzeigler%2Floxide'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 39148b20e3e0a64c1734ae4e8da4e4f529c3648b [INFO] linting rzeigler/loxide against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frzeigler%2Floxide" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/rzeigler/loxide [INFO] finished tweaking git repo https://github.com/rzeigler/loxide [INFO] tweaked toml for git repo https://github.com/rzeigler/loxide written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/rzeigler/loxide 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/rzeigler/loxide 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] Downloading crates ... [INFO] [stderr] Downloaded syn v2.0.41 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 8fc294ad451d3f9a2d5faf1a8bd7821930f824feb4dc59b4ed993a0ceb3c7fa1 [INFO] running `Command { std: "docker" "start" "-a" "8fc294ad451d3f9a2d5faf1a8bd7821930f824feb4dc59b4ed993a0ceb3c7fa1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8fc294ad451d3f9a2d5faf1a8bd7821930f824feb4dc59b4ed993a0ceb3c7fa1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8fc294ad451d3f9a2d5faf1a8bd7821930f824feb4dc59b4ed993a0ceb3c7fa1", kill_on_drop: false }` [INFO] [stdout] 8fc294ad451d3f9a2d5faf1a8bd7821930f824feb4dc59b4ed993a0ceb3c7fa1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 2daf50a44a45a7741cd5de5e0346a32b7669de4f1ea79f73913640a26592d225 [INFO] running `Command { std: "docker" "start" "-a" "2daf50a44a45a7741cd5de5e0346a32b7669de4f1ea79f73913640a26592d225", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.70 [INFO] [stderr] Compiling thiserror v1.0.51 [INFO] [stderr] Compiling anyhow v1.0.75 [INFO] [stderr] Compiling num-traits v0.2.17 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Compiling syn v2.0.41 [INFO] [stderr] Checking ordered-float v4.2.0 [INFO] [stderr] Compiling thiserror-impl v1.0.51 [INFO] [stderr] Checking loxide v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Path` and `VarError` [INFO] [stdout] --> src/interpreter/stdlib.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | env::{self, VarError}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 5 | path::{Path, PathBuf}, [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 imports: `Path` and `VarError` [INFO] [stdout] --> src/interpreter/stdlib.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | env::{self, VarError}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 5 | path::{Path, PathBuf}, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:540:17 [INFO] [stdout] | [INFO] [stdout] 540 | object: object, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `object` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:541:17 [INFO] [stdout] | [INFO] [stdout] 541 | property: property, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `property` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:540:17 [INFO] [stdout] | [INFO] [stdout] 540 | object: object, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `object` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parser.rs:541:17 [INFO] [stdout] | [INFO] [stdout] 541 | property: property, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `property` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:132:26 [INFO] [stdout] | [INFO] [stdout] 132 | pub const THIS_LITERAL: &'static str = "this"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:133:27 [INFO] [stdout] | [INFO] [stdout] 133 | pub const SUPER_LITERAL: &'static str = "super"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:135:37 [INFO] [stdout] | [INFO] [stdout] 135 | const KEYWORD_LITERAL_TO_SYMBOL: [(&'static str, Keyword); 17] = [ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:607:18 [INFO] [stdout] | [INFO] [stdout] 607 | const WS_CHARS: &'static [u8] = b" \r\t"; [INFO] [stdout] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:132:26 [INFO] [stdout] | [INFO] [stdout] 132 | pub const THIS_LITERAL: &'static str = "this"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:133:27 [INFO] [stdout] | [INFO] [stdout] 133 | pub const SUPER_LITERAL: &'static str = "super"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:135:37 [INFO] [stdout] | [INFO] [stdout] 135 | const KEYWORD_LITERAL_TO_SYMBOL: [(&'static str, Keyword); 17] = [ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/scanner.rs:607:18 [INFO] [stdout] | [INFO] [stdout] 607 | const WS_CHARS: &'static [u8] = b" \r\t"; [INFO] [stdout] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `method` [INFO] [stdout] --> src/ast.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | method, [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `method: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `method` [INFO] [stdout] --> src/ast.rs:124:17 [INFO] [stdout] | [INFO] [stdout] 124 | method, [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `method: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestErrorReporter` is never constructed [INFO] [stdout] --> src/parser.rs:27:8 [INFO] [stdout] | [INFO] [stdout] 27 | struct TestErrorReporter; [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 lifetime isn't used in the impl [INFO] [stdout] --> src/ast.rs:106:6 [INFO] [stdout] | [INFO] [stdout] 106 | impl<'a> Display for Expr { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/ast.rs:219:6 [INFO] [stdout] | [INFO] [stdout] 219 | impl<'a> Display for Literal { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/interpreter/callable.rs:51:62 [INFO] [stdout] | [INFO] [stdout] 51 | for (parameter, value) in self.parameters.iter().zip(args.into_iter()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 51 - for (parameter, value) in self.parameters.iter().zip(args.into_iter()) { [INFO] [stdout] 51 + for (parameter, value) in self.parameters.iter().zip(args) { [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/callable.rs:52:44 [INFO] [stdout] | [INFO] [stdout] 52 | interpreter.current_env().bind(¶meter, Some(value)); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `parameter` [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 lifetime isn't used in the impl [INFO] [stdout] --> src/ast.rs:106:6 [INFO] [stdout] | [INFO] [stdout] 106 | impl<'a> Display for Expr { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the impl [INFO] [stdout] --> src/ast.rs:219:6 [INFO] [stdout] | [INFO] [stdout] 219 | impl<'a> Display for Literal { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/interpreter/runtime.rs:99:1 [INFO] [stdout] | [INFO] [stdout] 99 | / impl ToString for Value { [INFO] [stdout] 100 | | fn to_string(&self) -> String { [INFO] [stdout] 101 | | match self { [INFO] [stdout] 102 | | Value::String(s) => s.to_owned().as_ref().to_string(), [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/interpreter/runtime.rs:106:38 [INFO] [stdout] | [INFO] [stdout] 106 | Value::Callable(func) => format!("{}", func.name()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `func.name().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: useless use of `format!` [INFO] [stdout] --> src/interpreter/runtime.rs:107:36 [INFO] [stdout] | [INFO] [stdout] 107 | Value::Class(class) => format!("{}", class.name()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `class.name().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] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/interpreter/callable.rs:51:62 [INFO] [stdout] | [INFO] [stdout] 51 | for (parameter, value) in self.parameters.iter().zip(args.into_iter()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 51 - for (parameter, value) in self.parameters.iter().zip(args.into_iter()) { [INFO] [stdout] 51 + for (parameter, value) in self.parameters.iter().zip(args) { [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/callable.rs:52:44 [INFO] [stdout] | [INFO] [stdout] 52 | interpreter.current_env().bind(¶meter, Some(value)); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `parameter` [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: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime.rs:402:17 [INFO] [stdout] | [INFO] [stdout] 402 | return Err(UnwindCause::Return(v)); [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] 402 - return Err(UnwindCause::Return(v)); [INFO] [stdout] 402 + Err(UnwindCause::Return(v)) [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/runtime.rs:329:43 [INFO] [stdout] | [INFO] [stdout] 329 | self.environment.bind(&identifier, Some(value.clone())); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:332:43 [INFO] [stdout] | [INFO] [stdout] 332 | self.environment.bind(&identifier, None); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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 block may be rewritten with the `?` operator [INFO] [stdout] --> src/interpreter/runtime.rs:345:17 [INFO] [stdout] | [INFO] [stdout] 345 | / if let Err(e) = result { [INFO] [stdout] 346 | | return Err(e); [INFO] [stdout] 347 | | } [INFO] [stdout] | |_________________^ help: replace it with: `result?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` 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/runtime.rs:356:34 [INFO] [stdout] | [INFO] [stdout] 356 | self.execute(&if_true)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `if_true` [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/runtime.rs:369:40 [INFO] [stdout] | [INFO] [stdout] 369 | match self.execute(&body) { [INFO] [stdout] | ^^^^^ help: change this to: `body` [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/runtime.rs:422:39 [INFO] [stdout] | [INFO] [stdout] 422 | self.environment.bind(&name, Some(Value::Class(class))); [INFO] [stdout] | ^^^^^ help: change this to: `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: direct implementation of `ToString` [INFO] [stdout] --> src/interpreter/runtime.rs:99:1 [INFO] [stdout] | [INFO] [stdout] 99 | / impl ToString for Value { [INFO] [stdout] 100 | | fn to_string(&self) -> String { [INFO] [stdout] 101 | | match self { [INFO] [stdout] 102 | | Value::String(s) => s.to_owned().as_ref().to_string(), [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/interpreter/runtime.rs:106:38 [INFO] [stdout] | [INFO] [stdout] 106 | Value::Callable(func) => format!("{}", func.name()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `func.name().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: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:494:26 [INFO] [stdout] | [INFO] [stdout] 494 | .map_err(|err| UnwindCause::Error(err)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/interpreter/runtime.rs:107:36 [INFO] [stdout] | [INFO] [stdout] 107 | Value::Class(class) => format!("{}", class.name()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `class.name().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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:588:55 [INFO] [stdout] | [INFO] [stdout] 588 | func.call(self, args).map_err(|e| UnwindCause::Error(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:604:38 [INFO] [stdout] | [INFO] [stdout] 604 | ... .map_err(|e| UnwindCause::Error(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime.rs:402:17 [INFO] [stdout] | [INFO] [stdout] 402 | return Err(UnwindCause::Return(v)); [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] 402 - return Err(UnwindCause::Return(v)); [INFO] [stdout] 402 + Err(UnwindCause::Return(v)) [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/runtime.rs:329:43 [INFO] [stdout] | [INFO] [stdout] 329 | self.environment.bind(&identifier, Some(value.clone())); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:332:43 [INFO] [stdout] | [INFO] [stdout] 332 | self.environment.bind(&identifier, None); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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 block may be rewritten with the `?` operator [INFO] [stdout] --> src/interpreter/runtime.rs:345:17 [INFO] [stdout] | [INFO] [stdout] 345 | / if let Err(e) = result { [INFO] [stdout] 346 | | return Err(e); [INFO] [stdout] 347 | | } [INFO] [stdout] | |_________________^ help: replace it with: `result?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` 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/runtime.rs:356:34 [INFO] [stdout] | [INFO] [stdout] 356 | self.execute(&if_true)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `if_true` [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/runtime.rs:369:40 [INFO] [stdout] | [INFO] [stdout] 369 | match self.execute(&body) { [INFO] [stdout] | ^^^^^ help: change this to: `body` [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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/interpreter/runtime.rs:776:20 [INFO] [stdout] | [INFO] [stdout] 776 | if self.current_function == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.current_function.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` 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/runtime.rs:790:30 [INFO] [stdout] | [INFO] [stdout] 790 | self.declare(&identifier); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:794:29 [INFO] [stdout] | [INFO] [stdout] 794 | self.define(&identifier); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:798:29 [INFO] [stdout] | [INFO] [stdout] 798 | self.define(&name); [INFO] [stdout] | ^^^^^ help: change this to: `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/runtime.rs:422:39 [INFO] [stdout] | [INFO] [stdout] 422 | self.environment.bind(&name, Some(Value::Class(class))); [INFO] [stdout] | ^^^^^ help: change this to: `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: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:494:26 [INFO] [stdout] | [INFO] [stdout] 494 | .map_err(|err| UnwindCause::Error(err)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:588:55 [INFO] [stdout] | [INFO] [stdout] 588 | func.call(self, args).map_err(|e| UnwindCause::Error(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/parser.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | _ = write!(self.write, "error at {}: {}\n", pos, message); [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] 57 - _ = write!(self.write, "error at {}: {}\n", pos, message); [INFO] [stdout] 57 + _ = writeln!(self.write, "error at {}: {}", pos, message); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/interpreter/runtime.rs:604:38 [INFO] [stdout] | [INFO] [stdout] 604 | ... .map_err(|e| UnwindCause::Error(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `UnwindCause::Error` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/interpreter/runtime.rs:776:20 [INFO] [stdout] | [INFO] [stdout] 776 | if self.current_function == None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.current_function.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` 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/runtime.rs:790:30 [INFO] [stdout] | [INFO] [stdout] 790 | self.declare(&identifier); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:794:29 [INFO] [stdout] | [INFO] [stdout] 794 | self.define(&identifier); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `identifier` [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/runtime.rs:798:29 [INFO] [stdout] | [INFO] [stdout] 798 | self.define(&name); [INFO] [stdout] | ^^^^^ help: change this to: `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 boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:739:16 [INFO] [stdout] | [INFO] [stdout] 739 | if !scanner.next_if(|next| *next == Symbol::Comma).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `scanner.next_if(|next| *next == Symbol::Comma).is_none()` [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: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/parser.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | _ = write!(self.write, "error at {}: {}\n", pos, message); [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] 57 - _ = write!(self.write, "error at {}: {}\n", pos, message); [INFO] [stdout] 57 + _ = writeln!(self.write, "error at {}: {}", pos, message); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:949:13 [INFO] [stdout] | [INFO] [stdout] 949 | return Err(ParsePanic {}); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 949 - return Err(ParsePanic {}); [INFO] [stdout] 949 + Err(ParsePanic {}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:953:13 [INFO] [stdout] | [INFO] [stdout] 953 | return Err(ParsePanic {}); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 953 - return Err(ParsePanic {}); [INFO] [stdout] 953 + Err(ParsePanic {}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/scanner.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | / if let Ok(Token { [INFO] [stdout] 197 | | data: TokenType::Eof, [INFO] [stdout] 198 | | pos: _, [INFO] [stdout] 199 | | }) = self.clone().next() [INFO] [stdout] ... | [INFO] [stdout] 203 | | false [INFO] [stdout] 204 | | } [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] 196 ~ matches!(self.clone().next(), Ok(Token { [INFO] [stdout] 197 + data: TokenType::Eof, [INFO] [stdout] 198 + pos: _, [INFO] [stdout] 199 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:739:16 [INFO] [stdout] | [INFO] [stdout] 739 | if !scanner.next_if(|next| *next == Symbol::Comma).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `scanner.next_if(|next| *next == Symbol::Comma).is_none()` [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 `skip(..).next()` on an iterator [INFO] [stdout] --> src/main.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | let script_path = args.skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] help: for this change `args` has to be mutable [INFO] [stdout] --> src/main.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let args = args(); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:949:13 [INFO] [stdout] | [INFO] [stdout] 949 | return Err(ParsePanic {}); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 949 - return Err(ParsePanic {}); [INFO] [stdout] 949 + Err(ParsePanic {}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:953:13 [INFO] [stdout] | [INFO] [stdout] 953 | return Err(ParsePanic {}); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 953 - return Err(ParsePanic {}); [INFO] [stdout] 953 + Err(ParsePanic {}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/interpreter/callable.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 15 | #[derive(Debug, Clone, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 19 | pub call: fn(&mut Interpreter, args: Vec) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/scanner.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | / if let Ok(Token { [INFO] [stdout] 197 | | data: TokenType::Eof, [INFO] [stdout] 198 | | pos: _, [INFO] [stdout] 199 | | }) = self.clone().next() [INFO] [stdout] ... | [INFO] [stdout] 203 | | false [INFO] [stdout] 204 | | } [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] 196 ~ matches!(self.clone().next(), Ok(Token { [INFO] [stdout] 197 + data: TokenType::Eof, [INFO] [stdout] 198 + pos: _, [INFO] [stdout] 199 + })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/scanner.rs:616:40 [INFO] [stdout] | [INFO] [stdout] 616 | let mut scanner = Scanner::new(&code); [INFO] [stdout] | ^^^^^ help: change this to: `code` [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/scanner.rs:636:40 [INFO] [stdout] | [INFO] [stdout] 636 | let mut scanner = Scanner::new(&code); [INFO] [stdout] | ^^^^^ help: change this to: `code` [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/scanner.rs:710:40 [INFO] [stdout] | [INFO] [stdout] 710 | let mut scanner = Scanner::new(&code); [INFO] [stdout] | ^^^^^ help: change this to: `code` [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/scanner.rs:742:40 [INFO] [stdout] | [INFO] [stdout] 742 | let mut scanner = Scanner::new(&code); [INFO] [stdout] | ^^^^^ help: change this to: `code` [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/scanner.rs:752:40 [INFO] [stdout] | [INFO] [stdout] 752 | let mut scanner = Scanner::new(&code); [INFO] [stdout] | ^^^^^ help: change this to: `code` [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: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/main.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | let script_path = args.skip(1).next().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(1)` [INFO] [stdout] | [INFO] [stdout] help: for this change `args` has to be mutable [INFO] [stdout] --> src/main.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let args = args(); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/interpreter/callable.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 15 | #[derive(Debug, Clone, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 19 | pub call: fn(&mut Interpreter, args: Vec) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.11s [INFO] running `Command { std: "docker" "inspect" "2daf50a44a45a7741cd5de5e0346a32b7669de4f1ea79f73913640a26592d225", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2daf50a44a45a7741cd5de5e0346a32b7669de4f1ea79f73913640a26592d225", kill_on_drop: false }` [INFO] [stdout] 2daf50a44a45a7741cd5de5e0346a32b7669de4f1ea79f73913640a26592d225