[INFO] cloning repository https://github.com/skaphi/lox_interpreter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/skaphi/lox_interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskaphi%2Flox_interpreter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskaphi%2Flox_interpreter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ba22cba8863f1b031d4a01e1c9caa5b8b1653467 [INFO] linting skaphi/lox_interpreter against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskaphi%2Flox_interpreter" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/skaphi/lox_interpreter [INFO] finished tweaking git repo https://github.com/skaphi/lox_interpreter [INFO] tweaked toml for git repo https://github.com/skaphi/lox_interpreter written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/skaphi/lox_interpreter 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/skaphi/lox_interpreter 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7d612289ef78e923905731c32e98c9524684171129a0ffdf26be90377226e97a [INFO] running `Command { std: "docker" "start" "-a" "7d612289ef78e923905731c32e98c9524684171129a0ffdf26be90377226e97a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7d612289ef78e923905731c32e98c9524684171129a0ffdf26be90377226e97a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7d612289ef78e923905731c32e98c9524684171129a0ffdf26be90377226e97a", kill_on_drop: false }` [INFO] [stdout] 7d612289ef78e923905731c32e98c9524684171129a0ffdf26be90377226e97a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9db6e7ddc353efb743e0bc65f3285c27c9261eafeae10839039ce20c836c49dd [INFO] running `Command { std: "docker" "start" "-a" "9db6e7ddc353efb743e0bc65f3285c27c9261eafeae10839039ce20c836c49dd", kill_on_drop: false }` [INFO] [stderr] Compiling anyhow v1.0.86 [INFO] [stderr] Compiling thiserror v1.0.63 [INFO] [stderr] Compiling syn v2.0.75 [INFO] [stderr] Compiling thiserror-impl v1.0.63 [INFO] [stderr] Checking codecrafters-interpreter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `ExtEvaluationError` [INFO] [stdout] --> src/main.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | use evaluator::{ext_run, EvaluationValue, ExtEvaluationError}; [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: `ExtEvaluationError` [INFO] [stdout] --> src/main.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | use evaluator::{ext_run, EvaluationValue, ExtEvaluationError}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_variable_any_depth` is never used [INFO] [stdout] --> src/evaluator.rs:419:4 [INFO] [stdout] | [INFO] [stdout] 419 | fn get_variable_any_depth( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `modify_variable_any_depth` is never used [INFO] [stdout] --> src/evaluator.rs:441:4 [INFO] [stdout] | [INFO] [stdout] 441 | fn modify_variable_any_depth( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `peek_identifier` is never used [INFO] [stdout] --> src/parser_utils.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn peek_identifier(tokens: &mut Peekable>) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | return self.obj_pool.len() - 1; [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] 42 - return self.obj_pool.len() - 1; [INFO] [stdout] 42 + self.obj_pool.len() - 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:116:25 [INFO] [stdout] | [INFO] [stdout] 116 | / return Err(EvaluationError { [INFO] [stdout] 117 | | stderr_message: format!("No paret to get super method from"), [INFO] [stdout] 118 | | }); [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] 116 ~ Err(EvaluationError { [INFO] [stdout] 117 + stderr_message: format!("No paret to get super method from"), [INFO] [stdout] 118 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:123:17 [INFO] [stdout] | [INFO] [stdout] 123 | / return Err(EvaluationError { [INFO] [stdout] 124 | | stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] 125 | | }); [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] 123 ~ Err(EvaluationError { [INFO] [stdout] 124 + stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] 125 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:100:41 [INFO] [stdout] | [INFO] [stdout] 100 | stderr_message: format!("No paret to get super method from"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"No paret to get super method from".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/evaluator.rs:117:45 [INFO] [stdout] | [INFO] [stdout] 117 | ... stderr_message: format!("No paret to get super method from"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"No paret to get super method from".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:124:37 [INFO] [stdout] | [INFO] [stdout] 124 | stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Failed to get method on non-object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:143:33 [INFO] [stdout] | [INFO] [stdout] 143 | stderr_message: format!("Failed to get method"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Failed to get method".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: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | let old_obj = mem::replace(&mut self.current_object, Some(callable.active_obj)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.current_object.replace(callable.active_obj)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:148:23 [INFO] [stdout] | [INFO] [stdout] 148 | let old_cls = mem::replace(&mut self.current_class, Some(callable.active_class.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.current_class.replace(callable.active_class.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | let foo = current_scope [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] = note: `#[warn(clippy::disallowed_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:398:40 [INFO] [stdout] | [INFO] [stdout] 398 | Some(par) => Rc::clone(&par), [INFO] [stdout] | ^^^^ help: change this to: `par` [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: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:425:13 [INFO] [stdout] | [INFO] [stdout] 425 | let foo = scope_rc.borrow(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:449:17 [INFO] [stdout] | [INFO] [stdout] 449 | let mut foo = scope_rc.borrow_mut(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/evaluator.rs:477:26 [INFO] [stdout] | [INFO] [stdout] 477 | .map(|x| Rc::clone(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `Rc::clone` [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: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:473:21 [INFO] [stdout] | [INFO] [stdout] 473 | let foo = current_scope [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:485:40 [INFO] [stdout] | [INFO] [stdout] 485 | Some(par) => Rc::clone(&par), [INFO] [stdout] | ^^^^ help: change this to: `par` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:504:8 [INFO] [stdout] | [INFO] [stdout] 504 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` 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/evaluator.rs:528:52 [INFO] [stdout] | [INFO] [stdout] 528 | O::Add => Some(EV::String(s1.clone() + &s2)), [INFO] [stdout] | ^^^ help: change this to: `s2` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:560:8 [INFO] [stdout] | [INFO] [stdout] 560 | b: &Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&Node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:566:48 [INFO] [stdout] | [INFO] [stdout] 566 | let operand = internal_evaluate_expression(&b, context, estate)?; [INFO] [stdout] | ^^ help: change this to: `b` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:602:8 [INFO] [stdout] | [INFO] [stdout] 602 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:616:17 [INFO] [stdout] | [INFO] [stdout] 616 | return Ok(rhs.clone()); [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] 616 ~ Ok(rhs.clone()) [INFO] [stdout] 617 | } else { [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:618:17 [INFO] [stdout] | [INFO] [stdout] 618 | return Ok(EvaluationValue::Bool(false)); [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] 618 ~ Ok(EvaluationValue::Bool(false)) [INFO] [stdout] 619 | } [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:628:17 [INFO] [stdout] | [INFO] [stdout] 628 | return Ok(rhs.clone()); [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] 628 ~ Ok(rhs.clone()) [INFO] [stdout] 629 | } else { [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:630:17 [INFO] [stdout] | [INFO] [stdout] 630 | return Ok(rhs.clone()); [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] 630 ~ Ok(rhs.clone()) [INFO] [stdout] 631 | } [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/evaluator.rs:627:33 [INFO] [stdout] | [INFO] [stdout] 627 | if !is_truthy(&rhs) { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 628 | | return Ok(rhs.clone()); [INFO] [stdout] 629 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/evaluator.rs:629:20 [INFO] [stdout] | [INFO] [stdout] 629 | } else { [INFO] [stdout] | ____________________^ [INFO] [stdout] 630 | | return Ok(rhs.clone()); [INFO] [stdout] 631 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/evaluator.rs:641:23 [INFO] [stdout] | [INFO] [stdout] 641 | E::Bool(b) => b.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:653:8 [INFO] [stdout] | [INFO] [stdout] 653 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:697:5 [INFO] [stdout] | [INFO] [stdout] 697 | / return Err(EvaluationError { [INFO] [stdout] 698 | | stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] 699 | | }); [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] 697 ~ Err(EvaluationError { [INFO] [stdout] 698 + stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] 699 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:680:41 [INFO] [stdout] | [INFO] [stdout] 680 | stderr_message: format!( [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 681 | | "LHS of assigned accessor does not evaluate to an object" [INFO] [stdout] 682 | | ), [INFO] [stdout] | |_________________________^ help: consider using `.to_string()`: `"LHS of assigned accessor does not evaluate to an object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:698:25 [INFO] [stdout] | [INFO] [stdout] 698 | stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"LHS of asignment is not an identifier, or an accessor".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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:704:11 [INFO] [stdout] | [INFO] [stdout] 704 | args: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 704 - args: &Vec>, [INFO] [stdout] 704 + args: &[Node], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:731:48 [INFO] [stdout] | [INFO] [stdout] 731 | let val = internal_evaluate_expression(&arg, calling_context, estate)?; [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: the function `create_local_variable` doesn't need a mutable reference [INFO] [stdout] --> src/evaluator.rs:732:48 [INFO] [stdout] | [INFO] [stdout] 732 | create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 732 - create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] 732 + create_local_variable(¶meter_name, &local_context)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:732:31 [INFO] [stdout] | [INFO] [stdout] 732 | create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `parameter_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: the function `modify_variable` doesn't need a mutable reference [INFO] [stdout] --> src/evaluator.rs:733:56 [INFO] [stdout] | [INFO] [stdout] 733 | modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 733 - modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] 733 + modify_variable(¶meter_name, val, Some(0), &local_context)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:733:25 [INFO] [stdout] | [INFO] [stdout] 733 | modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `parameter_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: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:762:5 [INFO] [stdout] | [INFO] [stdout] 762 | return Ok(None); [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] 762 - return Ok(None); [INFO] [stdout] 762 + Ok(None) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:744:11 [INFO] [stdout] | [INFO] [stdout] 744 | args: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 744 - args: &Vec>, [INFO] [stdout] 744 + args: &[Node], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:800:45 [INFO] [stdout] | [INFO] [stdout] 800 | ... stderr_message: format!("Used 'super' outside of a class",), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Used 'super' outside of a class".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:810:41 [INFO] [stdout] | [INFO] [stdout] 810 | stderr_message: format!( [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 811 | | "tried to call a method on thing which did not evaluate to object", [INFO] [stdout] 812 | | ), [INFO] [stdout] | |_________________________^ help: consider using `.to_string()`: `"tried to call a method on thing which did not evaluate to object".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: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:864:27 [INFO] [stdout] | [INFO] [stdout] 864 | let old_obj = mem::replace(&mut estate.current_object, Some(meth.active_obj.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `estate.current_object.replace(meth.active_obj.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:865:27 [INFO] [stdout] | [INFO] [stdout] 865 | let old_cls = mem::replace(&mut estate.current_class, Some(meth.active_class.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `estate.current_class.replace(meth.active_class.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:918:17 [INFO] [stdout] | [INFO] [stdout] 918 | / return Err(EvaluationError { [INFO] [stdout] 919 | | stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] 920 | | }); [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] 918 ~ Err(EvaluationError { [INFO] [stdout] 919 + stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] 920 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:929:17 [INFO] [stdout] | [INFO] [stdout] 929 | / return Err(EvaluationError { [INFO] [stdout] 930 | | stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] 931 | | }) [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] 929 ~ Err(EvaluationError { [INFO] [stdout] 930 + stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] 931 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:937:17 [INFO] [stdout] | [INFO] [stdout] 937 | / return Err(EvaluationError { [INFO] [stdout] 938 | | stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] 939 | | }) [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] 937 ~ Err(EvaluationError { [INFO] [stdout] 938 + stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] 939 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/evaluator.rs:908:63 [INFO] [stdout] | [INFO] [stdout] 908 | A::FunctionCall { f, args } => evaluate_function_call(&**f, args, context, estate), [INFO] [stdout] | ^^^^ help: try: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` 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/evaluator.rs:913:57 [INFO] [stdout] | [INFO] [stdout] 913 | A::Accessor { lhs, rhs } => match evaluate_atom(&lhs, context, estate)? { [INFO] [stdout] | ^^^^ help: change this to: `lhs` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:919:37 [INFO] [stdout] | [INFO] [stdout] 919 | stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"lhs of . is not an object instance".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:930:37 [INFO] [stdout] | [INFO] [stdout] 930 | stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Tried to evaluate 'this' outside of an object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:938:37 [INFO] [stdout] | [INFO] [stdout] 938 | stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Tried to evaluate 'super' outside of an object".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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:982:53 [INFO] [stdout] | [INFO] [stdout] 982 | N::Group(e) => internal_evaluate_expression(&e, context, estate), [INFO] [stdout] | ^^ help: change this to: `e` [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/evaluator.rs:996:52 [INFO] [stdout] | [INFO] [stdout] 996 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1000:52 [INFO] [stdout] | [INFO] [stdout] 1000 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1005:64 [INFO] [stdout] | [INFO] [stdout] 1005 | Some(exp) => Some(internal_evaluate_expression(&exp, context, estate)?), [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1008:35 [INFO] [stdout] | [INFO] [stdout] 1008 | create_local_variable(&id, context)?; [INFO] [stdout] | ^^^ help: change this to: `id` [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/evaluator.rs:1019:55 [INFO] [stdout] | [INFO] [stdout] 1019 | return_val = internal_evaluate_statements(&scope_statements, &local_context, estate)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `scope_statements` [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/evaluator.rs:1022:52 [INFO] [stdout] | [INFO] [stdout] 1022 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: deref on an immutable reference [INFO] [stdout] --> src/evaluator.rs:1024:49 [INFO] [stdout] | [INFO] [stdout] 1024 | return_val = evaluate_statement(&*statement, context, estate)?; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1024 - return_val = evaluate_statement(&*statement, context, estate)?; [INFO] [stdout] 1024 + return_val = evaluate_statement(statement, context, estate)?; [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1024 | return_val = evaluate_statement(&**statement, context, estate)?; [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1028:52 [INFO] [stdout] | [INFO] [stdout] 1028 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1036:59 [INFO] [stdout] | [INFO] [stdout] 1036 | while is_truthy(&internal_evaluate_expression(&exp, context, estate)?) { [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: deref on an immutable reference [INFO] [stdout] --> src/evaluator.rs:1037:55 [INFO] [stdout] | [INFO] [stdout] 1037 | if let Some(val) = evaluate_statement(&*statement, context, estate)? { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1037 - if let Some(val) = evaluate_statement(&*statement, context, estate)? { [INFO] [stdout] 1037 + if let Some(val) = evaluate_statement(statement, context, estate)? { [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1037 | if let Some(val) = evaluate_statement(&**statement, context, estate)? { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1050:35 [INFO] [stdout] | [INFO] [stdout] 1050 | create_local_variable(&name, context)?; [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/evaluator.rs:1060:29 [INFO] [stdout] | [INFO] [stdout] 1060 | modify_variable(&name, EvaluationValue::Function(f), Some(0), context)?; [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/evaluator.rs:1063:58 [INFO] [stdout] | [INFO] [stdout] 1063 | let val = match internal_evaluate_expression(&exp, context, estate)? { [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:1107:45 [INFO] [stdout] | [INFO] [stdout] 1107 | ... stderr_message: format!("Parent class identifier is not a class!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Parent class identifier is not a class!".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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1139:47 [INFO] [stdout] | [INFO] [stdout] 1139 | if let Some(val) = evaluate_statement(&statement, context, estate)? { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:1189:5 [INFO] [stdout] | [INFO] [stdout] 1189 | return res; [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] 1189 - return res; [INFO] [stdout] 1189 + res [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `AND` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | AND, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `And` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CLASS` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | CLASS, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Class` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ELSE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | ELSE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Else` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FALSE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | FALSE, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `False` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FUN` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | FUN, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Fun` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FOR` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | FOR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `For` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NIL` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | NIL, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nil` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PRINT` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | PRINT, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Print` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RETURN` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | RETURN, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Return` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `SUPER` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | SUPER, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Super` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `THIS` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | THIS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `This` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `TRUE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | TRUE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `True` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `VAR` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | VAR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Var` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `WHILE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | WHILE, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `While` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lexer.rs:157:38 [INFO] [stdout] | [INFO] [stdout] 157 | T::Number(num_str, _) => &num_str, [INFO] [stdout] | ^^^^^^^^ help: change this to: `num_str` [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/lexer.rs:158:33 [INFO] [stdout] | [INFO] [stdout] 158 | T::Identifier(i) => &i, [INFO] [stdout] | ^^ help: change this to: `i` [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 pattern matching, consider using `is_err()` [INFO] [stdout] --> src/parser.rs:248:20 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(_) = parse_right_paren(tokens) { [INFO] [stdout] | -------^^^^^^---------------------------- help: try: `if parse_right_paren(tokens).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `TextRange` which implements the `Copy` trait [INFO] [stdout] --> src/parser.rs:326:34 [INFO] [stdout] | [INFO] [stdout] 326 | let mut text_range = exp.text_range.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `exp.text_range` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:412:19 [INFO] [stdout] | [INFO] [stdout] 412 | while let Ok(_) = parse_comma(tokens) { [INFO] [stdout] | ----------^^^^^---------------------- help: try: `while parse_comma(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:462:12 [INFO] [stdout] | [INFO] [stdout] 462 | if !infix_op.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `infix_op.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:506:16 [INFO] [stdout] | [INFO] [stdout] 506 | if let Ok(_) = parse_dot(tokens) { [INFO] [stdout] | -------^^^^^-------------------- help: try: `if parse_dot(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:514:16 [INFO] [stdout] | [INFO] [stdout] 514 | if let Ok(_) = parse_left_paren(tokens) { [INFO] [stdout] | -------^^^^^--------------------------- help: try: `if parse_left_paren(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:519:27 [INFO] [stdout] | [INFO] [stdout] 519 | while let Ok(_) = parse_comma(tokens) { [INFO] [stdout] | ----------^^^^^---------------------- help: try: `while parse_comma(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `AND` contains a capitalized acronym [INFO] [stdout] --> src/parser_utils.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | AND, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `And` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/parser_utils.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 43 | / let res = match op { [INFO] [stdout] 44 | | T::Equal => (2, 1), [INFO] [stdout] 45 | | T::OR => (3, 4), [INFO] [stdout] 46 | | T::AND => (5, 6), [INFO] [stdout] ... | [INFO] [stdout] 50 | | T::Star | T::Slash => (13, 14), [INFO] [stdout] 51 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 52 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ match op { [INFO] [stdout] 45 + T::Equal => (2, 1), [INFO] [stdout] 46 + T::OR => (3, 4), [INFO] [stdout] 47 + T::AND => (5, 6), [INFO] [stdout] 48 + T::EqualEqual | T::BangEqual => (7, 8), [INFO] [stdout] 49 + T::Less | T::LessEqual | T::Greater | T::GreaterEqual => (9, 10), [INFO] [stdout] 50 + T::Plus | T::Minus => (11, 12), [INFO] [stdout] 51 + T::Star | T::Slash => (13, 14), [INFO] [stdout] 52 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/resolver.rs:101:6 [INFO] [stdout] | [INFO] [stdout] 101 | ) -> Result, Node)>, ResolutionError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/resolver.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 98 | b: Box<(Node, Node)>, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/resolver.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 109 | b: Box>, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/resolver.rs:145:44 [INFO] [stdout] | [INFO] [stdout] 145 | let depth = lookup_ident(&n.0, &scopes); [INFO] [stdout] | ^^^^^^^ help: change this to: `scopes` [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: unneeded `return` statement [INFO] [stdout] --> src/resolver.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | return None; [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] 207 - return None; [INFO] [stdout] 207 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/resolver.rs:201:37 [INFO] [stdout] | [INFO] [stdout] 201 | fn lookup_ident(name: &str, scopes: &Vec>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 201 - fn lookup_ident(name: &str, scopes: &Vec>) -> Option { [INFO] [stdout] 201 + fn lookup_ident(name: &str, scopes: &[HashSet]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/resolver.rs:221:47 [INFO] [stdout] | [INFO] [stdout] 221 | if atom_contains_ident_name(name, &*f) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 221 - if atom_contains_ident_name(name, &*f) { [INFO] [stdout] 221 + if atom_contains_ident_name(name, f) { [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 221 | if atom_contains_ident_name(name, &**f) { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/resolver.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | / if name == "init" { [INFO] [stdout] 282 | | rstate.in_init = true; [INFO] [stdout] 283 | | } else { [INFO] [stdout] 284 | | rstate.in_init = false; [INFO] [stdout] 285 | | } [INFO] [stdout] | |_____^ help: you can reduce it to: `rstate.in_init = name == "init";` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Error` [INFO] [stdout] --> src/main.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / enum CompilerErrorType { [INFO] [stdout] 25 | | LexingError, [INFO] [stdout] 26 | | ParsingError, [INFO] [stdout] 27 | | EvaluationError, [INFO] [stdout] 28 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | / return match err { [INFO] [stdout] 79 | | Some(r) => { [INFO] [stdout] 80 | | // eprintln!("{}", r.message); [INFO] [stdout] 81 | | Err(r) [INFO] [stdout] 82 | | } [INFO] [stdout] 83 | | None => Ok(tokens), [INFO] [stdout] 84 | | }; [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] 78 ~ match err { [INFO] [stdout] 79 + Some(r) => { [INFO] [stdout] 80 + // eprintln!("{}", r.message); [INFO] [stdout] 81 + Err(r) [INFO] [stdout] 82 + } [INFO] [stdout] 83 + None => Ok(tokens), [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | return ExitCode::from(0); [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] 201 - return ExitCode::from(0); [INFO] [stdout] 201 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:209:13 [INFO] [stdout] | [INFO] [stdout] 209 | return ExitCode::from(0); [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] 209 - return ExitCode::from(0); [INFO] [stdout] 209 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | return ExitCode::from(0); [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] 217 - return ExitCode::from(0); [INFO] [stdout] 217 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | return ExitCode::from(0); [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] 229 - return ExitCode::from(0); [INFO] [stdout] 229 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | return ExitCode::from(12); [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] 233 - return ExitCode::from(12); [INFO] [stdout] 233 + ExitCode::from(12) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | writeln!(io::stderr(), "Usage: {} tokenize ", args[0]).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Usage: {} tokenize ", args[0])` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] = note: `#[warn(clippy::explicit_write)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_variable_any_depth` is never used [INFO] [stdout] --> src/evaluator.rs:419:4 [INFO] [stdout] | [INFO] [stdout] 419 | fn get_variable_any_depth( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `modify_variable_any_depth` is never used [INFO] [stdout] --> src/evaluator.rs:441:4 [INFO] [stdout] | [INFO] [stdout] 441 | fn modify_variable_any_depth( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `peek_identifier` is never used [INFO] [stdout] --> src/parser_utils.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn peek_identifier(tokens: &mut Peekable>) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | return self.obj_pool.len() - 1; [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] 42 - return self.obj_pool.len() - 1; [INFO] [stdout] 42 + self.obj_pool.len() - 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:116:25 [INFO] [stdout] | [INFO] [stdout] 116 | / return Err(EvaluationError { [INFO] [stdout] 117 | | stderr_message: format!("No paret to get super method from"), [INFO] [stdout] 118 | | }); [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] 116 ~ Err(EvaluationError { [INFO] [stdout] 117 + stderr_message: format!("No paret to get super method from"), [INFO] [stdout] 118 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:123:17 [INFO] [stdout] | [INFO] [stdout] 123 | / return Err(EvaluationError { [INFO] [stdout] 124 | | stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] 125 | | }); [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] 123 ~ Err(EvaluationError { [INFO] [stdout] 124 + stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] 125 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:100:41 [INFO] [stdout] | [INFO] [stdout] 100 | stderr_message: format!("No paret to get super method from"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"No paret to get super method from".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/evaluator.rs:117:45 [INFO] [stdout] | [INFO] [stdout] 117 | ... stderr_message: format!("No paret to get super method from"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"No paret to get super method from".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:124:37 [INFO] [stdout] | [INFO] [stdout] 124 | stderr_message: format!("Failed to get method on non-object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Failed to get method on non-object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:143:33 [INFO] [stdout] | [INFO] [stdout] 143 | stderr_message: format!("Failed to get method"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Failed to get method".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: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | let old_obj = mem::replace(&mut self.current_object, Some(callable.active_obj)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.current_object.replace(callable.active_obj)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:148:23 [INFO] [stdout] | [INFO] [stdout] 148 | let old_cls = mem::replace(&mut self.current_class, Some(callable.active_class.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.current_class.replace(callable.active_class.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | let foo = current_scope [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] = note: `#[warn(clippy::disallowed_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:398:40 [INFO] [stdout] | [INFO] [stdout] 398 | Some(par) => Rc::clone(&par), [INFO] [stdout] | ^^^^ help: change this to: `par` [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: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:425:13 [INFO] [stdout] | [INFO] [stdout] 425 | let foo = scope_rc.borrow(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:449:17 [INFO] [stdout] | [INFO] [stdout] 449 | let mut foo = scope_rc.borrow_mut(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/evaluator.rs:477:26 [INFO] [stdout] | [INFO] [stdout] 477 | .map(|x| Rc::clone(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `Rc::clone` [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: use of a disallowed/placeholder name `foo` [INFO] [stdout] --> src/evaluator.rs:473:21 [INFO] [stdout] | [INFO] [stdout] 473 | let foo = current_scope [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:485:40 [INFO] [stdout] | [INFO] [stdout] 485 | Some(par) => Rc::clone(&par), [INFO] [stdout] | ^^^^ help: change this to: `par` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:504:8 [INFO] [stdout] | [INFO] [stdout] 504 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` 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/evaluator.rs:528:52 [INFO] [stdout] | [INFO] [stdout] 528 | O::Add => Some(EV::String(s1.clone() + &s2)), [INFO] [stdout] | ^^^ help: change this to: `s2` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:560:8 [INFO] [stdout] | [INFO] [stdout] 560 | b: &Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&Node` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:566:48 [INFO] [stdout] | [INFO] [stdout] 566 | let operand = internal_evaluate_expression(&b, context, estate)?; [INFO] [stdout] | ^^ help: change this to: `b` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:602:8 [INFO] [stdout] | [INFO] [stdout] 602 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:616:17 [INFO] [stdout] | [INFO] [stdout] 616 | return Ok(rhs.clone()); [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] 616 ~ Ok(rhs.clone()) [INFO] [stdout] 617 | } else { [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:618:17 [INFO] [stdout] | [INFO] [stdout] 618 | return Ok(EvaluationValue::Bool(false)); [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] 618 ~ Ok(EvaluationValue::Bool(false)) [INFO] [stdout] 619 | } [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:628:17 [INFO] [stdout] | [INFO] [stdout] 628 | return Ok(rhs.clone()); [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] 628 ~ Ok(rhs.clone()) [INFO] [stdout] 629 | } else { [INFO] [stdout] ... [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:630:17 [INFO] [stdout] | [INFO] [stdout] 630 | return Ok(rhs.clone()); [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] 630 ~ Ok(rhs.clone()) [INFO] [stdout] 631 | } [INFO] [stdout] 632 | } [INFO] [stdout] 633 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/evaluator.rs:627:33 [INFO] [stdout] | [INFO] [stdout] 627 | if !is_truthy(&rhs) { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 628 | | return Ok(rhs.clone()); [INFO] [stdout] 629 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/evaluator.rs:629:20 [INFO] [stdout] | [INFO] [stdout] 629 | } else { [INFO] [stdout] | ____________________^ [INFO] [stdout] 630 | | return Ok(rhs.clone()); [INFO] [stdout] 631 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/evaluator.rs:641:23 [INFO] [stdout] | [INFO] [stdout] 641 | E::Bool(b) => b.clone(), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/evaluator.rs:653:8 [INFO] [stdout] | [INFO] [stdout] 653 | b: &Box<(Node, Node)>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&(Node, Node)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:697:5 [INFO] [stdout] | [INFO] [stdout] 697 | / return Err(EvaluationError { [INFO] [stdout] 698 | | stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] 699 | | }); [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] 697 ~ Err(EvaluationError { [INFO] [stdout] 698 + stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] 699 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:680:41 [INFO] [stdout] | [INFO] [stdout] 680 | stderr_message: format!( [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 681 | | "LHS of assigned accessor does not evaluate to an object" [INFO] [stdout] 682 | | ), [INFO] [stdout] | |_________________________^ help: consider using `.to_string()`: `"LHS of assigned accessor does not evaluate to an object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:698:25 [INFO] [stdout] | [INFO] [stdout] 698 | stderr_message: format!("LHS of asignment is not an identifier, or an accessor"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"LHS of asignment is not an identifier, or an accessor".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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:704:11 [INFO] [stdout] | [INFO] [stdout] 704 | args: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 704 - args: &Vec>, [INFO] [stdout] 704 + args: &[Node], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:731:48 [INFO] [stdout] | [INFO] [stdout] 731 | let val = internal_evaluate_expression(&arg, calling_context, estate)?; [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: the function `create_local_variable` doesn't need a mutable reference [INFO] [stdout] --> src/evaluator.rs:732:48 [INFO] [stdout] | [INFO] [stdout] 732 | create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 732 - create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] 732 + create_local_variable(¶meter_name, &local_context)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:732:31 [INFO] [stdout] | [INFO] [stdout] 732 | create_local_variable(¶meter_name, &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `parameter_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: the function `modify_variable` doesn't need a mutable reference [INFO] [stdout] --> src/evaluator.rs:733:56 [INFO] [stdout] | [INFO] [stdout] 733 | modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 733 - modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] 733 + modify_variable(¶meter_name, val, Some(0), &local_context)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:733:25 [INFO] [stdout] | [INFO] [stdout] 733 | modify_variable(¶meter_name, val, Some(0), &mut local_context)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `parameter_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: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:762:5 [INFO] [stdout] | [INFO] [stdout] 762 | return Ok(None); [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] 762 - return Ok(None); [INFO] [stdout] 762 + Ok(None) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:744:11 [INFO] [stdout] | [INFO] [stdout] 744 | args: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 744 - args: &Vec>, [INFO] [stdout] 744 + args: &[Node], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:800:45 [INFO] [stdout] | [INFO] [stdout] 800 | ... stderr_message: format!("Used 'super' outside of a class",), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Used 'super' outside of a class".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:810:41 [INFO] [stdout] | [INFO] [stdout] 810 | stderr_message: format!( [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 811 | | "tried to call a method on thing which did not evaluate to object", [INFO] [stdout] 812 | | ), [INFO] [stdout] | |_________________________^ help: consider using `.to_string()`: `"tried to call a method on thing which did not evaluate to object".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: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:864:27 [INFO] [stdout] | [INFO] [stdout] 864 | let old_obj = mem::replace(&mut estate.current_object, Some(meth.active_obj.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `estate.current_object.replace(meth.active_obj.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/evaluator.rs:865:27 [INFO] [stdout] | [INFO] [stdout] 865 | let old_cls = mem::replace(&mut estate.current_class, Some(meth.active_class.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `estate.current_class.replace(meth.active_class.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:918:17 [INFO] [stdout] | [INFO] [stdout] 918 | / return Err(EvaluationError { [INFO] [stdout] 919 | | stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] 920 | | }); [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] 918 ~ Err(EvaluationError { [INFO] [stdout] 919 + stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] 920 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:929:17 [INFO] [stdout] | [INFO] [stdout] 929 | / return Err(EvaluationError { [INFO] [stdout] 930 | | stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] 931 | | }) [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] 929 ~ Err(EvaluationError { [INFO] [stdout] 930 + stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] 931 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:937:17 [INFO] [stdout] | [INFO] [stdout] 937 | / return Err(EvaluationError { [INFO] [stdout] 938 | | stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] 939 | | }) [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] 937 ~ Err(EvaluationError { [INFO] [stdout] 938 + stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] 939 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/evaluator.rs:908:63 [INFO] [stdout] | [INFO] [stdout] 908 | A::FunctionCall { f, args } => evaluate_function_call(&**f, args, context, estate), [INFO] [stdout] | ^^^^ help: try: `f` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` 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/evaluator.rs:913:57 [INFO] [stdout] | [INFO] [stdout] 913 | A::Accessor { lhs, rhs } => match evaluate_atom(&lhs, context, estate)? { [INFO] [stdout] | ^^^^ help: change this to: `lhs` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:919:37 [INFO] [stdout] | [INFO] [stdout] 919 | stderr_message: format!("lhs of . is not an object instance"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"lhs of . is not an object instance".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:930:37 [INFO] [stdout] | [INFO] [stdout] 930 | stderr_message: format!("Tried to evaluate 'this' outside of an object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Tried to evaluate 'this' outside of an object".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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:938:37 [INFO] [stdout] | [INFO] [stdout] 938 | stderr_message: format!("Tried to evaluate 'super' outside of an object"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Tried to evaluate 'super' outside of an object".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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:982:53 [INFO] [stdout] | [INFO] [stdout] 982 | N::Group(e) => internal_evaluate_expression(&e, context, estate), [INFO] [stdout] | ^^ help: change this to: `e` [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/evaluator.rs:996:52 [INFO] [stdout] | [INFO] [stdout] 996 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1000:52 [INFO] [stdout] | [INFO] [stdout] 1000 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1005:64 [INFO] [stdout] | [INFO] [stdout] 1005 | Some(exp) => Some(internal_evaluate_expression(&exp, context, estate)?), [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1008:35 [INFO] [stdout] | [INFO] [stdout] 1008 | create_local_variable(&id, context)?; [INFO] [stdout] | ^^^ help: change this to: `id` [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/evaluator.rs:1019:55 [INFO] [stdout] | [INFO] [stdout] 1019 | return_val = internal_evaluate_statements(&scope_statements, &local_context, estate)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `scope_statements` [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/evaluator.rs:1022:52 [INFO] [stdout] | [INFO] [stdout] 1022 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: deref on an immutable reference [INFO] [stdout] --> src/evaluator.rs:1024:49 [INFO] [stdout] | [INFO] [stdout] 1024 | return_val = evaluate_statement(&*statement, context, estate)?; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1024 - return_val = evaluate_statement(&*statement, context, estate)?; [INFO] [stdout] 1024 + return_val = evaluate_statement(statement, context, estate)?; [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1024 | return_val = evaluate_statement(&**statement, context, estate)?; [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1028:52 [INFO] [stdout] | [INFO] [stdout] 1028 | let val = internal_evaluate_expression(&exp, context, estate)?; [INFO] [stdout] | ^^^^ help: change this to: `exp` [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/evaluator.rs:1036:59 [INFO] [stdout] | [INFO] [stdout] 1036 | while is_truthy(&internal_evaluate_expression(&exp, context, estate)?) { [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: deref on an immutable reference [INFO] [stdout] --> src/evaluator.rs:1037:55 [INFO] [stdout] | [INFO] [stdout] 1037 | if let Some(val) = evaluate_statement(&*statement, context, estate)? { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 1037 - if let Some(val) = evaluate_statement(&*statement, context, estate)? { [INFO] [stdout] 1037 + if let Some(val) = evaluate_statement(statement, context, estate)? { [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 1037 | if let Some(val) = evaluate_statement(&**statement, context, estate)? { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1050:35 [INFO] [stdout] | [INFO] [stdout] 1050 | create_local_variable(&name, context)?; [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/evaluator.rs:1060:29 [INFO] [stdout] | [INFO] [stdout] 1060 | modify_variable(&name, EvaluationValue::Function(f), Some(0), context)?; [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/evaluator.rs:1063:58 [INFO] [stdout] | [INFO] [stdout] 1063 | let val = match internal_evaluate_expression(&exp, context, estate)? { [INFO] [stdout] | ^^^^ help: change this to: `exp` [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: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:1107:45 [INFO] [stdout] | [INFO] [stdout] 1107 | ... stderr_message: format!("Parent class identifier is not a class!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Parent class identifier is not a class!".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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/evaluator.rs:1139:47 [INFO] [stdout] | [INFO] [stdout] 1139 | if let Some(val) = evaluate_statement(&statement, context, estate)? { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `statement` [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: unneeded `return` statement [INFO] [stdout] --> src/evaluator.rs:1189:5 [INFO] [stdout] | [INFO] [stdout] 1189 | return res; [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] 1189 - return res; [INFO] [stdout] 1189 + res [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/evaluator.rs:1240:27 [INFO] [stdout] | [INFO] [stdout] 1240 | Err(e) => format!("{}", e.stderr_message), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `e.stderr_message.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: the variable `test_i` is used as a loop counter [INFO] [stdout] --> src/evaluator.rs:1324:9 [INFO] [stdout] | [INFO] [stdout] 1324 | for (input, output) in tests { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (test_i, (input, output)) in tests.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `AND` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | AND, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `And` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CLASS` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | CLASS, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Class` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ELSE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | ELSE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Else` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FALSE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | FALSE, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `False` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FUN` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | FUN, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Fun` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `FOR` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | FOR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `For` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NIL` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | NIL, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nil` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PRINT` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | PRINT, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Print` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `RETURN` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | RETURN, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Return` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `SUPER` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | SUPER, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Super` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `THIS` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | THIS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `This` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `TRUE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | TRUE, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `True` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `VAR` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | VAR, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Var` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `WHILE` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 76 | WHILE, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `While` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lexer.rs:157:38 [INFO] [stdout] | [INFO] [stdout] 157 | T::Number(num_str, _) => &num_str, [INFO] [stdout] | ^^^^^^^^ help: change this to: `num_str` [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/lexer.rs:158:33 [INFO] [stdout] | [INFO] [stdout] 158 | T::Identifier(i) => &i, [INFO] [stdout] | ^^ help: change this to: `i` [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 loop could be written as a `while let` loop [INFO] [stdout] --> src/lexer.rs:531:9 [INFO] [stdout] | [INFO] [stdout] 531 | / loop { [INFO] [stdout] 532 | | let Some(e1) = entries.next() else { [INFO] [stdout] 533 | | // No more even number of files [INFO] [stdout] 534 | | break; [INFO] [stdout] ... | [INFO] [stdout] 594 | | dbg!("after loop assert"); [INFO] [stdout] 595 | | } [INFO] [stdout] | |_________^ help: try: `while let Some(e1) = entries.next() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant redefinition of a binding `e1` [INFO] [stdout] --> src/lexer.rs:536:13 [INFO] [stdout] | [INFO] [stdout] 536 | let e1 = e1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: `e1` is initially defined here [INFO] [stdout] --> src/lexer.rs:532:22 [INFO] [stdout] | [INFO] [stdout] 532 | let Some(e1) = entries.next() else { [INFO] [stdout] | ^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_locals [INFO] [stdout] = note: `#[warn(clippy::redundant_locals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/parser.rs:248:20 [INFO] [stdout] | [INFO] [stdout] 248 | if let Err(_) = parse_right_paren(tokens) { [INFO] [stdout] | -------^^^^^^---------------------------- help: try: `if parse_right_paren(tokens).is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `TextRange` which implements the `Copy` trait [INFO] [stdout] --> src/parser.rs:326:34 [INFO] [stdout] | [INFO] [stdout] 326 | let mut text_range = exp.text_range.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `exp.text_range` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:412:19 [INFO] [stdout] | [INFO] [stdout] 412 | while let Ok(_) = parse_comma(tokens) { [INFO] [stdout] | ----------^^^^^---------------------- help: try: `while parse_comma(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:462:12 [INFO] [stdout] | [INFO] [stdout] 462 | if !infix_op.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `infix_op.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:506:16 [INFO] [stdout] | [INFO] [stdout] 506 | if let Ok(_) = parse_dot(tokens) { [INFO] [stdout] | -------^^^^^-------------------- help: try: `if parse_dot(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:514:16 [INFO] [stdout] | [INFO] [stdout] 514 | if let Ok(_) = parse_left_paren(tokens) { [INFO] [stdout] | -------^^^^^--------------------------- help: try: `if parse_left_paren(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/parser.rs:519:27 [INFO] [stdout] | [INFO] [stdout] 519 | while let Ok(_) = parse_comma(tokens) { [INFO] [stdout] | ----------^^^^^---------------------- help: try: `while parse_comma(tokens).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `test_i` is used as a loop counter [INFO] [stdout] --> src/parser.rs:692:9 [INFO] [stdout] | [INFO] [stdout] 692 | for (input, output) in tests { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (test_i, (input, output)) in tests.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/parser.rs:701:27 [INFO] [stdout] | [INFO] [stdout] 701 | Err(e) => format!("{}", e.message), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `e.message.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: name `AND` contains a capitalized acronym [INFO] [stdout] --> src/parser_utils.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | AND, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `And` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/parser_utils.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 43 | / let res = match op { [INFO] [stdout] 44 | | T::Equal => (2, 1), [INFO] [stdout] 45 | | T::OR => (3, 4), [INFO] [stdout] 46 | | T::AND => (5, 6), [INFO] [stdout] ... | [INFO] [stdout] 50 | | T::Star | T::Slash => (13, 14), [INFO] [stdout] 51 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 52 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 43 ~ [INFO] [stdout] 44 ~ match op { [INFO] [stdout] 45 + T::Equal => (2, 1), [INFO] [stdout] 46 + T::OR => (3, 4), [INFO] [stdout] 47 + T::AND => (5, 6), [INFO] [stdout] 48 + T::EqualEqual | T::BangEqual => (7, 8), [INFO] [stdout] 49 + T::Less | T::LessEqual | T::Greater | T::GreaterEqual => (9, 10), [INFO] [stdout] 50 + T::Plus | T::Minus => (11, 12), [INFO] [stdout] 51 + T::Star | T::Slash => (13, 14), [INFO] [stdout] 52 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/resolver.rs:101:6 [INFO] [stdout] | [INFO] [stdout] 101 | ) -> Result, Node)>, ResolutionError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/resolver.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 98 | b: Box<(Node, Node)>, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/resolver.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 109 | b: Box>, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/resolver.rs:145:44 [INFO] [stdout] | [INFO] [stdout] 145 | let depth = lookup_ident(&n.0, &scopes); [INFO] [stdout] | ^^^^^^^ help: change this to: `scopes` [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: unneeded `return` statement [INFO] [stdout] --> src/resolver.rs:207:5 [INFO] [stdout] | [INFO] [stdout] 207 | return None; [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] 207 - return None; [INFO] [stdout] 207 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/resolver.rs:201:37 [INFO] [stdout] | [INFO] [stdout] 201 | fn lookup_ident(name: &str, scopes: &Vec>) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 201 - fn lookup_ident(name: &str, scopes: &Vec>) -> Option { [INFO] [stdout] 201 + fn lookup_ident(name: &str, scopes: &[HashSet]) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/resolver.rs:221:47 [INFO] [stdout] | [INFO] [stdout] 221 | if atom_contains_ident_name(name, &*f) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 221 - if atom_contains_ident_name(name, &*f) { [INFO] [stdout] 221 + if atom_contains_ident_name(name, f) { [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 221 | if atom_contains_ident_name(name, &**f) { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/resolver.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | / if name == "init" { [INFO] [stdout] 282 | | rstate.in_init = true; [INFO] [stdout] 283 | | } else { [INFO] [stdout] 284 | | rstate.in_init = false; [INFO] [stdout] 285 | | } [INFO] [stdout] | |_____^ help: you can reduce it to: `rstate.in_init = name == "init";` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Error` [INFO] [stdout] --> src/main.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / enum CompilerErrorType { [INFO] [stdout] 25 | | LexingError, [INFO] [stdout] 26 | | ParsingError, [INFO] [stdout] 27 | | EvaluationError, [INFO] [stdout] 28 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | / return match err { [INFO] [stdout] 79 | | Some(r) => { [INFO] [stdout] 80 | | // eprintln!("{}", r.message); [INFO] [stdout] 81 | | Err(r) [INFO] [stdout] 82 | | } [INFO] [stdout] 83 | | None => Ok(tokens), [INFO] [stdout] 84 | | }; [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] 78 ~ match err { [INFO] [stdout] 79 + Some(r) => { [INFO] [stdout] 80 + // eprintln!("{}", r.message); [INFO] [stdout] 81 + Err(r) [INFO] [stdout] 82 + } [INFO] [stdout] 83 + None => Ok(tokens), [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:201:13 [INFO] [stdout] | [INFO] [stdout] 201 | return ExitCode::from(0); [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] 201 - return ExitCode::from(0); [INFO] [stdout] 201 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:209:13 [INFO] [stdout] | [INFO] [stdout] 209 | return ExitCode::from(0); [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] 209 - return ExitCode::from(0); [INFO] [stdout] 209 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | return ExitCode::from(0); [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] 217 - return ExitCode::from(0); [INFO] [stdout] 217 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:229:13 [INFO] [stdout] | [INFO] [stdout] 229 | return ExitCode::from(0); [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] 229 - return ExitCode::from(0); [INFO] [stdout] 229 + ExitCode::from(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | return ExitCode::from(12); [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] 233 - return ExitCode::from(12); [INFO] [stdout] 233 + ExitCode::from(12) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | writeln!(io::stderr(), "Usage: {} tokenize ", args[0]).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Usage: {} tokenize ", args[0])` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] = note: `#[warn(clippy::explicit_write)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.50s [INFO] running `Command { std: "docker" "inspect" "9db6e7ddc353efb743e0bc65f3285c27c9261eafeae10839039ce20c836c49dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9db6e7ddc353efb743e0bc65f3285c27c9261eafeae10839039ce20c836c49dd", kill_on_drop: false }` [INFO] [stdout] 9db6e7ddc353efb743e0bc65f3285c27c9261eafeae10839039ce20c836c49dd