[INFO] cloning repository https://github.com/ItsLeto/cli-calculator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ItsLeto/cli-calculator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItsLeto%2Fcli-calculator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItsLeto%2Fcli-calculator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1cc053d5f7c1764ad3bcd2c5ebad5e7682a4ba1d [INFO] linting ItsLeto/cli-calculator against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItsLeto%2Fcli-calculator" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ItsLeto/cli-calculator [INFO] finished tweaking git repo https://github.com/ItsLeto/cli-calculator [INFO] tweaked toml for git repo https://github.com/ItsLeto/cli-calculator written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ItsLeto/cli-calculator 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/ItsLeto/cli-calculator already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded nerd-font-symbols v0.2.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] c35d651f41fc59bcbc505bce07666f10c6829cd9870c9987566045da20b8b5fa [INFO] running `Command { std: "docker" "start" "-a" "c35d651f41fc59bcbc505bce07666f10c6829cd9870c9987566045da20b8b5fa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c35d651f41fc59bcbc505bce07666f10c6829cd9870c9987566045da20b8b5fa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c35d651f41fc59bcbc505bce07666f10c6829cd9870c9987566045da20b8b5fa", kill_on_drop: false }` [INFO] [stdout] c35d651f41fc59bcbc505bce07666f10c6829cd9870c9987566045da20b8b5fa [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] b2a7762206f8627ca1fd9aa74c167572e21866529b0d0c783baa0d816ee42031 [INFO] running `Command { std: "docker" "start" "-a" "b2a7762206f8627ca1fd9aa74c167572e21866529b0d0c783baa0d816ee42031", kill_on_drop: false }` [INFO] [stderr] Checking numtoa v0.2.4 [INFO] [stderr] Checking fmt v0.1.0 [INFO] [stderr] Checking nerd-font-symbols v0.2.0 [INFO] [stderr] Checking termion v4.0.3 [INFO] [stderr] Checking zeno-compiler v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ast/parser.rs:269:13 [INFO] [stdout] | [INFO] [stdout] 269 | else_keyword: else_keyword, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_keyword` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] = note: `#[warn(clippy::duplicate_underscore_argument)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:295:9 [INFO] [stdout] | [INFO] [stdout] 295 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | expr: &super::ASTParenthesizedExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:609:9 [INFO] [stdout] | [INFO] [stdout] 609 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:626:9 [INFO] [stdout] | [INFO] [stdout] 626 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:653:9 [INFO] [stdout] | [INFO] [stdout] 653 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:666:9 [INFO] [stdout] | [INFO] [stdout] 666 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:680:9 [INFO] [stdout] | [INFO] [stdout] 680 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:697:9 [INFO] [stdout] | [INFO] [stdout] 697 | expr: &super::ASTParenthesizedExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TextSpan` and `TokenKind` [INFO] [stdout] --> src/ast/solver.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | lexer::{TextSpan, TokenKind}, [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:298:9 [INFO] [stdout] | [INFO] [stdout] 298 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:309:9 [INFO] [stdout] | [INFO] [stdout] 309 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 323 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::ast::printer` [INFO] [stdout] --> src/ast/type_checker.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::printer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:344:9 [INFO] [stdout] | [INFO] [stdout] 344 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:394:9 [INFO] [stdout] | [INFO] [stdout] 394 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ast/parser.rs:269:13 [INFO] [stdout] | [INFO] [stdout] 269 | else_keyword: else_keyword, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_keyword` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] = note: `#[warn(clippy::duplicate_underscore_argument)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:295:9 [INFO] [stdout] | [INFO] [stdout] 295 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | expr: &super::ASTParenthesizedExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:609:9 [INFO] [stdout] | [INFO] [stdout] 609 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:626:9 [INFO] [stdout] | [INFO] [stdout] 626 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:653:9 [INFO] [stdout] | [INFO] [stdout] 653 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:666:9 [INFO] [stdout] | [INFO] [stdout] 666 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:680:9 [INFO] [stdout] | [INFO] [stdout] 680 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/printer.rs:697:9 [INFO] [stdout] | [INFO] [stdout] 697 | expr: &super::ASTParenthesizedExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TextSpan` and `TokenKind` [INFO] [stdout] --> src/ast/solver.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | lexer::{TextSpan, TokenKind}, [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:245:9 [INFO] [stdout] | [INFO] [stdout] 245 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:298:9 [INFO] [stdout] | [INFO] [stdout] 298 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:309:9 [INFO] [stdout] | [INFO] [stdout] 309 | expr: &super::ASTUnaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/solver.rs:323:9 [INFO] [stdout] | [INFO] [stdout] 323 | expr: &super::ASTBinaryExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::ast::printer` [INFO] [stdout] --> src/ast/type_checker.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::printer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:344:9 [INFO] [stdout] | [INFO] [stdout] 344 | expr: &super::ASTAssignmentExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:394:9 [INFO] [stdout] | [INFO] [stdout] 394 | expr: &super::ASTFunctionCallExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `expr` already exists, having another argument having almost the same name makes code comprehension and documentation more difficult [INFO] [stdout] --> src/ast/type_checker.rs:439:9 [INFO] [stdout] | [INFO] [stdout] 439 | expr: &super::ASTVariableExpression, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duplicate_underscore_argument [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `kind` is never read [INFO] [stdout] --> src/ast/lexer.rs:227:24 [INFO] [stdout] | [INFO] [stdout] 227 | let mut kind = TokenKind::Bad; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/printer.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `kind` is never read [INFO] [stdout] --> src/ast/lexer.rs:227:24 [INFO] [stdout] | [INFO] [stdout] 227 | let mut kind = TokenKind::Bad; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/printer.rs:652:9 [INFO] [stdout] | [INFO] [stdout] 652 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/solver.rs:216:9 [INFO] [stdout] | [INFO] [stdout] 216 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/solver.rs:297:9 [INFO] [stdout] | [INFO] [stdout] 297 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:47:42 [INFO] [stdout] | [INFO] [stdout] 47 | fn visit_return_statement(&mut self, ast: &mut Ast, statement: &super::ASTReturnStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:59:39 [INFO] [stdout] | [INFO] [stdout] 59 | fn visit_let_statement(&mut self, ast: &mut Ast, statement: &super::ASTLetStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:75:39 [INFO] [stdout] | [INFO] [stdout] 75 | fn visit_var_statement(&mut self, ast: &mut Ast, statement: &super::ASTVarStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:91:44 [INFO] [stdout] | [INFO] [stdout] 91 | fn visit_compound_statement(&mut self, ast: &mut Ast, statement: &super::ASTCompoundStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:102:38 [INFO] [stdout] | [INFO] [stdout] 102 | fn visit_if_statement(&mut self, ast: &mut Ast, statement: &super::ASTIfStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:109:44 [INFO] [stdout] | [INFO] [stdout] 109 | fn visit_for_loop_statement(&mut self, ast: &mut Ast, statement: &super::ASTForStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:116:46 [INFO] [stdout] | [INFO] [stdout] 116 | fn visit_while_loop_statement(&mut self, ast: &mut Ast, statement: &super::ASTWhileStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:123:44 [INFO] [stdout] | [INFO] [stdout] 123 | fn visit_function_statement(&mut self, ast: &mut Ast, function: &super::ASTFunctionStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:166:9 [INFO] [stdout] | [INFO] [stdout] 166 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/printer.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/type_checker.rs:438:9 [INFO] [stdout] | [INFO] [stdout] 438 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/printer.rs:652:9 [INFO] [stdout] | [INFO] [stdout] 652 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/compilation_unit.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut solver = ASTSolver::new(); [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: `solver` [INFO] [stdout] --> src/compilation_unit.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut solver = ASTSolver::new(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/solver.rs:216:9 [INFO] [stdout] | [INFO] [stdout] 216 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/solver.rs:297:9 [INFO] [stdout] | [INFO] [stdout] 297 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prefix` [INFO] [stdout] --> src/diagnostics/printer.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let prefix = line[..col].to_string(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prefix` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error_symbol` [INFO] [stdout] --> src/diagnostics/printer.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | let error_symbol = line[col..symbol_end_col].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `suffix` [INFO] [stdout] --> src/diagnostics/printer.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let suffix = line[symbol_end_col..].to_string(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_suffix` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `input` [INFO] [stdout] --> src/main.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | let input = "\ [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:47:42 [INFO] [stdout] | [INFO] [stdout] 47 | fn visit_return_statement(&mut self, ast: &mut Ast, statement: &super::ASTReturnStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ast::ASTStatementKind` is more private than the item `ast::Ast::add_stmnt` [INFO] [stdout] --> src/ast/mod.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn add_stmnt(&mut self, kind: ASTStatementKind) -> Option<&ASTStatement> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ast::Ast::add_stmnt` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ast::ASTStatementKind` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/ast/mod.rs:357:1 [INFO] [stdout] | [INFO] [stdout] 357 | enum ASTStatementKind { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ast::ASTExpressionKind` is more private than the item `ast::Ast::add_expr` [INFO] [stdout] --> src/ast/mod.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn add_expr(&mut self, kind: ASTExpressionKind) -> Option<&ASTExpression> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ast::Ast::add_expr` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ast::ASTExpressionKind` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/ast/mod.rs:558:1 [INFO] [stdout] | [INFO] [stdout] 558 | enum ASTExpressionKind { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:59:39 [INFO] [stdout] | [INFO] [stdout] 59 | fn visit_let_statement(&mut self, ast: &mut Ast, statement: &super::ASTLetStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:75:39 [INFO] [stdout] | [INFO] [stdout] 75 | fn visit_var_statement(&mut self, ast: &mut Ast, statement: &super::ASTVarStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:91:44 [INFO] [stdout] | [INFO] [stdout] 91 | fn visit_compound_statement(&mut self, ast: &mut Ast, statement: &super::ASTCompoundStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:102:38 [INFO] [stdout] | [INFO] [stdout] 102 | fn visit_if_statement(&mut self, ast: &mut Ast, statement: &super::ASTIfStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:109:44 [INFO] [stdout] | [INFO] [stdout] 109 | fn visit_for_loop_statement(&mut self, ast: &mut Ast, statement: &super::ASTForStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:116:46 [INFO] [stdout] | [INFO] [stdout] 116 | fn visit_while_loop_statement(&mut self, ast: &mut Ast, statement: &super::ASTWhileStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_statement` is never used [INFO] [stdout] --> src/ast/mod.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl Ast { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_statement(&mut self, statement: ASTStatement) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:123:44 [INFO] [stdout] | [INFO] [stdout] 123 | fn visit_function_statement(&mut self, ast: &mut Ast, function: &super::ASTFunctionStatement) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `visit_binary_operator` is never used [INFO] [stdout] --> src/ast/mod.rs:348:8 [INFO] [stdout] | [INFO] [stdout] 250 | pub trait ASTVisitor { [INFO] [stdout] | ---------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 348 | fn visit_binary_operator(&mut self, op: &ASTBinaryOperator) -> T; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `end_brace` is never read [INFO] [stdout] --> src/ast/mod.rs:392:5 [INFO] [stdout] | [INFO] [stdout] 389 | pub struct ASTCompoundStatement { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 392 | end_brace: Token, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTCompoundStatement` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `else_keyword` is never read [INFO] [stdout] --> src/ast/mod.rs:411:5 [INFO] [stdout] | [INFO] [stdout] 410 | pub struct ASTElseStatement { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 411 | else_keyword: Token, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTElseStatement` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:166:9 [INFO] [stdout] | [INFO] [stdout] 166 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/ast/mod.rs:448:8 [INFO] [stdout] | [INFO] [stdout] 443 | impl ASTStatement { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 448 | fn expression(expr_id: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | fn return_statement(keyword: Token, expr: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 461 | fn let_statement(identifier: Token, data_type: Token, initializer: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 472 | fn var_statement(identifier: Token, data_type: Token, initializer: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | fn compound(statements: Vec, start_brace: Token, end_brace: Token) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | fn conditional( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 511 | fn while_loop(keyword: Token, condition: ExprId, body: ASTStatement) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | fn for_loop( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | fn function( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `StringLiteral` is never constructed [INFO] [stdout] --> src/ast/mod.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 558 | enum ASTExpressionKind { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 562 | StringLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTExpressionKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `AmpersandEqual` and `AstriskSlash` are never constructed [INFO] [stdout] --> src/ast/lexer.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum TokenKind { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | AmpersandEqual, // AND self and assign [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | AstriskSlash, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TokenKind` 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: associated function `from_input` is never used [INFO] [stdout] --> src/ast/parser.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl<'a> Parser<'a> { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn from_input( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `EXPR_COLOR` and `EXPR_ICON` are never used [INFO] [stdout] --> src/ast/printer.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 12 | impl ASTTreePrinter { [INFO] [stdout] | ------------------- associated constants in this implementation [INFO] [stdout] ... [INFO] [stdout] 18 | const EXPR_COLOR: color::Green = color::Green; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | const EXPR_ICON: &str = nerd_font_symbols::md::MD_FUNCTION_VARIANT; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `OPERATOR_COLOR` and `print_indent` are never used [INFO] [stdout] --> src/ast/printer.rs:383:11 [INFO] [stdout] | [INFO] [stdout] 378 | impl ASTHiglightPrinter { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 383 | const OPERATOR_COLOR: color::Green = color::Green; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 441 | fn print_indent(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `init`, `solve`, and `print_result` are never used [INFO] [stdout] --> src/ast/solver.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl ASTSolver { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn init(&mut self, ast: &mut Ast) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn solve(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn print_result(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/ast/symbol_table.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct FunctionContext { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 35 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `lookup` is never used [INFO] [stdout] --> src/ast/symbol_table_builder.rs:41:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl<'a> SymbolTableBuilder<'a> { [INFO] [stdout] | ------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | fn lookup(&self, name: &str) -> Option<&Symbol> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Struct` is never constructed [INFO] [stdout] --> src/ast/typing.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum TypeKind { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 8 | Builtin(BuiltinType), [INFO] [stdout] 9 | Struct, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ast`, `symbol_table`, `type_table`, `diagnostics`, and `source_text` are never read [INFO] [stdout] --> src/compilation_unit.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct CompilationUnit { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 16 | pub ast: ast::Ast, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | symbol_table: symbol_table::SymbolTable, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 18 | type_table: typing::TypeTable, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 19 | diagnostics: DiagnosticsCollectionCell, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 20 | source_text: SourceText, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Warning` is never constructed [INFO] [stdout] --> src/diagnostics/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum DiagnosticKind { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 7 | Error, [INFO] [stdout] 8 | Warning, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `UndefinedIdentifier`, `NotACallable`, and `TypeMismatch` are never constructed [INFO] [stdout] --> src/diagnostics/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum DiagnosticMessage { [INFO] [stdout] | ----------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | UndefinedIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | NotACallable { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | TypeMismatch { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clear`, `report_custom_warning`, `report_undefined_identifier`, `report_not_a_callable`, and `report_type_mismatch` are never used [INFO] [stdout] --> src/diagnostics/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 75 | impl DiagnosticsCollection { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn report_custom_warning(&mut self, message: String, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn report_undefined_identifier(&mut self, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn report_not_a_callable(&mut self, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn report_type_mismatch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_file` is never used [INFO] [stdout] --> src/source_text/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl SourceText { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn from_file(filename: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ast` [INFO] [stdout] --> src/ast/type_checker.rs:438:9 [INFO] [stdout] | [INFO] [stdout] 438 | ast: &mut Ast, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_ast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/ast/lexer.rs:153:53 [INFO] [stdout] | [INFO] [stdout] 153 | TokenKind::LeftBrace => write!(f, "{}", '{'), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 153 - TokenKind::LeftBrace => write!(f, "{}", '{'), [INFO] [stdout] 153 + TokenKind::LeftBrace => write!(f, "{{"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/ast/lexer.rs:154:54 [INFO] [stdout] | [INFO] [stdout] 154 | TokenKind::RightBrace => write!(f, "{}", '}'), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 - TokenKind::RightBrace => write!(f, "{}", '}'), [INFO] [stdout] 154 + TokenKind::RightBrace => write!(f, "}}"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:280:9 [INFO] [stdout] | [INFO] [stdout] 280 | c.is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/lexer.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | / return TokenKind::Floating( [INFO] [stdout] 404 | | integer_part as f64 + (fractional_part as f64 / divisior_for_fraction as f64), [INFO] [stdout] 405 | | ); [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] 403 ~ TokenKind::Floating( [INFO] [stdout] 404 + integer_part as f64 + (fractional_part as f64 / divisior_for_fraction as f64), [INFO] [stdout] 405 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/lexer.rs:407:13 [INFO] [stdout] | [INFO] [stdout] 407 | return TokenKind::Integer(integer_part); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 407 - return TokenKind::Integer(integer_part); [INFO] [stdout] 407 + TokenKind::Integer(integer_part) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 16 [INFO] [stdout] --> src/ast/lexer.rs:377:51 [INFO] [stdout] | [INFO] [stdout] 377 | } else if !dot_found && hex_format && c.is_digit(16) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_hexdigit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:380:23 [INFO] [stdout] | [INFO] [stdout] 380 | } else if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:391:20 [INFO] [stdout] | [INFO] [stdout] 391 | && self.peek(1).unwrap().is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.peek(1).unwrap().is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/compilation_unit.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut solver = ASTSolver::new(); [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: `solver` [INFO] [stdout] --> src/compilation_unit.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut solver = ASTSolver::new(); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_solver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prefix` [INFO] [stdout] --> src/diagnostics/printer.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let prefix = line[..col].to_string(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prefix` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error_symbol` [INFO] [stdout] --> src/diagnostics/printer.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | let error_symbol = line[col..symbol_end_col].to_string(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_symbol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `suffix` [INFO] [stdout] --> src/diagnostics/printer.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let suffix = line[symbol_end_col..].to_string(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_suffix` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ast/lexer.rs:570:16 [INFO] [stdout] | [INFO] [stdout] 570 | if ex.span.literal.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!ex.span.literal.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: unused variable: `input` [INFO] [stdout] --> src/main.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | let input = "\ [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_input` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ast::ASTStatementKind` is more private than the item `ast::Ast::add_stmnt` [INFO] [stdout] --> src/ast/mod.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn add_stmnt(&mut self, kind: ASTStatementKind) -> Option<&ASTStatement> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ast::Ast::add_stmnt` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ast::ASTStatementKind` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/ast/mod.rs:357:1 [INFO] [stdout] | [INFO] [stdout] 357 | enum ASTStatementKind { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ast::ASTExpressionKind` is more private than the item `ast::Ast::add_expr` [INFO] [stdout] --> src/ast/mod.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn add_expr(&mut self, kind: ASTExpressionKind) -> Option<&ASTExpression> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ast::Ast::add_expr` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ast::ASTExpressionKind` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/ast/mod.rs:558:1 [INFO] [stdout] | [INFO] [stdout] 558 | enum ASTExpressionKind { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_statement` is never used [INFO] [stdout] --> src/ast/mod.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl Ast { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn add_statement(&mut self, statement: ASTStatement) { [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 `visit_binary_operator` is never used [INFO] [stdout] --> src/ast/mod.rs:348:8 [INFO] [stdout] | [INFO] [stdout] 250 | pub trait ASTVisitor { [INFO] [stdout] | ---------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 348 | fn visit_binary_operator(&mut self, op: &ASTBinaryOperator) -> T; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/ast/parser.rs:51:21 [INFO] [stdout] | [INFO] [stdout] 51 | tokens: tokens [INFO] [stdout] | _____________________^ [INFO] [stdout] 52 | | .iter() [INFO] [stdout] 53 | | .filter(|token| match token.kind { [INFO] [stdout] 54 | | TokenKind::Whitespace => false, [INFO] [stdout] ... | [INFO] [stdout] 58 | | }) [INFO] [stdout] 59 | | .map(|token| token.clone()) [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 51 ~ tokens: tokens [INFO] [stdout] 52 + .iter() [INFO] [stdout] 53 + .filter(|token| match token.kind { [INFO] [stdout] 54 + TokenKind::Whitespace => false, [INFO] [stdout] 55 + TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 + TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 + _ => true, [INFO] [stdout] 58 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `end_brace` is never read [INFO] [stdout] --> src/ast/mod.rs:392:5 [INFO] [stdout] | [INFO] [stdout] 389 | pub struct ASTCompoundStatement { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 392 | end_brace: Token, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTCompoundStatement` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `else_keyword` is never read [INFO] [stdout] --> src/ast/mod.rs:411:5 [INFO] [stdout] | [INFO] [stdout] 410 | pub struct ASTElseStatement { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 411 | else_keyword: Token, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTElseStatement` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/ast/parser.rs:53:33 [INFO] [stdout] | [INFO] [stdout] 53 | .filter(|token| match token.kind { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 54 | | TokenKind::Whitespace => false, [INFO] [stdout] 55 | | TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 | | TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 | | _ => true, [INFO] [stdout] 58 | | }) [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] 53 - .filter(|token| match token.kind { [INFO] [stdout] 54 - TokenKind::Whitespace => false, [INFO] [stdout] 55 - TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 - TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 - _ => true, [INFO] [stdout] 58 - }) [INFO] [stdout] 53 + .filter(|token| !matches!(token.kind, TokenKind::Whitespace | TokenKind::SingleLineComment(_) | TokenKind::MultiLineComment(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/ast/mod.rs:448:8 [INFO] [stdout] | [INFO] [stdout] 443 | impl ASTStatement { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 448 | fn expression(expr_id: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | fn return_statement(keyword: Token, expr: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 461 | fn let_statement(identifier: Token, data_type: Token, initializer: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 472 | fn var_statement(identifier: Token, data_type: Token, initializer: ExprId) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | fn compound(statements: Vec, start_brace: Token, end_brace: Token) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | fn conditional( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 511 | fn while_loop(keyword: Token, condition: ExprId, body: ASTStatement) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | fn for_loop( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | fn function( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `StringLiteral` is never constructed [INFO] [stdout] --> src/ast/mod.rs:562:5 [INFO] [stdout] | [INFO] [stdout] 558 | enum ASTExpressionKind { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 562 | StringLiteral(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ASTExpressionKind` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `AmpersandEqual` and `AstriskSlash` are never constructed [INFO] [stdout] --> src/ast/lexer.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum TokenKind { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | AmpersandEqual, // AND self and assign [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | AstriskSlash, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TokenKind` 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: associated function `from_input` is never used [INFO] [stdout] --> src/ast/parser.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl<'a> Parser<'a> { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn from_input( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `EXPR_COLOR` and `EXPR_ICON` are never used [INFO] [stdout] --> src/ast/printer.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 12 | impl ASTTreePrinter { [INFO] [stdout] | ------------------- associated constants in this implementation [INFO] [stdout] ... [INFO] [stdout] 18 | const EXPR_COLOR: color::Green = color::Green; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | const EXPR_ICON: &str = nerd_font_symbols::md::MD_FUNCTION_VARIANT; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `OPERATOR_COLOR` and `print_indent` are never used [INFO] [stdout] --> src/ast/printer.rs:383:11 [INFO] [stdout] | [INFO] [stdout] 378 | impl ASTHiglightPrinter { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 383 | const OPERATOR_COLOR: color::Green = color::Green; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 441 | fn print_indent(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `init`, `solve`, and `print_result` are never used [INFO] [stdout] --> src/ast/solver.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl ASTSolver { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn init(&mut self, ast: &mut Ast) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn solve(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn print_result(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/ast/symbol_table.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct FunctionContext { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 35 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `lookup` is never used [INFO] [stdout] --> src/ast/symbol_table_builder.rs:41:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl<'a> SymbolTableBuilder<'a> { [INFO] [stdout] | ------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | fn lookup(&self, name: &str) -> Option<&Symbol> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Struct` is never constructed [INFO] [stdout] --> src/ast/typing.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum TypeKind { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] 8 | Builtin(BuiltinType), [INFO] [stdout] 9 | Struct, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ast`, `symbol_table`, `type_table`, `diagnostics`, and `source_text` are never read [INFO] [stdout] --> src/compilation_unit.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct CompilationUnit { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 16 | pub ast: ast::Ast, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | symbol_table: symbol_table::SymbolTable, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 18 | type_table: typing::TypeTable, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 19 | diagnostics: DiagnosticsCollectionCell, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 20 | source_text: SourceText, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Warning` is never constructed [INFO] [stdout] --> src/diagnostics/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum DiagnosticKind { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 7 | Error, [INFO] [stdout] 8 | Warning, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `UndefinedIdentifier`, `NotACallable`, and `TypeMismatch` are never constructed [INFO] [stdout] --> src/diagnostics/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum DiagnosticMessage { [INFO] [stdout] | ----------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 34 | UndefinedIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | NotACallable { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | TypeMismatch { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `clear`, `report_custom_warning`, `report_undefined_identifier`, `report_not_a_callable`, and `report_type_mismatch` are never used [INFO] [stdout] --> src/diagnostics/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 75 | impl DiagnosticsCollection { [INFO] [stdout] | -------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn clear(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn report_custom_warning(&mut self, message: String, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn report_undefined_identifier(&mut self, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn report_not_a_callable(&mut self, span: TextSpan) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn report_type_mismatch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_file` is never used [INFO] [stdout] --> src/source_text/mod.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl SourceText { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn from_file(filename: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/ast/lexer.rs:153:53 [INFO] [stdout] | [INFO] [stdout] 153 | TokenKind::LeftBrace => write!(f, "{}", '{'), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 153 - TokenKind::LeftBrace => write!(f, "{}", '{'), [INFO] [stdout] 153 + TokenKind::LeftBrace => write!(f, "{{"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/ast/lexer.rs:154:54 [INFO] [stdout] | [INFO] [stdout] 154 | TokenKind::RightBrace => write!(f, "{}", '}'), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 154 - TokenKind::RightBrace => write!(f, "{}", '}'), [INFO] [stdout] 154 + TokenKind::RightBrace => write!(f, "}}"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:400:9 [INFO] [stdout] | [INFO] [stdout] 400 | / return match token.kind { [INFO] [stdout] 401 | | TokenKind::Integer(i) => self.ast.integer(i), [INFO] [stdout] 402 | | TokenKind::Floating(i) => self.ast.float(i), [INFO] [stdout] 403 | | TokenKind::Identifier => { [INFO] [stdout] ... | [INFO] [stdout] 440 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 400 ~ match token.kind { [INFO] [stdout] 401 + TokenKind::Integer(i) => self.ast.integer(i), [INFO] [stdout] 402 + TokenKind::Floating(i) => self.ast.float(i), [INFO] [stdout] 403 + TokenKind::Identifier => { [INFO] [stdout] 404 + if self.current_token().kind == TokenKind::LeftParen { [INFO] [stdout] 405 + self.parse_function_call_expression() [INFO] [stdout] 406 + } else if self.current_token().kind == TokenKind::Dot { [INFO] [stdout] 407 + None [INFO] [stdout] 408 + // self.consume(); [INFO] [stdout] 409 + // let member: &ASTExpression = self.parse_expression()?; [INFO] [stdout] 410 + // match member.kind { [INFO] [stdout] 411 + // ASTExpressionKind::Variable(_) => { [INFO] [stdout] 412 + // // return self.ast.member_access(token.clone(), member.id.clone()); [INFO] [stdout] 413 + // } [INFO] [stdout] 414 + // ASTExpressionKind::MemberAccess(_) => return None, [INFO] [stdout] 415 + // _ => return None, [INFO] [stdout] 416 + // }; [INFO] [stdout] 417 + } else if token.name() == "false" { [INFO] [stdout] 418 + self.ast.boolean(false) [INFO] [stdout] 419 + } else if token.name() == "true" { [INFO] [stdout] 420 + self.ast.boolean(true) [INFO] [stdout] 421 + } else { [INFO] [stdout] 422 + self.ast.identifier(token.clone()) [INFO] [stdout] 423 + } [INFO] [stdout] 424 + } [INFO] [stdout] 425 + [INFO] [stdout] 426 + TokenKind::LeftParen => { [INFO] [stdout] 427 + let expr = self.parse_binary_expression(0)?.id; [INFO] [stdout] 428 + let _found_token = self.consume_expected(TokenKind::RightParen)?; [INFO] [stdout] 429 + self.ast.parenthesized(expr) [INFO] [stdout] 430 + } [INFO] [stdout] 431 + TokenKind::Tilde | TokenKind::Minus | TokenKind::ExclemationMark => { [INFO] [stdout] 432 + self.parse_unary_expression() [INFO] [stdout] 433 + } [INFO] [stdout] 434 + _ => { [INFO] [stdout] 435 + self.diagnostics_colletion [INFO] [stdout] 436 + .borrow_mut() [INFO] [stdout] 437 + .report_expected_expression(&token); [INFO] [stdout] 438 + self.ast.error(token.span) [INFO] [stdout] 439 + } [INFO] [stdout] 440 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:280:9 [INFO] [stdout] | [INFO] [stdout] 280 | c.is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] = note: `#[warn(clippy::is_digit_ascii_radix)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:487:13 [INFO] [stdout] | [INFO] [stdout] 487 | / return ASTBinaryOperator { [INFO] [stdout] 488 | | kind, [INFO] [stdout] 489 | | token: token.clone(), [INFO] [stdout] 490 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 487 ~ ASTBinaryOperator { [INFO] [stdout] 488 + kind, [INFO] [stdout] 489 + token: token.clone(), [INFO] [stdout] 490 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | / return ASTUnaryOperator { [INFO] [stdout] 504 | | kind, [INFO] [stdout] 505 | | token: token.clone(), [INFO] [stdout] 506 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 503 ~ ASTUnaryOperator { [INFO] [stdout] 504 + kind, [INFO] [stdout] 505 + token: token.clone(), [INFO] [stdout] 506 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/lexer.rs:403:13 [INFO] [stdout] | [INFO] [stdout] 403 | / return TokenKind::Floating( [INFO] [stdout] 404 | | integer_part as f64 + (fractional_part as f64 / divisior_for_fraction as f64), [INFO] [stdout] 405 | | ); [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] 403 ~ TokenKind::Floating( [INFO] [stdout] 404 + integer_part as f64 + (fractional_part as f64 / divisior_for_fraction as f64), [INFO] [stdout] 405 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/lexer.rs:407:13 [INFO] [stdout] | [INFO] [stdout] 407 | return TokenKind::Integer(integer_part); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 407 - return TokenKind::Integer(integer_part); [INFO] [stdout] 407 + TokenKind::Integer(integer_part) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 16 [INFO] [stdout] --> src/ast/lexer.rs:377:51 [INFO] [stdout] | [INFO] [stdout] 377 | } else if !dot_found && hex_format && c.is_digit(16) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_hexdigit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:380:23 [INFO] [stdout] | [INFO] [stdout] 380 | } else if c.is_digit(10) { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `c.is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `char::is_digit` with literal radix of 10 [INFO] [stdout] --> src/ast/lexer.rs:391:20 [INFO] [stdout] | [INFO] [stdout] 391 | && self.peek(1).unwrap().is_digit(10) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.peek(1).unwrap().is_ascii_digit()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#is_digit_ascii_radix [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/printer.rs:73:6 [INFO] [stdout] | [INFO] [stdout] 73 | ) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/ast/parser.rs:51:21 [INFO] [stdout] | [INFO] [stdout] 51 | tokens: tokens [INFO] [stdout] | _____________________^ [INFO] [stdout] 52 | | .iter() [INFO] [stdout] 53 | | .filter(|token| match token.kind { [INFO] [stdout] 54 | | TokenKind::Whitespace => false, [INFO] [stdout] ... | [INFO] [stdout] 58 | | }) [INFO] [stdout] 59 | | .map(|token| token.clone()) [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 51 ~ tokens: tokens [INFO] [stdout] 52 + .iter() [INFO] [stdout] 53 + .filter(|token| match token.kind { [INFO] [stdout] 54 + TokenKind::Whitespace => false, [INFO] [stdout] 55 + TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 + TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 + _ => true, [INFO] [stdout] 58 + }).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/ast/parser.rs:53:33 [INFO] [stdout] | [INFO] [stdout] 53 | .filter(|token| match token.kind { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 54 | | TokenKind::Whitespace => false, [INFO] [stdout] 55 | | TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 | | TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 | | _ => true, [INFO] [stdout] 58 | | }) [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] 53 - .filter(|token| match token.kind { [INFO] [stdout] 54 - TokenKind::Whitespace => false, [INFO] [stdout] 55 - TokenKind::SingleLineComment(_) => false, [INFO] [stdout] 56 - TokenKind::MultiLineComment(_) => false, [INFO] [stdout] 57 - _ => true, [INFO] [stdout] 58 - }) [INFO] [stdout] 53 + .filter(|token| !matches!(token.kind, TokenKind::Whitespace | TokenKind::SingleLineComment(_) | TokenKind::MultiLineComment(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/printer.rs:195:21 [INFO] [stdout] | [INFO] [stdout] 195 | self.print(&format!("Arguments:"), &Self::TEXT_COLOR); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Arguments:".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/printer.rs:211:21 [INFO] [stdout] | [INFO] [stdout] 211 | self.print(&format!("Body:"), &Self::TEXT_COLOR); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Body:".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:400:9 [INFO] [stdout] | [INFO] [stdout] 400 | / return match token.kind { [INFO] [stdout] 401 | | TokenKind::Integer(i) => self.ast.integer(i), [INFO] [stdout] 402 | | TokenKind::Floating(i) => self.ast.float(i), [INFO] [stdout] 403 | | TokenKind::Identifier => { [INFO] [stdout] ... | [INFO] [stdout] 440 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 400 ~ match token.kind { [INFO] [stdout] 401 + TokenKind::Integer(i) => self.ast.integer(i), [INFO] [stdout] 402 + TokenKind::Floating(i) => self.ast.float(i), [INFO] [stdout] 403 + TokenKind::Identifier => { [INFO] [stdout] 404 + if self.current_token().kind == TokenKind::LeftParen { [INFO] [stdout] 405 + self.parse_function_call_expression() [INFO] [stdout] 406 + } else if self.current_token().kind == TokenKind::Dot { [INFO] [stdout] 407 + None [INFO] [stdout] 408 + // self.consume(); [INFO] [stdout] 409 + // let member: &ASTExpression = self.parse_expression()?; [INFO] [stdout] 410 + // match member.kind { [INFO] [stdout] 411 + // ASTExpressionKind::Variable(_) => { [INFO] [stdout] 412 + // // return self.ast.member_access(token.clone(), member.id.clone()); [INFO] [stdout] 413 + // } [INFO] [stdout] 414 + // ASTExpressionKind::MemberAccess(_) => return None, [INFO] [stdout] 415 + // _ => return None, [INFO] [stdout] 416 + // }; [INFO] [stdout] 417 + } else if token.name() == "false" { [INFO] [stdout] 418 + self.ast.boolean(false) [INFO] [stdout] 419 + } else if token.name() == "true" { [INFO] [stdout] 420 + self.ast.boolean(true) [INFO] [stdout] 421 + } else { [INFO] [stdout] 422 + self.ast.identifier(token.clone()) [INFO] [stdout] 423 + } [INFO] [stdout] 424 + } [INFO] [stdout] 425 + [INFO] [stdout] 426 + TokenKind::LeftParen => { [INFO] [stdout] 427 + let expr = self.parse_binary_expression(0)?.id; [INFO] [stdout] 428 + let _found_token = self.consume_expected(TokenKind::RightParen)?; [INFO] [stdout] 429 + self.ast.parenthesized(expr) [INFO] [stdout] 430 + } [INFO] [stdout] 431 + TokenKind::Tilde | TokenKind::Minus | TokenKind::ExclemationMark => { [INFO] [stdout] 432 + self.parse_unary_expression() [INFO] [stdout] 433 + } [INFO] [stdout] 434 + _ => { [INFO] [stdout] 435 + self.diagnostics_colletion [INFO] [stdout] 436 + .borrow_mut() [INFO] [stdout] 437 + .report_expected_expression(&token); [INFO] [stdout] 438 + self.ast.error(token.span) [INFO] [stdout] 439 + } [INFO] [stdout] 440 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:487:13 [INFO] [stdout] | [INFO] [stdout] 487 | / return ASTBinaryOperator { [INFO] [stdout] 488 | | kind, [INFO] [stdout] 489 | | token: token.clone(), [INFO] [stdout] 490 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 487 ~ ASTBinaryOperator { [INFO] [stdout] 488 + kind, [INFO] [stdout] 489 + token: token.clone(), [INFO] [stdout] 490 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/parser.rs:503:13 [INFO] [stdout] | [INFO] [stdout] 503 | / return ASTUnaryOperator { [INFO] [stdout] 504 | | kind, [INFO] [stdout] 505 | | token: token.clone(), [INFO] [stdout] 506 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 503 ~ ASTUnaryOperator { [INFO] [stdout] 504 + kind, [INFO] [stdout] 505 + token: token.clone(), [INFO] [stdout] 506 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/printer.rs:73:6 [INFO] [stdout] | [INFO] [stdout] 73 | ) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/printer.rs:195:21 [INFO] [stdout] | [INFO] [stdout] 195 | self.print(&format!("Arguments:"), &Self::TEXT_COLOR); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Arguments:".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/printer.rs:211:21 [INFO] [stdout] | [INFO] [stdout] 211 | self.print(&format!("Body:"), &Self::TEXT_COLOR); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Body:".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/printer.rs:729:62 [INFO] [stdout] | [INFO] [stdout] 729 | fn visit_error(&mut self, _span: &super::lexer::TextSpan) -> () {} [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/ast/solver.rs:66:55 [INFO] [stdout] | [INFO] [stdout] 66 | fn add_identifier_to_scope(&mut self, identifier: &String, value: f64) { [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] 66 ~ fn add_identifier_to_scope(&mut self, identifier: &str, value: f64) { [INFO] [stdout] 67 | self.scopes [INFO] [stdout] 68 | .last_mut() [INFO] [stdout] 69 | .unwrap() [INFO] [stdout] 70 ~ .insert(identifier.to_owned(), value); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 79 - return false; [INFO] [stdout] 79 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 88 - return None; [INFO] [stdout] 88 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ast/solver.rs:256:16 [INFO] [stdout] | [INFO] [stdout] 256 | if expr.arguments.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `expr.arguments.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/ast/solver.rs:257:17 [INFO] [stdout] | [INFO] [stdout] 257 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/ast/solver.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | if !self.check_identifier_in_scope(&expr.identifier.span.literal) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `!self.check_identifier_in_scope(&expr.identifier.span.literal);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/ast/solver.rs:316:51 [INFO] [stdout] | [INFO] [stdout] 316 | super::ASTUnaryOperatorKind::Minus => self.result.unwrap() * -1.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `-self.result.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | return self.visit_expression(ast, paren_expr.expr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 356 - return self.visit_expression(ast, paren_expr.expr); [INFO] [stdout] 356 + self.visit_expression(ast, paren_expr.expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/ast/solver.rs:368:28 [INFO] [stdout] | [INFO] [stdout] 368 | self.result = Some(integer.clone() as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*integer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/ast/solver.rs:376:28 [INFO] [stdout] | [INFO] [stdout] 376 | self.result = Some(float.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*float` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/symbol_table.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return self.scopes.len() == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 86 - return self.scopes.len() == 0; [INFO] [stdout] 86 + self.scopes.len() == 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ast/symbol_table.rs:86:16 [INFO] [stdout] | [INFO] [stdout] 86 | return self.scopes.len() == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.scopes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | format!("Return statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Return statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/ast/printer.rs:729:62 [INFO] [stdout] | [INFO] [stdout] 729 | fn visit_error(&mut self, _span: &super::lexer::TextSpan) -> () {} [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | format!("standalone Compound statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"standalone Compound statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | format!("If statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"If statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | format!("For loop statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"For loop statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | format!("While statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"While statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/ast/solver.rs:66:55 [INFO] [stdout] | [INFO] [stdout] 66 | fn add_identifier_to_scope(&mut self, identifier: &String, value: f64) { [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] 66 ~ fn add_identifier_to_scope(&mut self, identifier: &str, value: f64) { [INFO] [stdout] 67 | self.scopes [INFO] [stdout] 68 | .last_mut() [INFO] [stdout] 69 | .unwrap() [INFO] [stdout] 70 ~ .insert(identifier.to_owned(), value); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 79 - return false; [INFO] [stdout] 79 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 88 - return None; [INFO] [stdout] 88 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:97:17 [INFO] [stdout] | [INFO] [stdout] 97 | format!("Redefinition of identifier!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of identifier!".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:107:21 [INFO] [stdout] | [INFO] [stdout] 107 | format!("Identifier already used for function name"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Identifier already used for function name".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 114 | format!("Declaration shadows identifier in outer scope"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Declaration shadows identifier in outer scope".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ast/solver.rs:256:16 [INFO] [stdout] | [INFO] [stdout] 256 | if expr.arguments.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `expr.arguments.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: empty string literal in `println!` [INFO] [stdout] --> src/ast/solver.rs:257:17 [INFO] [stdout] | [INFO] [stdout] 257 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/ast/solver.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | if !self.check_identifier_in_scope(&expr.identifier.span.literal) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `!self.check_identifier_in_scope(&expr.identifier.span.literal);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ast/type_checker.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | if !redefinition.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `redefinition.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: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> src/ast/solver.rs:316:51 [INFO] [stdout] | [INFO] [stdout] 316 | super::ASTUnaryOperatorKind::Minus => self.result.unwrap() * -1.0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `-self.result.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/solver.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | return self.visit_expression(ast, paren_expr.expr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 356 - return self.visit_expression(ast, paren_expr.expr); [INFO] [stdout] 356 + self.visit_expression(ast, paren_expr.expr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i64` which implements the `Copy` trait [INFO] [stdout] --> src/ast/solver.rs:368:28 [INFO] [stdout] | [INFO] [stdout] 368 | self.result = Some(integer.clone() as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*integer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/ast/solver.rs:376:28 [INFO] [stdout] | [INFO] [stdout] 376 | self.result = Some(float.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try dereferencing it: `*float` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | format!("Condition must be of type Bool"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Condition must be of type Bool".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:260:25 [INFO] [stdout] | [INFO] [stdout] 260 | format!("Branches of If statement have different return types"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Branches of If statement have different return types".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:281:17 [INFO] [stdout] | [INFO] [stdout] 281 | format!("Range start and end condition have to have same type"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Range start and end condition have to have same type".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/symbol_table.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return self.scopes.len() == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 86 - return self.scopes.len() == 0; [INFO] [stdout] 86 + self.scopes.len() == 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:306:17 [INFO] [stdout] | [INFO] [stdout] 306 | format!("Condition must be of type Bool"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Condition must be of type Bool".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ast/symbol_table.rs:86:16 [INFO] [stdout] | [INFO] [stdout] 86 | return self.scopes.len() == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.scopes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:355:21 [INFO] [stdout] | [INFO] [stdout] 355 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 355 ~ None [INFO] [stdout] 356 | } [INFO] [stdout] ... [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | format!("Return statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Return statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:373:21 [INFO] [stdout] | [INFO] [stdout] 373 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 373 ~ None [INFO] [stdout] 374 | } [INFO] [stdout] ... [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:380:21 [INFO] [stdout] | [INFO] [stdout] 380 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 380 ~ None [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 387 - return None; [INFO] [stdout] 387 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | format!("standalone Compound statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"standalone Compound statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | format!("If statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"If statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | format!("Cannot reassign constant"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot reassign constant".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/ast/type_checker.rs:402:31 [INFO] [stdout] | [INFO] [stdout] 402 | } else if self.lookup(&expr.identifier().to_string()).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `expr.identifier()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/ast/type_checker.rs:410:40 [INFO] [stdout] | [INFO] [stdout] 410 | func_return_type = func.return_type.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `func.return_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | format!("For loop statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"For loop statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | format!("While statement not allowed outside of functions"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"While statement not allowed outside of functions".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/symbol_table_builder.rs:144:17 [INFO] [stdout] | [INFO] [stdout] 144 | format!("Redefinition of global identifier"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of global identifier".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/ast/type_checker.rs:442:27 [INFO] [stdout] | [INFO] [stdout] 442 | match self.lookup(&expr.identifier().to_string()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `expr.identifier()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/ast/type_checker.rs:451:33 [INFO] [stdout] | [INFO] [stdout] 451 | return Some(v.data_type.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `v.data_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:512:9 [INFO] [stdout] | [INFO] [stdout] 512 | return Some(expr_data_type); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 512 - return Some(expr_data_type); [INFO] [stdout] 512 + Some(expr_data_type) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:540:48 [INFO] [stdout] | [INFO] [stdout] 540 | ... | ASTBinaryOperatorKind::Divide => return Some(left_type), // TODO(letohg): [2025-07-19] evaluate the common type of left and... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 540 ~ | ASTBinaryOperatorKind::Divide => Some(left_type), // TODO(letohg): [2025-07-19] evaluate the common type of left and right and return it [INFO] [stdout] 541 | ASTBinaryOperatorKind::EqualTo [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:551:17 [INFO] [stdout] | [INFO] [stdout] 551 | return type_id; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 551 ~ type_id [INFO] [stdout] 552 | } [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:569:17 [INFO] [stdout] | [INFO] [stdout] 569 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 569 ~ None [INFO] [stdout] 570 | } [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:97:17 [INFO] [stdout] | [INFO] [stdout] 97 | format!("Redefinition of identifier!"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Redefinition of identifier!".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:587:17 [INFO] [stdout] | [INFO] [stdout] 587 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 587 ~ None [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:107:21 [INFO] [stdout] | [INFO] [stdout] 107 | format!("Identifier already used for function name"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Identifier already used for function name".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 114 | format!("Declaration shadows identifier in outer scope"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Declaration shadows identifier in outer scope".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ast/type_checker.rs:157:12 [INFO] [stdout] | [INFO] [stdout] 157 | if !redefinition.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `redefinition.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: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | format!("Condition must be of type Bool"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Condition must be of type Bool".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:600:9 [INFO] [stdout] | [INFO] [stdout] 600 | return type_id; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 600 - return type_id; [INFO] [stdout] 600 + type_id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:260:25 [INFO] [stdout] | [INFO] [stdout] 260 | format!("Branches of If statement have different return types"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Branches of If statement have different return types".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:281:17 [INFO] [stdout] | [INFO] [stdout] 281 | format!("Range start and end condition have to have same type"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Range start and end condition have to have same type".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:306:17 [INFO] [stdout] | [INFO] [stdout] 306 | format!("Condition must be of type Bool"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Condition must be of type Bool".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:355:21 [INFO] [stdout] | [INFO] [stdout] 355 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 355 ~ None [INFO] [stdout] 356 | } [INFO] [stdout] ... [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:373:21 [INFO] [stdout] | [INFO] [stdout] 373 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 373 ~ None [INFO] [stdout] 374 | } [INFO] [stdout] ... [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:380:21 [INFO] [stdout] | [INFO] [stdout] 380 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 380 ~ None [INFO] [stdout] 381 | } [INFO] [stdout] 382 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 387 - return None; [INFO] [stdout] 387 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/ast/type_checker.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | format!("Cannot reassign constant"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Cannot reassign constant".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/ast/type_checker.rs:402:31 [INFO] [stdout] | [INFO] [stdout] 402 | } else if self.lookup(&expr.identifier().to_string()).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `expr.identifier()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/ast/type_checker.rs:410:40 [INFO] [stdout] | [INFO] [stdout] 410 | func_return_type = func.return_type.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `func.return_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/ast/type_checker.rs:442:27 [INFO] [stdout] | [INFO] [stdout] 442 | match self.lookup(&expr.identifier().to_string()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `expr.identifier()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/ast/type_checker.rs:451:33 [INFO] [stdout] | [INFO] [stdout] 451 | return Some(v.data_type.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `v.data_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:512:9 [INFO] [stdout] | [INFO] [stdout] 512 | return Some(expr_data_type); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 512 - return Some(expr_data_type); [INFO] [stdout] 512 + Some(expr_data_type) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:540:48 [INFO] [stdout] | [INFO] [stdout] 540 | ... | ASTBinaryOperatorKind::Divide => return Some(left_type), // TODO(letohg): [2025-07-19] evaluate the common type of left and... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 540 ~ | ASTBinaryOperatorKind::Divide => Some(left_type), // TODO(letohg): [2025-07-19] evaluate the common type of left and right and return it [INFO] [stdout] 541 | ASTBinaryOperatorKind::EqualTo [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:551:17 [INFO] [stdout] | [INFO] [stdout] 551 | return type_id; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 551 ~ type_id [INFO] [stdout] 552 | } [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:569:17 [INFO] [stdout] | [INFO] [stdout] 569 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 569 ~ None [INFO] [stdout] 570 | } [INFO] [stdout] ... [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:587:17 [INFO] [stdout] | [INFO] [stdout] 587 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 587 ~ None [INFO] [stdout] 588 | } [INFO] [stdout] 589 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/ast/mod.rs:270:72 [INFO] [stdout] | [INFO] [stdout] 270 | ASTExpressionKind::BooleanLiteral(b) => self.visit_boolean(b.clone(), &expr), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/mod.rs:296:9 [INFO] [stdout] | [INFO] [stdout] 296 | return self.do_visit_statement(ast, statement); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return self.do_visit_statement(ast, statement); [INFO] [stdout] 296 + self.do_visit_statement(ast, statement) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/mod.rs:309:9 [INFO] [stdout] | [INFO] [stdout] 309 | return self.do_visit_expression(ast, expr_id); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 309 - return self.do_visit_expression(ast, expr_id); [INFO] [stdout] 309 + self.do_visit_expression(ast, expr_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/type_checker.rs:600:9 [INFO] [stdout] | [INFO] [stdout] 600 | return type_id; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 600 - return type_id; [INFO] [stdout] 600 + type_id [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/ast/mod.rs:270:72 [INFO] [stdout] | [INFO] [stdout] 270 | ASTExpressionKind::BooleanLiteral(b) => self.visit_boolean(b.clone(), &expr), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/mod.rs:296:9 [INFO] [stdout] | [INFO] [stdout] 296 | return self.do_visit_statement(ast, statement); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return self.do_visit_statement(ast, statement); [INFO] [stdout] 296 + self.do_visit_statement(ast, statement) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ast/mod.rs:309:9 [INFO] [stdout] | [INFO] [stdout] 309 | return self.do_visit_expression(ast, expr_id); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 309 - return self.do_visit_expression(ast, expr_id); [INFO] [stdout] 309 + self.do_visit_expression(ast, expr_id) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if diagnostics_messages.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!diagnostics_messages.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:91:63 [INFO] [stdout] | [INFO] [stdout] 91 | let diagnostics_printer = DiagnosticsPrinter::new(&source_text, &diagnostics_messages); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `source_text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:91:77 [INFO] [stdout] | [INFO] [stdout] 91 | let diagnostics_printer = DiagnosticsPrinter::new(&source_text, &diagnostics_messages); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `diagnostics_messages` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/compilation_unit.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if diagnostics_messages.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!diagnostics_messages.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:91:63 [INFO] [stdout] | [INFO] [stdout] 91 | let diagnostics_printer = DiagnosticsPrinter::new(&source_text, &diagnostics_messages); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `source_text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compilation_unit.rs:91:77 [INFO] [stdout] | [INFO] [stdout] 91 | let diagnostics_printer = DiagnosticsPrinter::new(&source_text, &diagnostics_messages); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `diagnostics_messages` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.37s [INFO] running `Command { std: "docker" "inspect" "b2a7762206f8627ca1fd9aa74c167572e21866529b0d0c783baa0d816ee42031", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b2a7762206f8627ca1fd9aa74c167572e21866529b0d0c783baa0d816ee42031", kill_on_drop: false }` [INFO] [stdout] b2a7762206f8627ca1fd9aa74c167572e21866529b0d0c783baa0d816ee42031