[INFO] cloning repository https://github.com/sahilmob/codecrafters-interpreter-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sahilmob/codecrafters-interpreter-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsahilmob%2Fcodecrafters-interpreter-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsahilmob%2Fcodecrafters-interpreter-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9c74137965ed374f3b9c3ca8231243037c5310fd [INFO] linting sahilmob/codecrafters-interpreter-rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsahilmob%2Fcodecrafters-interpreter-rust" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/sahilmob/codecrafters-interpreter-rust [INFO] finished tweaking git repo https://github.com/sahilmob/codecrafters-interpreter-rust [INFO] tweaked toml for git repo https://github.com/sahilmob/codecrafters-interpreter-rust written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sahilmob/codecrafters-interpreter-rust 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/sahilmob/codecrafters-interpreter-rust 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-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 321778c059a448298eb04e36070629aa5442a3202e25d79906f89243fd77f9ff [INFO] running `Command { std: "docker" "start" "-a" "321778c059a448298eb04e36070629aa5442a3202e25d79906f89243fd77f9ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "321778c059a448298eb04e36070629aa5442a3202e25d79906f89243fd77f9ff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "321778c059a448298eb04e36070629aa5442a3202e25d79906f89243fd77f9ff", kill_on_drop: false }` [INFO] [stdout] 321778c059a448298eb04e36070629aa5442a3202e25d79906f89243fd77f9ff [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] dac730209fec8040efe2457eba4664e6fd7906d69a996ebdd2bad7da9b9454e9 [INFO] running `Command { std: "docker" "start" "-a" "dac730209fec8040efe2457eba4664e6fd7906d69a996ebdd2bad7da9b9454e9", kill_on_drop: false }` [INFO] [stderr] Checking memchr v2.7.5 [INFO] [stderr] Compiling anyhow v1.0.86 [INFO] [stderr] Compiling syn v2.0.75 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Compiling thiserror-impl v1.0.63 [INFO] [stderr] Checking thiserror v1.0.63 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking codecrafters-interpreter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after outer attribute [INFO] [stdout] --> tests/interpreter/integration.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / #[cfg(test)] [INFO] [stdout] 2 | | [INFO] [stdout] | |_^ [INFO] [stdout] 3 | mod interpreter_integration_test { [INFO] [stdout] | -------------------------------- the attribute applies to this module [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_outer_attr [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_outer_attr)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the attribute should apply to the parent module use an inner attribute [INFO] [stdout] | [INFO] [stdout] 1 | #![cfg(test)] [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Nil` is never constructed [INFO] [stdout] --> src/parser/ast.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct Nil; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/helpers/format_float.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 - if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] 7 + if !(c == '0' && new_str.len() == 0) { [INFO] [stdout] | [INFO] [stdout] 7 - if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] 7 + if c != '0' || new_str.len() != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/helpers/format_float.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | while let Some(c) = rev_chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for c in rev_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/helpers/format_float.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!new_str.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/helpers/format_float.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | if new_str_chars.nth(0) == Some('.') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `new_str_chars.next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/interpreter/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod interpreter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/interpreter/interpreter.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | fn visit_node<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:99:31 [INFO] [stdout] | [INFO] [stdout] 99 | fn visit_unary(&mut self, u: Box, scope: Rc>) -> EvalValue { [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: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/interpreter/interpreter.rs:105:54 [INFO] [stdout] | [INFO] [stdout] 105 | ... return EvalValue::Number(-1.0 * n); [INFO] [stdout] | ^^^^^^^^ help: consider using: `-n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/interpreter/interpreter.rs:108:56 [INFO] [stdout] | [INFO] [stdout] 108 | ... Ok(n) => EvalValue::Number(-1.0 * n), [INFO] [stdout] | ^^^^^^^^ help: consider using: `-n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:110:33 [INFO] [stdout] | [INFO] [stdout] 110 | ... writeln!(io::stderr(), "Operand must be a number.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operand must be a number.")` [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: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:115:29 [INFO] [stdout] | [INFO] [stdout] 115 | ... writeln!(io::stderr(), "Operand must be a number.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operand must be a number.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | fn visit_binary(&mut self, b: Box, scope: Rc>) -> EvalValue { [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: empty string literal in `println!` [INFO] [stdout] --> src/interpreter/interpreter.rs:191:17 [INFO] [stdout] | [INFO] [stdout] 191 | println!("") [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | variable_declaration: 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/interpreter/interpreter.rs:285:74 [INFO] [stdout] | [INFO] [stdout] 285 | ScopeValue::Identifier(i) => self.resolve_from_scope(&i, scope_clone), [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] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:289:17 [INFO] [stdout] | [INFO] [stdout] 289 | writeln!(io::stderr(), "Variable {} isn't initialized", name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Variable {} isn't initialized", name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/interpreter.rs:294:41 [INFO] [stdout] | [INFO] [stdout] 294 | self.resolve_from_scope(&name, ps) [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: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 296 | writeln!(io::stderr(), "Undefined variable '{}'.", name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Undefined variable '{}'.", name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | writeln!(io::stderr(), "Operands must be two numbers or two strings.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be two numbers or two strings.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | return 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 154 - return false [INFO] [stdout] 154 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:157:17 [INFO] [stdout] | [INFO] [stdout] 157 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:169:21 [INFO] [stdout] | [INFO] [stdout] 169 | return Some(Ordering::Equal); [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] 169 - return Some(Ordering::Equal); [INFO] [stdout] 169 + Some(Ordering::Equal) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | return Some(Ordering::Greater); [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] 171 - return Some(Ordering::Greater); [INFO] [stdout] 171 + Some(Ordering::Greater) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:173:21 [INFO] [stdout] | [INFO] [stdout] 173 | return Some(Ordering::Less); [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] 173 - return Some(Ordering::Less); [INFO] [stdout] 173 + Some(Ordering::Less) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:175:21 [INFO] [stdout] | [INFO] [stdout] 175 | 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] 175 - return None; [INFO] [stdout] 175 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/parser/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | pub mod parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", error)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | writeln!(io::stderr(), "Unexpected token {}", t).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected token {}", t)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | writeln!(io::stderr(), "Unexpected EOF. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:78:29 [INFO] [stdout] | [INFO] [stdout] 78 | ... writeln!(io::stderr(), "Unexpected Token. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected Token. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:98:33 [INFO] [stdout] | [INFO] [stdout] 98 | / ... writeln!(io::stderr(), "Unexpected Token {nt}. Expected ;") [INFO] [stdout] 99 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected Token {nt}. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:105:21 [INFO] [stdout] | [INFO] [stdout] 105 | writeln!(io::stderr(), "Unexpected EOF. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `next_token` after checking its variant with `is_some` [INFO] [stdout] --> src/parser/parser.rs:126:29 [INFO] [stdout] | [INFO] [stdout] 125 | let t = if next_token.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = next_token` [INFO] [stdout] 126 | next_token.unwrap().to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:131:25 [INFO] [stdout] | [INFO] [stdout] 131 | / writeln!(io::stderr(), "Unexpected Token {}. Expected identifier", t) [INFO] [stdout] 132 | | .unwrap(); [INFO] [stdout] | |_____________________________________^ help: try: `eprintln!("Unexpected Token {}. Expected identifier", t)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:143:29 [INFO] [stdout] | [INFO] [stdout] 143 | ... writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:152:25 [INFO] [stdout] | [INFO] [stdout] 152 | writeln!(io::stderr(), "Unexpected EOF. Expected identifier or ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected identifier or ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:156:25 [INFO] [stdout] | [INFO] [stdout] 156 | / writeln!(io::stderr(), "Unexpected Token. Expected identifier or ;") [INFO] [stdout] 157 | | .unwrap(); [INFO] [stdout] | |_____________________________________^ help: try: `eprintln!("Unexpected Token. Expected identifier or ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:225:17 [INFO] [stdout] | [INFO] [stdout] 225 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | / ... writeln!(io::stderr(), "Unexpected token {}. Expected expression", nt) [INFO] [stdout] 252 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected token {}. Expected expression", nt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:285:17 [INFO] [stdout] | [INFO] [stdout] 285 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:313:17 [INFO] [stdout] | [INFO] [stdout] 313 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:337:17 [INFO] [stdout] | [INFO] [stdout] 337 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser/parser.rs:384:21 [INFO] [stdout] | [INFO] [stdout] 384 | return AstNode::Grouping(Box::new(Grouping { value: expr })); [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] 384 - return AstNode::Grouping(Box::new(Grouping { value: expr })); [INFO] [stdout] 384 + AstNode::Grouping(Box::new(Grouping { value: expr })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:374:33 [INFO] [stdout] | [INFO] [stdout] 374 | / ... writeln!(io::stderr(), "Unexpected token {}. Expected )", nt) [INFO] [stdout] 375 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected token {}. Expected )", nt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:380:25 [INFO] [stdout] | [INFO] [stdout] 380 | writeln!(io::stderr(), "Unexpected EOF. Expected ).").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ).")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | writeln!(io::stderr(), "Unexpected EOF. Expected expression.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:393:17 [INFO] [stdout] | [INFO] [stdout] 393 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", error)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser/parser.rs:413:21 [INFO] [stdout] | [INFO] [stdout] 413 | / return AstNode::Print(Print { [INFO] [stdout] 414 | | value: Box::new(node), [INFO] [stdout] 415 | | }); [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] 413 ~ AstNode::Print(Print { [INFO] [stdout] 414 + value: Box::new(node), [INFO] [stdout] 415 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:407:21 [INFO] [stdout] | [INFO] [stdout] 407 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", "Syntax error")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/parser/parser.rs:407:50 [INFO] [stdout] | [INFO] [stdout] 407 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 407 - writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] 407 + writeln!(io::stderr(), "Syntax error").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", "Syntax error")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/parser/parser.rs:419:42 [INFO] [stdout] | [INFO] [stdout] 419 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 419 - writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] 419 + writeln!(io::stderr(), "Syntax error").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:451:13 [INFO] [stdout] | [INFO] [stdout] 451 | / writeln!( [INFO] [stdout] 452 | | io::stderr(), [INFO] [stdout] 453 | | "[line {}] Error at end: Expect '}}' .", [INFO] [stdout] 454 | | self.tokenizer.line [INFO] [stdout] 455 | | ) [INFO] [stdout] 456 | | .unwrap(); [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 ~ eprintln!("[line {}] Error at end: Expect '}}' .", [INFO] [stdout] 452 ~ self.tokenizer.line); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/utils.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | writeln!(io::stderr(), "{first_part}: {second_part}").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{first_part}: {second_part}")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `TAB` contains a capitalized acronym [INFO] [stdout] --> src/tokenizer/language.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | TAB, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Tab` [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: struct `Nil` is never constructed [INFO] [stdout] --> src/parser/ast.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct Nil; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/helpers/format_float.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 - if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] 7 + if !(c == '0' && new_str.len() == 0) { [INFO] [stdout] | [INFO] [stdout] 7 - if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] 7 + if c != '0' || new_str.len() != 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/helpers/format_float.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | while let Some(c) = rev_chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for c in rev_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/helpers/format_float.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | if (c == '0' && new_str.len() != 0) || c != '0' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!new_str.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/helpers/format_float.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | if new_str_chars.nth(0) == Some('.') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `new_str_chars.next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/interpreter/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod interpreter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/interpreter/interpreter.rs:42:19 [INFO] [stdout] | [INFO] [stdout] 42 | fn visit_node<'a>( [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:99:31 [INFO] [stdout] | [INFO] [stdout] 99 | fn visit_unary(&mut self, u: Box, scope: Rc>) -> EvalValue { [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: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/interpreter/interpreter.rs:105:54 [INFO] [stdout] | [INFO] [stdout] 105 | ... return EvalValue::Number(-1.0 * n); [INFO] [stdout] | ^^^^^^^^ help: consider using: `-n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/interpreter/interpreter.rs:108:56 [INFO] [stdout] | [INFO] [stdout] 108 | ... Ok(n) => EvalValue::Number(-1.0 * n), [INFO] [stdout] | ^^^^^^^^ help: consider using: `-n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:110:33 [INFO] [stdout] | [INFO] [stdout] 110 | ... writeln!(io::stderr(), "Operand must be a number.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operand must be a number.")` [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: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:115:29 [INFO] [stdout] | [INFO] [stdout] 115 | ... writeln!(io::stderr(), "Operand must be a number.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operand must be a number.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:149:32 [INFO] [stdout] | [INFO] [stdout] 149 | fn visit_binary(&mut self, b: Box, scope: Rc>) -> EvalValue { [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: empty string literal in `println!` [INFO] [stdout] --> src/interpreter/interpreter.rs:191:17 [INFO] [stdout] | [INFO] [stdout] 191 | println!("") [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/interpreter/interpreter.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | variable_declaration: 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/interpreter/interpreter.rs:285:74 [INFO] [stdout] | [INFO] [stdout] 285 | ScopeValue::Identifier(i) => self.resolve_from_scope(&i, scope_clone), [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] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:289:17 [INFO] [stdout] | [INFO] [stdout] 289 | writeln!(io::stderr(), "Variable {} isn't initialized", name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Variable {} isn't initialized", name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/interpreter/interpreter.rs:294:41 [INFO] [stdout] | [INFO] [stdout] 294 | self.resolve_from_scope(&name, ps) [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: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/interpreter.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 296 | writeln!(io::stderr(), "Undefined variable '{}'.", name).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Undefined variable '{}'.", name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/interpreter/tests.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | / mod tests { [INFO] [stdout] 3 | | use super::super::interpreter::*; [INFO] [stdout] 4 | | [INFO] [stdout] 5 | | #[test] [INFO] [stdout] ... | [INFO] [stdout] 212 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tokenizer/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod tokenizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/tokenizer/tokenizer.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | while let Some(t) = self.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for t in self.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/tokenizer/tokenizer.rs:61:17 [INFO] [stdout] | [INFO] [stdout] 61 | self.source_code[self.pointer..self.pointer + s.len()].to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&self.source_code[self.pointer..self.pointer + s.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | writeln!(io::stderr(), "Operands must be two numbers or two strings.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be two numbers or two strings.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | return; [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] 101 - writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] 102 - return; [INFO] [stdout] 101 + writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:154:17 [INFO] [stdout] | [INFO] [stdout] 154 | return 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 154 - return false [INFO] [stdout] 154 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | 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] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:157:17 [INFO] [stdout] | [INFO] [stdout] 157 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:169:21 [INFO] [stdout] | [INFO] [stdout] 169 | return Some(Ordering::Equal); [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] 169 - return Some(Ordering::Equal); [INFO] [stdout] 169 + Some(Ordering::Equal) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | writeln!(io::stderr(), "Logs from your program will appear here!").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Logs from your program will appear here!")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:171:21 [INFO] [stdout] | [INFO] [stdout] 171 | return Some(Ordering::Greater); [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] 171 - return Some(Ordering::Greater); [INFO] [stdout] 171 + Some(Ordering::Greater) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:173:21 [INFO] [stdout] | [INFO] [stdout] 173 | return Some(Ordering::Less); [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] 173 - return Some(Ordering::Less); [INFO] [stdout] 173 + Some(Ordering::Less) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/types.rs:175:21 [INFO] [stdout] | [INFO] [stdout] 175 | 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] 175 - return None; [INFO] [stdout] 175 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/interpreter/types.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | writeln!(io::stderr(), "Operands must be numbers.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Operands must be numbers.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:40:21 [INFO] [stdout] | [INFO] [stdout] 40 | writeln!(io::stderr(), "{}", e).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | if tokenizer.errors.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tokenizer.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unknown command: {}", command)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/parser/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | pub mod parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:41:21 [INFO] [stdout] | [INFO] [stdout] 41 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", error)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | writeln!(io::stderr(), "Unexpected token {}", t).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected token {}", t)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:61:25 [INFO] [stdout] | [INFO] [stdout] 61 | writeln!(io::stderr(), "Unexpected EOF. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:78:29 [INFO] [stdout] | [INFO] [stdout] 78 | ... writeln!(io::stderr(), "Unexpected Token. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected Token. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:98:33 [INFO] [stdout] | [INFO] [stdout] 98 | / ... writeln!(io::stderr(), "Unexpected Token {nt}. Expected ;") [INFO] [stdout] 99 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected Token {nt}. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:105:21 [INFO] [stdout] | [INFO] [stdout] 105 | writeln!(io::stderr(), "Unexpected EOF. Expected ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `next_token` after checking its variant with `is_some` [INFO] [stdout] --> src/parser/parser.rs:126:29 [INFO] [stdout] | [INFO] [stdout] 125 | let t = if next_token.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = next_token` [INFO] [stdout] 126 | next_token.unwrap().to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:131:25 [INFO] [stdout] | [INFO] [stdout] 131 | / writeln!(io::stderr(), "Unexpected Token {}. Expected identifier", t) [INFO] [stdout] 132 | | .unwrap(); [INFO] [stdout] | |_____________________________________^ help: try: `eprintln!("Unexpected Token {}. Expected identifier", t)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:143:29 [INFO] [stdout] | [INFO] [stdout] 143 | ... writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:152:25 [INFO] [stdout] | [INFO] [stdout] 152 | writeln!(io::stderr(), "Unexpected EOF. Expected identifier or ;").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected identifier or ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:156:25 [INFO] [stdout] | [INFO] [stdout] 156 | / writeln!(io::stderr(), "Unexpected Token. Expected identifier or ;") [INFO] [stdout] 157 | | .unwrap(); [INFO] [stdout] | |_____________________________________^ help: try: `eprintln!("Unexpected Token. Expected identifier or ;")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:225:17 [INFO] [stdout] | [INFO] [stdout] 225 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | / ... writeln!(io::stderr(), "Unexpected token {}. Expected expression", nt) [INFO] [stdout] 252 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected token {}. Expected expression", nt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:285:17 [INFO] [stdout] | [INFO] [stdout] 285 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:313:17 [INFO] [stdout] | [INFO] [stdout] 313 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:337:17 [INFO] [stdout] | [INFO] [stdout] 337 | writeln!(io::stderr(), "Unexpected EOF. Expected expression").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser/parser.rs:384:21 [INFO] [stdout] | [INFO] [stdout] 384 | return AstNode::Grouping(Box::new(Grouping { value: expr })); [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] 384 - return AstNode::Grouping(Box::new(Grouping { value: expr })); [INFO] [stdout] 384 + AstNode::Grouping(Box::new(Grouping { value: expr })) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:374:33 [INFO] [stdout] | [INFO] [stdout] 374 | / ... writeln!(io::stderr(), "Unexpected token {}. Expected )", nt) [INFO] [stdout] 375 | | ... .unwrap(); [INFO] [stdout] | |___________________________________^ help: try: `eprintln!("Unexpected token {}. Expected )", nt)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:380:25 [INFO] [stdout] | [INFO] [stdout] 380 | writeln!(io::stderr(), "Unexpected EOF. Expected ).").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected ).")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:386:21 [INFO] [stdout] | [INFO] [stdout] 386 | writeln!(io::stderr(), "Unexpected EOF. Expected expression.").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unexpected EOF. Expected expression.")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:393:17 [INFO] [stdout] | [INFO] [stdout] 393 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", error)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser/parser.rs:413:21 [INFO] [stdout] | [INFO] [stdout] 413 | / return AstNode::Print(Print { [INFO] [stdout] 414 | | value: Box::new(node), [INFO] [stdout] 415 | | }); [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] 413 ~ AstNode::Print(Print { [INFO] [stdout] 414 + value: Box::new(node), [INFO] [stdout] 415 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:407:21 [INFO] [stdout] | [INFO] [stdout] 407 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", "Syntax error")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/parser/parser.rs:407:50 [INFO] [stdout] | [INFO] [stdout] 407 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 407 - writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] 407 + writeln!(io::stderr(), "Syntax error").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", "Syntax error")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/parser/parser.rs:419:42 [INFO] [stdout] | [INFO] [stdout] 419 | writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 419 - writeln!(io::stderr(), "{}", "Syntax error").unwrap(); [INFO] [stdout] 419 + writeln!(io::stderr(), "Syntax error").unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/parser.rs:451:13 [INFO] [stdout] | [INFO] [stdout] 451 | / writeln!( [INFO] [stdout] 452 | | io::stderr(), [INFO] [stdout] 453 | | "[line {}] Error at end: Expect '}}' .", [INFO] [stdout] 454 | | self.tokenizer.line [INFO] [stdout] 455 | | ) [INFO] [stdout] 456 | | .unwrap(); [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 ~ eprintln!("[line {}] Error at end: Expect '}}' .", [INFO] [stdout] 452 ~ self.tokenizer.line); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/parser/tests.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | / mod tests { [INFO] [stdout] 3 | | use crate::parser::{ [INFO] [stdout] 4 | | ast::{ [INFO] [stdout] 5 | | AssignmentExpression, AstNode, Binary, Boolean, BooleanValue, Grouping, Identifier, [INFO] [stdout] ... | [INFO] [stdout] 371 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/parser/utils.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | writeln!(io::stderr(), "{first_part}: {second_part}").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{first_part}: {second_part}")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `TAB` contains a capitalized acronym [INFO] [stdout] --> src/tokenizer/language.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | TAB, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Tab` [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: module has the same name as its containing module [INFO] [stdout] --> src/tokenizer/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | pub mod tokenizer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/tokenizer/tokenizer.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | while let Some(t) = self.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for t in self.by_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/tokenizer/tokenizer.rs:61:17 [INFO] [stdout] | [INFO] [stdout] 61 | self.source_code[self.pointer..self.pointer + s.len()].to_string() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&self.source_code[self.pointer..self.pointer + s.len()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | return; [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] 101 - writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] 102 - return; [INFO] [stdout] 101 + writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | 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] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | writeln!(io::stderr(), "Logs from your program will appear here!").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Logs from your program will appear here!")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:40:21 [INFO] [stdout] | [INFO] [stdout] 40 | writeln!(io::stderr(), "{}", e).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{}", e)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 47 | if tokenizer.errors.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tokenizer.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | writeln!(io::stderr(), "Failed to read file {}", filename).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Failed to read file {}", filename)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `writeln!(stderr(), ...).unwrap()` [INFO] [stdout] --> src/main.rs:101:13 [INFO] [stdout] | [INFO] [stdout] 101 | writeln!(io::stderr(), "Unknown command: {}", command).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("Unknown command: {}", command)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.60s [INFO] running `Command { std: "docker" "inspect" "dac730209fec8040efe2457eba4664e6fd7906d69a996ebdd2bad7da9b9454e9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "dac730209fec8040efe2457eba4664e6fd7906d69a996ebdd2bad7da9b9454e9", kill_on_drop: false }` [INFO] [stdout] dac730209fec8040efe2457eba4664e6fd7906d69a996ebdd2bad7da9b9454e9