[INFO] cloning repository https://github.com/mohammad-ayan-008/lox_lang [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mohammad-ayan-008/lox_lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmohammad-ayan-008%2Flox_lang", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmohammad-ayan-008%2Flox_lang'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 84d2571e981f5a110a68d0ccd80274275787efb6 [INFO] linting mohammad-ayan-008/lox_lang against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmohammad-ayan-008%2Flox_lang" "/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/mohammad-ayan-008/lox_lang [INFO] finished tweaking git repo https://github.com/mohammad-ayan-008/lox_lang [INFO] tweaked toml for git repo https://github.com/mohammad-ayan-008/lox_lang written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/mohammad-ayan-008/lox_lang 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/mohammad-ayan-008/lox_lang 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] 8231ff1d8a09631a31fc8e192d6bdc3a20f6d5bedeb6d770814287248a27a541 [INFO] running `Command { std: "docker" "start" "-a" "8231ff1d8a09631a31fc8e192d6bdc3a20f6d5bedeb6d770814287248a27a541", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8231ff1d8a09631a31fc8e192d6bdc3a20f6d5bedeb6d770814287248a27a541", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8231ff1d8a09631a31fc8e192d6bdc3a20f6d5bedeb6d770814287248a27a541", kill_on_drop: false }` [INFO] [stdout] 8231ff1d8a09631a31fc8e192d6bdc3a20f6d5bedeb6d770814287248a27a541 [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] 57de1b1d4fc1c544f5087af56d431452a342a374a70a47691e46bac474c01dcc [INFO] running `Command { std: "docker" "start" "-a" "57de1b1d4fc1c544f5087af56d431452a342a374a70a47691e46bac474c01dcc", kill_on_drop: false }` [INFO] [stderr] Checking lox_lang v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `BufReader` and `args` [INFO] [stdout] --> src/main.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | env::{self, args}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 3 | fs::read_to_string, [INFO] [stdout] 4 | io::{BufRead, BufReader, Write, stdin, stdout}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `format`, `result`, and `write` [INFO] [stdout] --> src/expr.rs:1:32 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, fmt::{format, write, Debug}, rc::Rc, result, usize}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/expr.rs:4:19 [INFO] [stdout] | [INFO] [stdout] 4 | environment::{self, Environment}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Instant`, `env`, `error::Error`, `ops::ControlFlow`, and `result` [INFO] [stdout] --> src/interpreter.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, env, error::Error, ops::ControlFlow, rc::Rc, result, time::{Instant, SystemTime}}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parser`, `self`, `self`, and `self` [INFO] [stdout] --> src/interpreter.rs:4:19 [INFO] [stdout] | [INFO] [stdout] 4 | environment::{self, Environment}, expr::{self, Expr, LiteralValue}, parser, stmt::{self, Stmt} [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `env`, `process::id`, and `result` [INFO] [stdout] --> src/parser.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{env, process::id, result, usize, vec}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Literal`, `self`, and `self` [INFO] [stdout] --> src/parser.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | expr::{self, Expr, LiteralValue}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 5 | stmt::Stmt, [INFO] [stdout] 6 | token::{self, Literal, Token}, [INFO] [stdout] | ^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `any::type_name` and `string` [INFO] [stdout] --> src/scanner.rs:2:11 [INFO] [stdout] | [INFO] [stdout] 2 | use std::{any::type_name, collections::HashMap, string, usize}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::format` [INFO] [stdout] --> src/token.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt::format; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftParen` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | RIGHT_PAREN, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightParen` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | LEFT_BRACE, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `BANG_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | BANG_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `BangEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `EQUAL_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | EQUAL_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EqualEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `GREATER_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | GREATER_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GreaterEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LESS_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | LESS_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LessEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufReader` and `args` [INFO] [stdout] --> src/main.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | env::{self, args}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 3 | fs::read_to_string, [INFO] [stdout] 4 | io::{BufRead, BufReader, Write, stdin, stdout}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `format`, `result`, and `write` [INFO] [stdout] --> src/expr.rs:1:32 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, fmt::{format, write, Debug}, rc::Rc, result, usize}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> src/expr.rs:4:19 [INFO] [stdout] | [INFO] [stdout] 4 | environment::{self, Environment}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::num` [INFO] [stdout] --> src/expr.rs:375:9 [INFO] [stdout] | [INFO] [stdout] 375 | use core::num; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::Binary` [INFO] [stdout] --> src/expr.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | use std::fmt::Binary; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Literal` [INFO] [stdout] --> src/expr.rs:378:9 [INFO] [stdout] | [INFO] [stdout] 378 | use crate::token::Literal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Instant`, `env`, `error::Error`, `ops::ControlFlow`, and `result` [INFO] [stdout] --> src/interpreter.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, env, error::Error, ops::ControlFlow, rc::Rc, result, time::{Instant, SystemTime}}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parser`, `self`, `self`, and `self` [INFO] [stdout] --> src/interpreter.rs:4:19 [INFO] [stdout] | [INFO] [stdout] 4 | environment::{self, Environment}, expr::{self, Expr, LiteralValue}, parser, stmt::{self, Stmt} [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `env`, `process::id`, and `result` [INFO] [stdout] --> src/parser.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{env, process::id, result, usize, vec}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Literal`, `self`, and `self` [INFO] [stdout] --> src/parser.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | expr::{self, Expr, LiteralValue}, [INFO] [stdout] | ^^^^ [INFO] [stdout] 5 | stmt::Stmt, [INFO] [stdout] 6 | token::{self, Literal, Token}, [INFO] [stdout] | ^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `any::type_name` and `string` [INFO] [stdout] --> src/scanner.rs:2:11 [INFO] [stdout] | [INFO] [stdout] 2 | use std::{any::type_name, collections::HashMap, string, usize}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::format` [INFO] [stdout] --> src/token.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt::format; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftParen` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | RIGHT_PAREN, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightParen` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | LEFT_BRACE, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `BANG_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | BANG_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `BangEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `EQUAL_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | EQUAL_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EqualEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `GREATER_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | GREATER_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GreaterEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LESS_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/tokentype.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | LESS_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LessEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:69:30 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arity` [INFO] [stdout] --> src/expr.rs:69:36 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^^^ help: try ignoring the field: `arity: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fun` [INFO] [stdout] --> src/expr.rs:69:43 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^ help: try ignoring the field: `fun: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:84:38 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arity` [INFO] [stdout] --> src/expr.rs:84:44 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^^^ help: try ignoring the field: `arity: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fun` [INFO] [stdout] --> src/expr.rs:84:51 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^ help: try ignoring the field: `fun: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/expr.rs:368:13 [INFO] [stdout] | [INFO] [stdout] 368 | _ => todo!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/expr.rs:368:13 [INFO] [stdout] | [INFO] [stdout] 215 | / Expr::Call { [INFO] [stdout] 216 | | callie, [INFO] [stdout] 217 | | paren, [INFO] [stdout] 218 | | args }=>{ [INFO] [stdout] | |______________________- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 232 | / Expr::Logical { [INFO] [stdout] 233 | | expression, [INFO] [stdout] 234 | | operator, [INFO] [stdout] 235 | | right, [INFO] [stdout] 236 | | } => { [INFO] [stdout] | |_____________- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 249 | Expr::Assign { name, value } => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 258 | Expr::Variable { name } => match env.borrow_mut().get(&name.lexeme) { [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 368 | _ => todo!(), [INFO] [stdout] | ^ ...and 4 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `paren` [INFO] [stdout] --> src/expr.rs:217:17 [INFO] [stdout] | [INFO] [stdout] 217 | paren, [INFO] [stdout] | ^^^^^ help: try ignoring the field: `paren: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:221:46 [INFO] [stdout] | [INFO] [stdout] 221 | LiteralValue::Callable { name, arity, fun }=>{ [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/interpreter.rs:17:16 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/interpreter.rs:17:45 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/interpreter.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:69:30 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arity` [INFO] [stdout] --> src/expr.rs:69:36 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^^^ help: try ignoring the field: `arity: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fun` [INFO] [stdout] --> src/expr.rs:69:43 [INFO] [stdout] | [INFO] [stdout] 69 | Self::Callable { name, arity, fun }=>panic!("cant use Callable as truthly value") [INFO] [stdout] | ^^^ help: try ignoring the field: `fun: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:84:38 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arity` [INFO] [stdout] --> src/expr.rs:84:44 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^^^ help: try ignoring the field: `arity: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fun` [INFO] [stdout] --> src/expr.rs:84:51 [INFO] [stdout] | [INFO] [stdout] 84 | LiteralValue::Callable { name, arity, fun }=>"Callable".to_string() [INFO] [stdout] | ^^^ help: try ignoring the field: `fun: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `kind` [INFO] [stdout] --> src/parser.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn funtion_decl(&mut self,kind:&str)->Result{ [INFO] [stdout] | ^^^^ [INFO] [stdout] 56 | let token = self.consume(TokenType::IDENTIFIER, "Expected {kind} name")?; [INFO] [stdout] | ---------------------- you might have meant to use string interpolation in this string literal [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | --------------------------------- you might have meant to use string interpolation in this string literal [INFO] [stdout] | [INFO] [stdout] help: string interpolation only works in `format!` invocations [INFO] [stdout] | [INFO] [stdout] 56 | let token = self.consume(TokenType::IDENTIFIER, format!("Expected {kind} name"))?; [INFO] [stdout] | ++++++++ + [INFO] [stdout] help: string interpolation only works in `format!` invocations [INFO] [stdout] | [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, format!("Expected '(' after {kind} name")); [INFO] [stdout] | ++++++++ + [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 55 | fn funtion_decl(&mut self,_kind:&str)->Result{ [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/expr.rs:368:13 [INFO] [stdout] | [INFO] [stdout] 368 | _ => todo!(), [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/expr.rs:368:13 [INFO] [stdout] | [INFO] [stdout] 215 | / Expr::Call { [INFO] [stdout] 216 | | callie, [INFO] [stdout] 217 | | paren, [INFO] [stdout] 218 | | args }=>{ [INFO] [stdout] | |______________________- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 232 | / Expr::Logical { [INFO] [stdout] 233 | | expression, [INFO] [stdout] 234 | | operator, [INFO] [stdout] 235 | | right, [INFO] [stdout] 236 | | } => { [INFO] [stdout] | |_____________- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 249 | Expr::Assign { name, value } => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 258 | Expr::Variable { name } => match env.borrow_mut().get(&name.lexeme) { [INFO] [stdout] | ----------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 368 | _ => todo!(), [INFO] [stdout] | ^ ...and 4 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let mut body; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `paren` [INFO] [stdout] --> src/expr.rs:217:17 [INFO] [stdout] | [INFO] [stdout] 217 | paren, [INFO] [stdout] | ^^^^^ help: try ignoring the field: `paren: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/expr.rs:221:46 [INFO] [stdout] | [INFO] [stdout] 221 | LiteralValue::Callable { name, arity, fun }=>{ [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/interpreter.rs:17:16 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/interpreter.rs:17:45 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `env` [INFO] [stdout] --> src/interpreter.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_env` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/parser.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let token = self.previous(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `kind` [INFO] [stdout] --> src/parser.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn funtion_decl(&mut self,kind:&str)->Result{ [INFO] [stdout] | ^^^^ [INFO] [stdout] 56 | let token = self.consume(TokenType::IDENTIFIER, "Expected {kind} name")?; [INFO] [stdout] | ---------------------- you might have meant to use string interpolation in this string literal [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | --------------------------------- you might have meant to use string interpolation in this string literal [INFO] [stdout] | [INFO] [stdout] help: string interpolation only works in `format!` invocations [INFO] [stdout] | [INFO] [stdout] 56 | let token = self.consume(TokenType::IDENTIFIER, format!("Expected {kind} name"))?; [INFO] [stdout] | ++++++++ + [INFO] [stdout] help: string interpolation only works in `format!` invocations [INFO] [stdout] | [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, format!("Expected '(' after {kind} name")); [INFO] [stdout] | ++++++++ + [INFO] [stdout] help: if this is intentional, prefix it with an underscore [INFO] [stdout] | [INFO] [stdout] 55 | fn funtion_decl(&mut self,_kind:&str)->Result{ [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let mut body; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print` is never used [INFO] [stdout] --> src/expr.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 209 | impl Expr { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 210 | pub fn print(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `interpret` is never used [INFO] [stdout] --> src/interpreter.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl Interpreter { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn interpret(&mut self, expr: Expr) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ILiteral` and `IdentifierLiteral` are never constructed [INFO] [stdout] --> src/token.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Literal { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 9 | ILiteral(i64), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 10 | IdentifierLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Literal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `token` [INFO] [stdout] --> src/parser.rs:419:13 [INFO] [stdout] | [INFO] [stdout] 419 | let token = self.previous(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/environment.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 28 | let a = t.borrow_mut().get(name); [INFO] [stdout] | --------------------------------- unnecessary `let` binding [INFO] [stdout] 29 | a [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] 28 ~ [INFO] [stdout] 29 ~ t.borrow_mut().get(name) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/expr.rs:1:71 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, fmt::{format, write, Debug}, rc::Rc, result, usize}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/expr.rs:15:42 [INFO] [stdout] | [INFO] [stdout] 15 | Callable{name:String,arity:usize,fun:Rc>,&Vec)->LiteralValue>} [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/expr.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | / match self { [INFO] [stdout] 45 | | LiteralValue::False | LiteralValue::Nil => false, [INFO] [stdout] 46 | | _ => true, [INFO] [stdout] 47 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 44 - match self { [INFO] [stdout] 45 - LiteralValue::False | LiteralValue::Nil => false, [INFO] [stdout] 46 - _ => true, [INFO] [stdout] 47 - } [INFO] [stdout] 44 + !matches!(self, LiteralValue::False | LiteralValue::Nil) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/expr.rs:60:20 [INFO] [stdout] | [INFO] [stdout] 60 | if s.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/expr.rs:147:39 [INFO] [stdout] | [INFO] [stdout] 147 | Some(Literal::FLiteral(x)) => x as f64, [INFO] [stdout] | ^^^^^^^^ help: try: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print` is never used [INFO] [stdout] --> src/expr.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 209 | impl Expr { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 210 | pub fn print(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `interpret` is never used [INFO] [stdout] --> src/interpreter.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl Interpreter { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn interpret(&mut self, expr: Expr) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ILiteral` and `IdentifierLiteral` are never constructed [INFO] [stdout] --> src/token.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Literal { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 9 | ILiteral(i64), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 10 | IdentifierLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Literal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/environment.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 28 | let a = t.borrow_mut().get(name); [INFO] [stdout] | --------------------------------- unnecessary `let` binding [INFO] [stdout] 29 | a [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] 28 ~ [INFO] [stdout] 29 ~ t.borrow_mut().get(name) [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/interpreter.rs:17:50 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [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] 17 - pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] 17 + pub fn time_fn(env:Rc>,args:&[LiteralValue])->LiteralValue{ [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/interpreter.rs:22:48 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [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] 22 - pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] 22 + pub fn floor(env:Rc>,args:&[LiteralValue])->LiteralValue{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/expr.rs:1:71 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{cell::RefCell, fmt::{format, write, Debug}, rc::Rc, result, usize}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/expr.rs:15:42 [INFO] [stdout] | [INFO] [stdout] 15 | Callable{name:String,arity:usize,fun:Rc>,&Vec)->LiteralValue>} [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/expr.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | / match self { [INFO] [stdout] 45 | | LiteralValue::False | LiteralValue::Nil => false, [INFO] [stdout] 46 | | _ => true, [INFO] [stdout] 47 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 44 - match self { [INFO] [stdout] 45 - LiteralValue::False | LiteralValue::Nil => false, [INFO] [stdout] 46 - _ => true, [INFO] [stdout] 47 - } [INFO] [stdout] 44 + !matches!(self, LiteralValue::False | LiteralValue::Nil) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/expr.rs:60:20 [INFO] [stdout] | [INFO] [stdout] 60 | if s.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.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: casting to the same type is unnecessary (`f64` -> `f64`) [INFO] [stdout] --> src/expr.rs:147:39 [INFO] [stdout] | [INFO] [stdout] 147 | Some(Literal::FLiteral(x)) => x as f64, [INFO] [stdout] | ^^^^^^^^ help: try: `x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/parser.rs:1:37 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{env, process::id, result, usize, vec}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | let init; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `init` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 81 ~ [INFO] [stdout] 82 ~ let init = if self.match_tokens(&[TokenType::EQUAL]) { [INFO] [stdout] 83 ~ self.expression() [INFO] [stdout] 84 | } else { [INFO] [stdout] 85 ~ Ok(Expr::Literal { [INFO] [stdout] 86 | value: LiteralValue::Nil, [INFO] [stdout] 87 ~ }) [INFO] [stdout] 88 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:174:12 [INFO] [stdout] | [INFO] [stdout] 174 | if !increment.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `increment.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `increment` after checking its variant with `is_none` [INFO] [stdout] --> src/parser.rs:177:59 [INFO] [stdout] | [INFO] [stdout] 174 | if !increment.is_none() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 177 | Stmt::Expression { expression:increment.unwrap()} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `if let` or `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/interpreter.rs:17:50 [INFO] [stdout] | [INFO] [stdout] 17 | pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [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] 17 - pub fn time_fn(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] 17 + pub fn time_fn(env:Rc>,args:&[LiteralValue])->LiteralValue{ [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/interpreter.rs:22:48 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [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] 22 - pub fn floor(env:Rc>,args:&Vec)->LiteralValue{ [INFO] [stdout] 22 + pub fn floor(env:Rc>,args:&[LiteralValue])->LiteralValue{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/parser.rs:1:37 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{env, process::id, result, usize, vec}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:426:9 [INFO] [stdout] | [INFO] [stdout] 426 | let result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `result` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 426 ~ [INFO] [stdout] 427 ~ let result = match token.token_type { [INFO] [stdout] 428 | TokenType::LEFT_PAREN => { [INFO] [stdout] ... [INFO] [stdout] 431 | self.consume(TokenType::RIGHT_PAREN, "Expected ')'")?; [INFO] [stdout] 432 ~ Expr::Grouping { [INFO] [stdout] 433 | expression: Box::from(expr), [INFO] [stdout] ... [INFO] [stdout] 441 | self.advance(); [INFO] [stdout] 442 ~ Expr::Literal { [INFO] [stdout] 443 | value: LiteralValue::from_token(token), [INFO] [stdout] ... [INFO] [stdout] 447 | self.advance(); [INFO] [stdout] 448 ~ Expr::Variable { [INFO] [stdout] 449 | name: self.previous(), [INFO] [stdout] ... [INFO] [stdout] 458 | } [INFO] [stdout] 459 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:471:13 [INFO] [stdout] | [INFO] [stdout] 471 | return Err(format!("{} at line {}", msg.to_string(), token.line)); [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] 471 - return Err(format!("{} at line {}", msg.to_string(), token.line)); [INFO] [stdout] 471 + Err(format!("{} at line {}", msg.to_string(), token.line)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/parser.rs:471:52 [INFO] [stdout] | [INFO] [stdout] 471 | return Err(format!("{} at line {}", msg.to_string(), token.line)); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/parser.rs:508:40 [INFO] [stdout] | [INFO] [stdout] 508 | self.tokens.get(self.current - 1 as usize).unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/parser.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | let init; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `init` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 81 ~ [INFO] [stdout] 82 ~ let init = if self.match_tokens(&[TokenType::EQUAL]) { [INFO] [stdout] 83 ~ self.expression() [INFO] [stdout] 84 | } else { [INFO] [stdout] 85 ~ Ok(Expr::Literal { [INFO] [stdout] 86 | value: LiteralValue::Nil, [INFO] [stdout] 87 ~ }) [INFO] [stdout] 88 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/scanner.rs:2:57 [INFO] [stdout] | [INFO] [stdout] 2 | use std::{any::type_name, collections::HashMap, string, usize}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:174:12 [INFO] [stdout] | [INFO] [stdout] 174 | if !increment.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `increment.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `increment` after checking its variant with `is_none` [INFO] [stdout] --> src/parser.rs:177:59 [INFO] [stdout] | [INFO] [stdout] 174 | if !increment.is_none() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 177 | Stmt::Expression { expression:increment.unwrap()} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `if let` or `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/scanner.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | if let None = t { [INFO] [stdout] | -------^^^^---- help: try: `if t.is_none()` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:157:43 [INFO] [stdout] | [INFO] [stdout] 157 | let char = self.source.as_bytes()[self.current as usize]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:172:22 [INFO] [stdout] | [INFO] [stdout] 172 | .nth((self.current + 1) as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((self.current + 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:190:32 [INFO] [stdout] | [INFO] [stdout] 190 | let text = self.source[self.start as usize..self.current as usize].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:190:53 [INFO] [stdout] | [INFO] [stdout] 190 | let text = self.source[self.start as usize..self.current as usize].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('a'..='z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:219:33 [INFO] [stdout] | [INFO] [stdout] 219 | c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('A'..='Z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | c >= '0' && c <= '9' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `WHILE` contains a capitalized acronym [INFO] [stdout] --> src/stmt.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | 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] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | StringLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | FLiteral(f64), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | ILiteral(i64), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | IdentifierLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Literal` [INFO] [stdout] --> src/token.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / pub enum Literal { [INFO] [stdout] 7 | | StringLiteral(String), [INFO] [stdout] 8 | | FLiteral(f64), [INFO] [stdout] 9 | | ILiteral(i64), [INFO] [stdout] 10 | | IdentifierLiteral(String), [INFO] [stdout] 11 | | } [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] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/token.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / impl ToString for Token { [INFO] [stdout] 22 | | fn to_string(&self) -> String { [INFO] [stdout] 23 | | format!( [INFO] [stdout] 24 | | " {:?} {} {:?}", [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `COMMA` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | COMMA, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Comma` [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 `DOT` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | DOT, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dot` [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 `MINUS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | MINUS, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Minus` [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 `PLUS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | PLUS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Plus` [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 `SEMICOLON` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | SEMICOLON, [INFO] [stdout] | ^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Semicolon` [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 `SLASH` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | SLASH, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Slash` [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 `STAR` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | STAR, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Star` [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 `BANG` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | BANG, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Bang` [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 `EQUAL` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | EQUAL, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Equal` [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 `GREATER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | GREATER, [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Greater` [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 `LESS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | LESS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Less` [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 `IDENTIFIER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | IDENTIFIER, [INFO] [stdout] | ^^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Identifier` [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 `STRING` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | STRING, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `String` [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 `NUMBER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | NUMBER, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Number` [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 `AND` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | 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: name `CLASS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | 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/tokentype.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | 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/tokentype.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | 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/tokentype.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | 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/tokentype.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | 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/tokentype.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | 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/tokentype.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | 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/tokentype.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | 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/tokentype.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | 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/tokentype.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | 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/tokentype.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | 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/tokentype.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | 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/tokentype.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | 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: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [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 `BREAK` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | BREAK, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Break` [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 `CONTINUE` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | CONTINUE, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Continue` [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: unneeded late initialization [INFO] [stdout] --> src/parser.rs:426:9 [INFO] [stdout] | [INFO] [stdout] 426 | let result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `result` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 426 ~ [INFO] [stdout] 427 ~ let result = match token.token_type { [INFO] [stdout] 428 | TokenType::LEFT_PAREN => { [INFO] [stdout] ... [INFO] [stdout] 431 | self.consume(TokenType::RIGHT_PAREN, "Expected ')'")?; [INFO] [stdout] 432 ~ Expr::Grouping { [INFO] [stdout] 433 | expression: Box::from(expr), [INFO] [stdout] ... [INFO] [stdout] 441 | self.advance(); [INFO] [stdout] 442 ~ Expr::Literal { [INFO] [stdout] 443 | value: LiteralValue::from_token(token), [INFO] [stdout] ... [INFO] [stdout] 447 | self.advance(); [INFO] [stdout] 448 ~ Expr::Variable { [INFO] [stdout] 449 | name: self.previous(), [INFO] [stdout] ... [INFO] [stdout] 458 | } [INFO] [stdout] 459 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:471:13 [INFO] [stdout] | [INFO] [stdout] 471 | return Err(format!("{} at line {}", msg.to_string(), token.line)); [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] 471 - return Err(format!("{} at line {}", msg.to_string(), token.line)); [INFO] [stdout] 471 + Err(format!("{} at line {}", msg.to_string(), token.line)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/parser.rs:471:52 [INFO] [stdout] | [INFO] [stdout] 471 | return Err(format!("{} at line {}", msg.to_string(), token.line)); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/parser.rs:508:40 [INFO] [stdout] | [INFO] [stdout] 508 | self.tokens.get(self.current - 1 as usize).unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing legacy numeric constants [INFO] [stdout] --> src/scanner.rs:2:57 [INFO] [stdout] | [INFO] [stdout] 2 | use std::{any::type_name, collections::HashMap, string, usize}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import [INFO] [stdout] = note: then `usize::` will resolve to the respective associated constant [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `forClosure` should have a snake case name [INFO] [stdout] --> src/interpreter.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | fn forClosure(parent:Rc>) -> Self{ [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `for_closure` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/scanner.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | if let None = t { [INFO] [stdout] | -------^^^^---- help: try: `if t.is_none()` [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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:157:43 [INFO] [stdout] | [INFO] [stdout] 157 | let char = self.source.as_bytes()[self.current as usize]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:172:22 [INFO] [stdout] | [INFO] [stdout] 172 | .nth((self.current + 1) as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((self.current + 1))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:190:32 [INFO] [stdout] | [INFO] [stdout] 190 | let text = self.source[self.start as usize..self.current as usize].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.start` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/scanner.rs:190:53 [INFO] [stdout] | [INFO] [stdout] 190 | let text = self.source[self.start as usize..self.current as usize].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/parser.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 57 | let _ = self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `finishCall` should have a snake case name [INFO] [stdout] --> src/parser.rs:406:8 [INFO] [stdout] | [INFO] [stdout] 406 | fn finishCall(&mut self,callie:Expr)->Result{ [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `finish_call` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `scanTokens` should have a snake case name [INFO] [stdout] --> src/scanner.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn scanTokens(mut self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `scan_tokens` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `scanToken` should have a snake case name [INFO] [stdout] --> src/scanner.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | fn scanToken(&mut self) { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `scan_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('a'..='z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:219:33 [INFO] [stdout] | [INFO] [stdout] 219 | c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('A'..='Z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/scanner.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | c >= '0' && c <= '9' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `WHILE` contains a capitalized acronym [INFO] [stdout] --> src/stmt.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | 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] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | StringLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | FLiteral(f64), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | ILiteral(i64), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/token.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | IdentifierLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Literal` [INFO] [stdout] --> src/token.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / pub enum Literal { [INFO] [stdout] 7 | | StringLiteral(String), [INFO] [stdout] 8 | | FLiteral(f64), [INFO] [stdout] 9 | | ILiteral(i64), [INFO] [stdout] 10 | | IdentifierLiteral(String), [INFO] [stdout] 11 | | } [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] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/token.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / impl ToString for Token { [INFO] [stdout] 22 | | fn to_string(&self) -> String { [INFO] [stdout] 23 | | format!( [INFO] [stdout] 24 | | " {:?} {} {:?}", [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `COMMA` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | COMMA, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Comma` [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 `DOT` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | DOT, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dot` [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 `MINUS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | MINUS, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Minus` [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 `PLUS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | PLUS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Plus` [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 `SEMICOLON` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | SEMICOLON, [INFO] [stdout] | ^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Semicolon` [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 `SLASH` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | SLASH, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Slash` [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 `STAR` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | STAR, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Star` [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 `BANG` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | BANG, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Bang` [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 `EQUAL` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | EQUAL, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Equal` [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 `GREATER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | GREATER, [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Greater` [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 `LESS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | LESS, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Less` [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 `IDENTIFIER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | IDENTIFIER, [INFO] [stdout] | ^^^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Identifier` [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 `STRING` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | STRING, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `String` [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 `NUMBER` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | NUMBER, [INFO] [stdout] | ^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Number` [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 `AND` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | 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: name `CLASS` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | 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/tokentype.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | 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/tokentype.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | 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/tokentype.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | 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/tokentype.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | 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/tokentype.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | 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/tokentype.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | 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/tokentype.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | 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/tokentype.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | 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/tokentype.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | 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/tokentype.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | 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/tokentype.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | 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/tokentype.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | 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: name `EOF` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | EOF, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Eof` [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 `BREAK` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | BREAK, [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Break` [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 `CONTINUE` contains a capitalized acronym [INFO] [stdout] --> src/tokentype.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | CONTINUE, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Continue` [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: method `forClosure` should have a snake case name [INFO] [stdout] --> src/interpreter.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | fn forClosure(parent:Rc>) -> Self{ [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `for_closure` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/parser.rs:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 57 | let _ = self.consume(TokenType::LEFT_PAREN, "Expected '(' after {kind} name"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `finishCall` should have a snake case name [INFO] [stdout] --> src/parser.rs:406:8 [INFO] [stdout] | [INFO] [stdout] 406 | fn finishCall(&mut self,callie:Expr)->Result{ [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `finish_call` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `scanTokens` should have a snake case name [INFO] [stdout] --> src/scanner.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn scanTokens(mut self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `scan_tokens` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `scanToken` should have a snake case name [INFO] [stdout] --> src/scanner.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | fn scanToken(&mut self) { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `scan_token` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.78s [INFO] running `Command { std: "docker" "inspect" "57de1b1d4fc1c544f5087af56d431452a342a374a70a47691e46bac474c01dcc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "57de1b1d4fc1c544f5087af56d431452a342a374a70a47691e46bac474c01dcc", kill_on_drop: false }` [INFO] [stdout] 57de1b1d4fc1c544f5087af56d431452a342a374a70a47691e46bac474c01dcc