[INFO] cloning repository https://github.com/4b1dden/forklift
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/4b1dden/forklift" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4b1dden%2Fforklift", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4b1dden%2Fforklift'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9ff59a8d910776aefb5d8eacc91c51d538ffc115
[INFO] checking 4b1dden/forklift against master#36b21637e93b038453924d3c66821089e71d8baa for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F4b1dden%2Fforklift" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/4b1dden/forklift
[INFO] finished tweaking git repo https://github.com/4b1dden/forklift
[INFO] tweaked toml for git repo https://github.com/4b1dden/forklift written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/4b1dden/forklift on toolchain 36b21637e93b038453924d3c66821089e71d8baa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/4b1dden/forklift 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" "+36b21637e93b038453924d3c66821089e71d8baa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ordered-float v3.0.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fb82218c1aeba922896747f2d786d312228e5d955017ab7126f657d3d8bbe541
[INFO] running `Command { std: "docker" "start" "-a" "fb82218c1aeba922896747f2d786d312228e5d955017ab7126f657d3d8bbe541", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fb82218c1aeba922896747f2d786d312228e5d955017ab7126f657d3d8bbe541", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fb82218c1aeba922896747f2d786d312228e5d955017ab7126f657d3d8bbe541", kill_on_drop: false }`
[INFO] [stdout] fb82218c1aeba922896747f2d786d312228e5d955017ab7126f657d3d8bbe541
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 85da7d1b690bb63318834516246441e88b2a8b9b401a170011d2a14437263a9b
[INFO] running `Command { std: "docker" "start" "-a" "85da7d1b690bb63318834516246441e88b2a8b9b401a170011d2a14437263a9b", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]     Checking ordered-float v3.0.0
[INFO] [stderr]     Checking forklift v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufWriter`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::BufWriter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Identifier`, `LiteralExpr`, `either_polymorphic`, and `either`
[INFO] [stdout]  --> src/grammar.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 |     any_of_monomorphic, either, either_polymorphic, end_with_semicolon, parse_binary_expression,
[INFO] [stdout]   |                         ^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 6 |     triplet, zero_or_more, BoxedParser, Expr, FnDef, ForLoop, Identifier, IfBlock, LetBinding,
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 7 |     LiteralExpr, ParseResult, Parser, Reassignment, WhileLoop,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RefMut`
[INFO] [stdout]  --> src/interpreter/declaration.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::{RefCell, RefMut};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ensure_is_identifier`
[INFO] [stdout]  --> src/interpreter/declaration.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::parser::{ensure_is_identifier, Expr, LetBinding, LiteralExpr, Reassignment};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/interpreter/expr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, `Mul`, and `Sub`
[INFO] [stdout]  --> src/interpreter/expr.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::ops::{Add, Deref, Div, Mul, Sub};
[INFO] [stdout]   |                ^^^         ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LetBinding`
[INFO] [stdout]   --> src/interpreter/expr.rs:15:84
[INFO] [stdout]    |
[INFO] [stdout] 15 |     BinaryExpr, BinaryOperator, Expr, FnCall, FnDef, ForLoop, Identifier, IfBlock, LetBinding,
[INFO] [stdout]    |                                                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:332:10
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub enum FL_T {
[INFO] [stdout]     |          ^^^^ help: convert the identifier to upper camel case: `FlT`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Primitive` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:379:10
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub enum FL_T_Primitive {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTPrimitive`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Callable` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 | pub struct FL_T_Callable {
[INFO] [stdout]     |            ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTCallable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Callable_Body` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:405:10
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub enum FL_T_Callable_Body {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTCallableBody`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FL_T` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:407:5
[INFO] [stdout]     |
[INFO] [stdout] 407 |     FL_T(Statement),         // FL_T
[INFO] [stdout]     |     ^^^^ help: convert the identifier to upper camel case: `FlT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Callable_Native` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:411:10
[INFO] [stdout]     |
[INFO] [stdout] 411 | pub enum Callable_Native {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CallableNative`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Bool` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:449:10
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub enum FL_T_Bool {
[INFO] [stdout]     |          ^^^^^^^^^ help: convert the identifier to upper camel case: `FlTBool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InterpreterResult`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:7:52
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::interpreter::{Environment, Interpreter, InterpreterResult};
[INFO] [stdout]   |                                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StringLiteral`
[INFO] [stdout]   --> src/interpreter/expr.test.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Reassignment, StringLiteral, UnaryExpr, UnaryOperator,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ref`
[INFO] [stdout]  --> src/interpreter/main.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::{RefCell, Ref};
[INFO] [stdout]   |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Identifier`
[INFO] [stdout]  --> src/interpreter/main.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parser::{Expr, Identifier};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Declaration` and `FL_T_Callable`
[INFO] [stdout]   --> src/interpreter/main.rs:9:15
[INFO] [stdout]    |
[INFO] [stdout] 9  |     grammar::{Declaration, Program},
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 10 |     interpreter::{FL_T_Callable, InterpreterResult, FL_T},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Callable_Native` and `FL_T_Callable_Body`
[INFO] [stdout]   --> src/interpreter/main.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{Callable_Native, FL_T_Callable_Body};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParseResult`
[INFO] [stdout]  --> src/parser/combinators.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::parser::{map, BoxedParser, ParseResult, Parser};
[INFO] [stdout]   |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/parser/combinators.rs:92:20
[INFO] [stdout]    |
[INFO] [stdout] 92 |             if let (Ok(_)) = result {
[INFO] [stdout]    |                    ^     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -             if let (Ok(_)) = result {
[INFO] [stdout] 92 +             if let Ok(_) = result {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `either`, `left`, `parse_identifier`, `parse_number`, `right`, and `sequence_of_monomorphic`
[INFO] [stdout]  --> src/parser/parser.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 |     any_of_monomorphic, either, left, one_or_more, optional, pair, parse_expr,
[INFO] [stdout]   |                         ^^^^^^  ^^^^
[INFO] [stdout] 5 |     parse_grouping_expr_2, parse_identifier, parse_literal, parse_number, parse_string_literal,
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^
[INFO] [stdout] 6 |     right, sequence_of_monomorphic, triplet, zero_or_more,
[INFO] [stdout]   |     ^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Statement`, `StringLiteral`, `fold_infix_binary_to_single_expr`, `parse_expr`, `parse_function_call`, and `parse_let_binding`
[INFO] [stdout]  --> src/parser/parser.test.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 |     grammar::{decl_let_binding, Declaration, Statement},
[INFO] [stdout]   |                                              ^^^^^^^^^
[INFO] [stdout] 3 |     parser::{
[INFO] [stdout] 4 |         any_of_monomorphic, at_least_one_whitespace, fold_infix_binary_to_single_expr, map,
[INFO] [stdout]   |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |         parse_binary_expression, parse_expr, parse_expr_literal, parse_function_call,
[INFO] [stdout]   |                                  ^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |         parse_let_binding, parse_literal, parse_number, parse_unary_expression, predicate,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |         BinaryExpr, BinaryOperator, Expr, FnCall, Identifier, LetBinding, LiteralExpr, Number,
[INFO] [stdout] 8 |         Parser, StringLiteral, UnaryExpr, UnaryOperator,
[INFO] [stdout]   |                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wrapped_scope`
[INFO] [stdout]  --> src/parser/primitives.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     wrapped_scope, Declaration, Statement,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `and_then`, `either`, `optional_whitespace`, and `parse_function_call`
[INFO] [stdout]  --> src/parser/primitives.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     and_then, at_least_one_whitespace, either, optional_whitespace, parse_binary_expression,
[INFO] [stdout]   |     ^^^^^^^^                           ^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     parse_expr_literal, parse_function_call, parse_unary_expression, sequence_of_monomorphic,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map`
[INFO] [stdout]   --> src/parser/primitives.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 |     any_of_monomorphic, map, optional, pair, parse_function_call_for_expr, triplet, ParseResult,
[INFO] [stdout]    |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `INTERPRETER_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum INTERPRETER_ERROR {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpreterError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INTERPRET_COMPILE_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     INTERPRET_COMPILE_ERROR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpretCompileError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INTERPRET_RUNTIME_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     INTERPRET_RUNTIME_ERROR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpretRuntimeError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LexerError` and `tokenize`
[INFO] [stdout]  --> src/vm/compiler.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::vm::scanner::{tokenize, LexedToken, Lexer, LexerError, TokenKind};
[INFO] [stdout]   |                          ^^^^^^^^                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OP_ADD`, `OP_DIVIDE`, `OP_NEGATE`, and `OP_SUBTRACT`
[INFO] [stdout]  --> src/vm/compiler.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Chunk, OpCode, Value, OP_ADD, OP_CONSTANT, OP_DIVIDE, OP_NEGATE, OP_RETURN, OP_SUBTRACT,
[INFO] [stdout]   |                           ^^^^^^               ^^^^^^^^^  ^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LexerError`
[INFO] [stdout]  --> src/vm/scanner.test.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 |     tokenize_single_token, LexedToken, LexerError, TokenKind,
[INFO] [stdout]   |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::grammar::parse_declaration`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::grammar::parse_declaration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoxedParser` and `Expr`
[INFO] [stdout]   --> src/main.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::parser::{BoxedParser, Expr, Parser};
[INFO] [stdout]    |                     ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufWriter`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::BufWriter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Identifier`, `LiteralExpr`, `either_polymorphic`, and `either`
[INFO] [stdout]  --> src/grammar.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 |     any_of_monomorphic, either, either_polymorphic, end_with_semicolon, parse_binary_expression,
[INFO] [stdout]   |                         ^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 6 |     triplet, zero_or_more, BoxedParser, Expr, FnDef, ForLoop, Identifier, IfBlock, LetBinding,
[INFO] [stdout]   |                                                               ^^^^^^^^^^
[INFO] [stdout] 7 |     LiteralExpr, ParseResult, Parser, Reassignment, WhileLoop,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RefMut`
[INFO] [stdout]  --> src/interpreter/declaration.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::{RefCell, RefMut};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ensure_is_identifier`
[INFO] [stdout]  --> src/interpreter/declaration.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::parser::{ensure_is_identifier, Expr, LetBinding, LiteralExpr, Reassignment};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/interpreter/expr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, `Mul`, and `Sub`
[INFO] [stdout]  --> src/interpreter/expr.rs:6:16
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::ops::{Add, Deref, Div, Mul, Sub};
[INFO] [stdout]   |                ^^^         ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LetBinding`
[INFO] [stdout]   --> src/interpreter/expr.rs:15:84
[INFO] [stdout]    |
[INFO] [stdout] 15 |     BinaryExpr, BinaryOperator, Expr, FnCall, FnDef, ForLoop, Identifier, IfBlock, LetBinding,
[INFO] [stdout]    |                                                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:332:10
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub enum FL_T {
[INFO] [stdout]     |          ^^^^ help: convert the identifier to upper camel case: `FlT`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Primitive` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:379:10
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub enum FL_T_Primitive {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTPrimitive`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Callable` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 | pub struct FL_T_Callable {
[INFO] [stdout]     |            ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTCallable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Callable_Body` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:405:10
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub enum FL_T_Callable_Body {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `FlTCallableBody`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FL_T` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:407:5
[INFO] [stdout]     |
[INFO] [stdout] 407 |     FL_T(Statement),         // FL_T
[INFO] [stdout]     |     ^^^^ help: convert the identifier to upper camel case: `FlT`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Callable_Native` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:411:10
[INFO] [stdout]     |
[INFO] [stdout] 411 | pub enum Callable_Native {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CallableNative`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `FL_T_Bool` should have an upper camel case name
[INFO] [stdout]    --> src/interpreter/expr.rs:449:10
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub enum FL_T_Bool {
[INFO] [stdout]     |          ^^^^^^^^^ help: convert the identifier to upper camel case: `FlTBool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FL_T_Primitive`, `FL_T`, and `desugar_for_loop_to_while_block`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::{desugar_for_loop_to_while_block, FL_T_Primitive, FL_T};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Declaration` and `Statement`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::grammar::{Declaration, Statement};
[INFO] [stdout]   |                      ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InterpreterResult` and `Interpreter`
[INFO] [stdout]  --> src/interpreter/expr.test.rs:7:39
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::interpreter::{Environment, Interpreter, InterpreterResult};
[INFO] [stdout]   |                                       ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryExpr`, `BinaryOperator`, `Expr`, `ForLoop`, `Identifier`, `LetBinding`, `LiteralExpr`, `Number`, `Reassignment`, `StringLiteral`, `UnaryExpr`, and `UnaryOperator`
[INFO] [stdout]   --> src/interpreter/expr.test.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout] 9  |     BinaryExpr, BinaryOperator, Expr, ForLoop, Identifier, LetBinding, LiteralExpr, Number,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 10 |     Reassignment, StringLiteral, UnaryExpr, UnaryOperator,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ref`
[INFO] [stdout]  --> src/interpreter/main.rs:2:26
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cell::{RefCell, Ref};
[INFO] [stdout]   |                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Identifier`
[INFO] [stdout]  --> src/interpreter/main.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::parser::{Expr, Identifier};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Declaration` and `FL_T_Callable`
[INFO] [stdout]   --> src/interpreter/main.rs:9:15
[INFO] [stdout]    |
[INFO] [stdout] 9  |     grammar::{Declaration, Program},
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 10 |     interpreter::{FL_T_Callable, InterpreterResult, FL_T},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Callable_Native` and `FL_T_Callable_Body`
[INFO] [stdout]   --> src/interpreter/main.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{Callable_Native, FL_T_Callable_Body};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `resolver::*`
[INFO] [stdout]  --> src/interpreter/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use resolver::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParseResult`
[INFO] [stdout]  --> src/parser/combinators.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::parser::{map, BoxedParser, ParseResult, Parser};
[INFO] [stdout]   |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/parser/combinators.rs:92:20
[INFO] [stdout]    |
[INFO] [stdout] 92 |             if let (Ok(_)) = result {
[INFO] [stdout]    |                    ^     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -             if let (Ok(_)) = result {
[INFO] [stdout] 92 +             if let Ok(_) = result {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `either`, `left`, `parse_identifier`, `parse_number`, `right`, and `sequence_of_monomorphic`
[INFO] [stdout]  --> src/parser/parser.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 |     any_of_monomorphic, either, left, one_or_more, optional, pair, parse_expr,
[INFO] [stdout]   |                         ^^^^^^  ^^^^
[INFO] [stdout] 5 |     parse_grouping_expr_2, parse_identifier, parse_literal, parse_number, parse_string_literal,
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^
[INFO] [stdout] 6 |     right, sequence_of_monomorphic, triplet, zero_or_more,
[INFO] [stdout]   |     ^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `wrapped_scope`
[INFO] [stdout]  --> src/parser/primitives.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     wrapped_scope, Declaration, Statement,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `and_then`, `either`, `optional_whitespace`, and `parse_function_call`
[INFO] [stdout]  --> src/parser/primitives.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     and_then, at_least_one_whitespace, either, optional_whitespace, parse_binary_expression,
[INFO] [stdout]   |     ^^^^^^^^                           ^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     parse_expr_literal, parse_function_call, parse_unary_expression, sequence_of_monomorphic,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map`
[INFO] [stdout]   --> src/parser/primitives.rs:13:25
[INFO] [stdout]    |
[INFO] [stdout] 13 |     any_of_monomorphic, map, optional, pair, parse_function_call_for_expr, triplet, ParseResult,
[INFO] [stdout]    |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `INTERPRETER_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum INTERPRETER_ERROR {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpreterError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INTERPRET_COMPILE_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     INTERPRET_COMPILE_ERROR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpretCompileError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `INTERPRET_RUNTIME_ERROR` should have an upper camel case name
[INFO] [stdout]   --> src/vm/common.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     INTERPRET_RUNTIME_ERROR,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `InterpretRuntimeError`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LexerError` and `tokenize`
[INFO] [stdout]  --> src/vm/compiler.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::vm::scanner::{tokenize, LexedToken, Lexer, LexerError, TokenKind};
[INFO] [stdout]   |                          ^^^^^^^^                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `OP_ADD`, `OP_DIVIDE`, `OP_NEGATE`, and `OP_SUBTRACT`
[INFO] [stdout]  --> src/vm/compiler.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Chunk, OpCode, Value, OP_ADD, OP_CONSTANT, OP_DIVIDE, OP_NEGATE, OP_RETURN, OP_SUBTRACT,
[INFO] [stdout]   |                           ^^^^^^               ^^^^^^^^^  ^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::grammar::parse_declaration`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::grammar::parse_declaration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoxedParser` and `Expr`
[INFO] [stdout]   --> src/main.rs:23:21
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::parser::{BoxedParser, Expr, Parser};
[INFO] [stdout]    |                     ^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err1`
[INFO] [stdout]   --> src/parser/combinators.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         Err(err1) => match parser2.parse(input) {
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_err1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err1`
[INFO] [stdout]   --> src/parser/combinators.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         Err(err1) => match parser2.parse(input) {
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_err1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `results`
[INFO] [stdout]   --> src/parser/combinators.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut results = Vec::<R>::new();
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rest`
[INFO] [stdout]   --> src/parser/combinators.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut rest = input;
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_rest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/combinators.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut results = Vec::<R>::new();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/combinators.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut rest = input;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `results`
[INFO] [stdout]   --> src/parser/combinators.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut results = Vec::<R>::new();
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rest`
[INFO] [stdout]   --> src/parser/combinators.rs:88:17
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut rest = input;
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_rest`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/combinators.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let mut results = Vec::<R>::new();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/combinators.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut rest = input;
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matched`
[INFO] [stdout]    --> src/parser/primitives.rs:363:20
[INFO] [stdout]     |
[INFO] [stdout] 363 |         let (rest, matched) = p.parse(input)?;
[INFO] [stdout]     |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matched`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matched`
[INFO] [stdout]    --> src/parser/primitives.rs:363:20
[INFO] [stdout]     |
[INFO] [stdout] 363 |         let (rest, matched) = p.parse(input)?;
[INFO] [stdout]     |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matched`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/declaration.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/expr.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reconstructed`
[INFO] [stdout]   --> src/interpreter/declaration.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let reconstructed = Expr::Literal(LiteralExpr::Identifier(binding.identifier.clone()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reconstructed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interpreter/expr.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let mut local_env = Rc::new(RefCell::new(Environment::new(Some(env.clone()))));
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/interpreter/expr.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let res = RefCell::borrow_mut(&env).put(
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/interpreter/expr.rs:270:21
[INFO] [stdout]     |
[INFO] [stdout] 270 |         if let Some(depth) = maybe_depth {
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/interpreter/expr.rs:567:5
[INFO] [stdout]     |
[INFO] [stdout] 567 |     env: Rc<RefCell<Environment>>,
[INFO] [stdout]     |     ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/declaration.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/expr.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::BorrowMut`
[INFO] [stdout]  --> src/interpreter/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::BorrowMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interpreter/main.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Err(e) => {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interpreter/main.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |             Err(e) => {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reconstructed`
[INFO] [stdout]   --> src/interpreter/declaration.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let reconstructed = Expr::Literal(LiteralExpr::Identifier(binding.identifier.clone()));
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reconstructed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interpreter/expr.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let mut local_env = Rc::new(RefCell::new(Environment::new(Some(env.clone()))));
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/interpreter/expr.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let res = RefCell::borrow_mut(&env).put(
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/interpreter/expr.rs:270:21
[INFO] [stdout]     |
[INFO] [stdout] 270 |         if let Some(depth) = maybe_depth {
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/interpreter/expr.rs:567:5
[INFO] [stdout]     |
[INFO] [stdout] 567 |     env: Rc<RefCell<Environment>>,
[INFO] [stdout]     |     ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interpreter/main.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Err(e) => {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/interpreter/main.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |             Err(e) => {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entry_pair`
[INFO] [stdout]    --> src/parser/primitives.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 310 |         |((entry_pair, decl, (mid_pair, last_pair)), body)| ForLoop {
[INFO] [stdout]     |            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_pair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contents`
[INFO] [stdout]    --> src/vm/common.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |     let contents = fs::read_to_string(path).expect("Filepath has to be valid");
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/vm/compiler.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn expression(tokenizer: &mut Lexer) {}
[INFO] [stdout]    |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/vm/compiler.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn number(tokenizer: &mut Lexer) {
[INFO] [stdout]    |           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/vm/scanner.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |             let end = start + bytes_skipped;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `snippet_err_offset`
[INFO] [stdout]    --> src/vm/scanner.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let snippet_err_offset = 20;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_snippet_err_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/vm/scanner.rs:193:28
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn tokenize_string_literal(src: &str) -> LexerResult<(TokenKind, usize)> {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parser`
[INFO] [stdout]   --> src/main.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let parser = grammar::parse_program();
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let mut repl_env = Rc::new(RefCell::new(Environment::new(None)));
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Bool` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:381:5
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub enum FL_T_Primitive {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] 380 |     Str(String),
[INFO] [stdout] 381 |     Bool(bool),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FL_T_Primitive` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Native` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:406:5
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub enum FL_T_Callable_Body {
[INFO] [stdout]     |          ------------------ variant in this enum
[INFO] [stdout] 406 |     Native(Callable_Native), // Rust
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FL_T_Callable_Body` 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: variant `Clock` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:412:5
[INFO] [stdout]     |
[INFO] [stdout] 411 | pub enum Callable_Native {
[INFO] [stdout]     |          --------------- variant in this enum
[INFO] [stdout] 412 |     Clock,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Callable_Native` 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: enum `FL_T_Bool` is never used
[INFO] [stdout]    --> src/interpreter/expr.rs:449:10
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub enum FL_T_Bool {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_env` is never used
[INFO] [stdout]   --> src/interpreter/expr.test.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn empty_env() -> Rc<RefCell<Environment>> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_at` is never used
[INFO] [stdout]   --> src/interpreter/main.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Environment {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_at(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `environment` is never read
[INFO] [stdout]    --> src/interpreter/main.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct Interpreter<W: Write> {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub environment: Rc<RefCell<Environment>>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Interpreter` 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: methods `preload_with` and `inject_into_global_env` are never used
[INFO] [stdout]    --> src/interpreter/main.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl<W: Write> Interpreter<W> {
[INFO] [stdout]     | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn preload_with(&mut self, m: HashMap<String, Rc<FL_T>>) -> InterpreterResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn inject_into_global_env(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `either` is never used
[INFO] [stdout]  --> src/parser/combinators.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn either<'a, P1, P2, A>(parser1: P1, parser2: P2) -> impl Parser<'a, A>
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `either_polymorphic` is never used
[INFO] [stdout]   --> src/parser/combinators.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn either_polymorphic<'a, R1, R2>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `left` is never used
[INFO] [stdout]   --> src/parser/combinators.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn left<'a, P1, P2, R1, R2>(parser1: P1, parser2: P2) -> impl Parser<'a, R1>
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `right` is never used
[INFO] [stdout]   --> src/parser/combinators.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn right<'a, P1, P2, R1, R2>(parser1: P1, parser2: P2) -> impl Parser<'a, R2>
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `predicate` is never used
[INFO] [stdout]   --> src/parser/parser.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Parser<'a, Output> {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn predicate<F>(self, pred_fn: F) -> BoxedParser<'a, Output>
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sequence_of` is never used
[INFO] [stdout]    --> src/parser/parser.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn sequence_of() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_identifier_as_identifier` is never used
[INFO] [stdout]   --> src/parser/primitives.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn parse_identifier_as_identifier<'a>() -> impl Parser<'a, Identifier> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_grouping_expr` is never used
[INFO] [stdout]    --> src/parser/primitives.rs:338:8
[INFO] [stdout]     |
[INFO] [stdout] 338 | pub fn parse_grouping_expr<'a>() -> impl Parser<'a, Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `OpCode` is never used
[INFO] [stdout]  --> src/vm/common.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type OpCode = u8;
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_RETURN` is never used
[INFO] [stdout]   --> src/vm/common.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const OP_RETURN: OpCode = 0x0;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_CONSTANT` is never used
[INFO] [stdout]   --> src/vm/common.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const OP_CONSTANT: OpCode = 0x1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_NEGATE` is never used
[INFO] [stdout]   --> src/vm/common.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const OP_NEGATE: OpCode = 0x2;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_ADD` is never used
[INFO] [stdout]   --> src/vm/common.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const OP_ADD: OpCode = 0x3;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_SUBTRACT` is never used
[INFO] [stdout]   --> src/vm/common.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const OP_SUBTRACT: OpCode = 0x4;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_MULTIPLY` is never used
[INFO] [stdout]   --> src/vm/common.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const OP_MULTIPLY: OpCode = 0x5;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_DIVIDE` is never used
[INFO] [stdout]   --> src/vm/common.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const OP_DIVIDE: OpCode = 0x6;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `primitive_instruction` is never used
[INFO] [stdout]   --> src/vm/common.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn primitive_instruction(name: &str, offset: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constant_instruction` is never used
[INFO] [stdout]   --> src/vm/common.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn constant_instruction(name: &str, chunk: &Chunk, offset: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Value` is never used
[INFO] [stdout]   --> src/vm/common.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type Value = f64;
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_value` is never used
[INFO] [stdout]   --> src/vm/common.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub fn print_value(val: Value) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValueArray` is never constructed
[INFO] [stdout]   --> src/vm/common.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct ValueArray {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAPACITY_LOW_THRESHOLD` is never used
[INFO] [stdout]   --> src/vm/common.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const CAPACITY_LOW_THRESHOLD: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAPACITY_INCREMENT_MULTIPLIER` is never used
[INFO] [stdout]   --> src/vm/common.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const CAPACITY_INCREMENT_MULTIPLIER: usize = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_CAPACITY` is never used
[INFO] [stdout]   --> src/vm/common.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const STACK_CAPACITY: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `INTERPRETER_ERROR` is never used
[INFO] [stdout]   --> src/vm/common.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum INTERPRETER_ERROR {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `VmResult` is never used
[INFO] [stdout]   --> src/vm/common.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub type VmResult<T> = Result<T, INTERPRETER_ERROR>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_TRACE_EXECUTION` is never used
[INFO] [stdout]   --> src/vm/common.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | const DEBUG_TRACE_EXECUTION: bool = true;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VM` is never constructed
[INFO] [stdout]   --> src/vm/common.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct VM {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `interpret`, `with_chunk`, `push`, `pop`, and `run` are never used
[INFO] [stdout]   --> src/vm/common.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl VM {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 70 |     pub fn interpret(chunk: Chunk) -> VmResult<()> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn with_chunk(chunk: Chunk) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn push(&mut self, val: Value) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn pop(&mut self) -> Value {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn run(&mut self) -> VmResult<()> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_byte` is never used
[INFO] [stdout]    --> src/vm/common.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn read_byte(vm: &mut VM) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_const` is never used
[INFO] [stdout]    --> src/vm/common.rs:153:4
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn read_const(vm: &mut VM) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `upgrade_capacity`, and `write` are never used
[INFO] [stdout]    --> src/vm/common.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl ValueArray {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 160 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn upgrade_capacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn write(&mut self, val: Value) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chunk` is never constructed
[INFO] [stdout]    --> src/vm/common.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct Chunk {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_constant`, `write`, `upgrade_capacity`, and `disassemble` are never used
[INFO] [stdout]    --> src/vm/common.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | impl Chunk {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 197 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn add_constant(&mut self, val: Value) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn write(&mut self, byte: OpCode, line: u32) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn upgrade_capacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn disassemble(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_instruction` is never used
[INFO] [stdout]    --> src/vm/common.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn disassemble_instruction(chunk: &Chunk, offset: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret` is never used
[INFO] [stdout]    --> src/vm/common.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn interpret(source: &str) -> VmResult<()> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CompilerResult` is never used
[INFO] [stdout]  --> src/vm/compiler.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub type CompilerResult<T> = Result<T, String>; // Change Err type later
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Compiler` is never constructed
[INFO] [stdout]  --> src/vm/compiler.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Compiler<'a> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn compile(source: &str) -> CompilerResult<Chunk> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `make_error_at_lexeme` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<'a> Compiler<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 39 |     fn make_error_at_lexeme(&self, tok: LexedToken, msg: &str) -> CompilerResult<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expression` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn expression(tokenizer: &mut Lexer) {}
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn number(tokenizer: &mut Lexer) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `emit_return` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:57:4
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn emit_return(chunk: &mut Chunk) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_chunk` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn write_chunk(chunk: &mut Chunk, byte: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_constant` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn make_constant(chunk: &mut Chunk, val: Value) -> CompilerResult<OpCode> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_constant` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn write_constant(chunk: &mut Chunk, val: Value) -> CompilerResult<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_chunk_byte_tuple` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn write_chunk_byte_tuple(chunk: &mut Chunk, byte1: u8, byte2: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `consume` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn consume(tokenizer: &mut Lexer, kind: TokenKind) -> CompilerResult<()> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Comma`, `Dot`, `AND`, `OR`, and `Root` are never constructed
[INFO] [stdout]   --> src/vm/scanner.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum TokenKind {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Comma,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     Dot,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     AND,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 39 |     OR,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     Root,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenKind` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `had_error` and `panic_mode` are never read
[INFO] [stdout]   --> src/vm/scanner.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Lexer<'a> {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub had_error: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 64 |     pub panic_mode: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume` and `panic_mode_on` are never used
[INFO] [stdout]   --> src/vm/scanner.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl<'a> Lexer<'a> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn consume(&mut self, token_kind: TokenKind) -> LexerResult<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn panic_mode_on(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LexerError` is never used
[INFO] [stdout]    --> src/vm/scanner.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum LexerError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize_string_literal` is never used
[INFO] [stdout]    --> src/vm/scanner.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn tokenize_string_literal(src: &str) -> LexerResult<(TokenKind, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `entry_pair`
[INFO] [stdout]    --> src/parser/primitives.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 310 |         |((entry_pair, decl, (mid_pair, last_pair)), body)| ForLoop {
[INFO] [stdout]     |            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entry_pair`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interpreter/main.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 RefCell::borrow_mut(&relevant_ancestor).put(key, val.clone());
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 let _ = RefCell::borrow_mut(&relevant_ancestor).put(key, val.clone());
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/interpreter/main.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         me.load_defaults();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = me.load_defaults();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/interpreter/resolver.rs:191:15
[INFO] [stdout]     |
[INFO] [stdout] 191 |         while i >= 0 {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/parser/parser.rs:259:47
[INFO] [stdout]     |
[INFO] [stdout] 259 |             .map(|op_str| parse_literal(op_str.clone()))
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/parser/parser.rs:269:47
[INFO] [stdout]     |
[INFO] [stdout] 269 |             .map(|op_str| parse_literal(op_str.clone()))
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/parser/parser.rs:274:21
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn next_char(input: &str) -> ParseResult<char> {
[INFO] [stdout]     |                     ^^^^     ----------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn next_char(input: &str) -> ParseResult<'_, char> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `contents`
[INFO] [stdout]    --> src/vm/common.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |     let contents = fs::read_to_string(path).expect("Filepath has to be valid");
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_contents`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/vm/compiler.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn expression(tokenizer: &mut Lexer) {}
[INFO] [stdout]    |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/vm/compiler.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn number(tokenizer: &mut Lexer) {
[INFO] [stdout]    |           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/vm/scanner.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |             let end = start + bytes_skipped;
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `snippet_err_offset`
[INFO] [stdout]    --> src/vm/scanner.rs:121:13
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let snippet_err_offset = 20;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_snippet_err_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/vm/scanner.rs:193:28
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn tokenize_string_literal(src: &str) -> LexerResult<(TokenKind, usize)> {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parser`
[INFO] [stdout]   --> src/main.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let parser = grammar::parse_program();
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parser`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let mut repl_env = Rc::new(RefCell::new(Environment::new(None)));
[INFO] [stdout]    |         ----^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Bool` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:381:5
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub enum FL_T_Primitive {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] 380 |     Str(String),
[INFO] [stdout] 381 |     Bool(bool),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FL_T_Primitive` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Native` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:406:5
[INFO] [stdout]     |
[INFO] [stdout] 405 | pub enum FL_T_Callable_Body {
[INFO] [stdout]     |          ------------------ variant in this enum
[INFO] [stdout] 406 |     Native(Callable_Native), // Rust
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FL_T_Callable_Body` 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: variant `Clock` is never constructed
[INFO] [stdout]    --> src/interpreter/expr.rs:412:5
[INFO] [stdout]     |
[INFO] [stdout] 411 | pub enum Callable_Native {
[INFO] [stdout]     |          --------------- variant in this enum
[INFO] [stdout] 412 |     Clock,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Callable_Native` 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: enum `FL_T_Bool` is never used
[INFO] [stdout]    --> src/interpreter/expr.rs:449:10
[INFO] [stdout]     |
[INFO] [stdout] 449 | pub enum FL_T_Bool {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_at` is never used
[INFO] [stdout]   --> src/interpreter/main.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Environment {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_at(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `environment` is never read
[INFO] [stdout]    --> src/interpreter/main.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct Interpreter<W: Write> {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub environment: Rc<RefCell<Environment>>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Interpreter` 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: methods `preload_with` and `inject_into_global_env` are never used
[INFO] [stdout]    --> src/interpreter/main.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl<W: Write> Interpreter<W> {
[INFO] [stdout]     | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn preload_with(&mut self, m: HashMap<String, Rc<FL_T>>) -> InterpreterResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn inject_into_global_env(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `either_polymorphic` is never used
[INFO] [stdout]   --> src/parser/combinators.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn either_polymorphic<'a, R1, R2>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `predicate` is never used
[INFO] [stdout]   --> src/parser/parser.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait Parser<'a, Output> {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn predicate<F>(self, pred_fn: F) -> BoxedParser<'a, Output>
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sequence_of` is never used
[INFO] [stdout]    --> src/parser/parser.rs:250:4
[INFO] [stdout]     |
[INFO] [stdout] 250 | fn sequence_of() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mock_number_literal_expr` is never used
[INFO] [stdout]   --> src/parser/parser.test.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn mock_number_literal_expr(num: i32) -> Expr {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_identifier_as_identifier` is never used
[INFO] [stdout]   --> src/parser/primitives.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn parse_identifier_as_identifier<'a>() -> impl Parser<'a, Identifier> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `OpCode` is never used
[INFO] [stdout]  --> src/vm/common.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type OpCode = u8;
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_RETURN` is never used
[INFO] [stdout]   --> src/vm/common.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const OP_RETURN: OpCode = 0x0;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_CONSTANT` is never used
[INFO] [stdout]   --> src/vm/common.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const OP_CONSTANT: OpCode = 0x1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_NEGATE` is never used
[INFO] [stdout]   --> src/vm/common.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const OP_NEGATE: OpCode = 0x2;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_ADD` is never used
[INFO] [stdout]   --> src/vm/common.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const OP_ADD: OpCode = 0x3;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_SUBTRACT` is never used
[INFO] [stdout]   --> src/vm/common.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const OP_SUBTRACT: OpCode = 0x4;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_MULTIPLY` is never used
[INFO] [stdout]   --> src/vm/common.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const OP_MULTIPLY: OpCode = 0x5;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OP_DIVIDE` is never used
[INFO] [stdout]   --> src/vm/common.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const OP_DIVIDE: OpCode = 0x6;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `primitive_instruction` is never used
[INFO] [stdout]   --> src/vm/common.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn primitive_instruction(name: &str, offset: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constant_instruction` is never used
[INFO] [stdout]   --> src/vm/common.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn constant_instruction(name: &str, chunk: &Chunk, offset: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Value` is never used
[INFO] [stdout]   --> src/vm/common.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type Value = f64;
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_value` is never used
[INFO] [stdout]   --> src/vm/common.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub fn print_value(val: Value) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValueArray` is never constructed
[INFO] [stdout]   --> src/vm/common.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct ValueArray {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAPACITY_LOW_THRESHOLD` is never used
[INFO] [stdout]   --> src/vm/common.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const CAPACITY_LOW_THRESHOLD: usize = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CAPACITY_INCREMENT_MULTIPLIER` is never used
[INFO] [stdout]   --> src/vm/common.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const CAPACITY_INCREMENT_MULTIPLIER: usize = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_CAPACITY` is never used
[INFO] [stdout]   --> src/vm/common.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | const STACK_CAPACITY: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `INTERPRETER_ERROR` is never used
[INFO] [stdout]   --> src/vm/common.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum INTERPRETER_ERROR {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `VmResult` is never used
[INFO] [stdout]   --> src/vm/common.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub type VmResult<T> = Result<T, INTERPRETER_ERROR>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_TRACE_EXECUTION` is never used
[INFO] [stdout]   --> src/vm/common.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | const DEBUG_TRACE_EXECUTION: bool = true;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VM` is never constructed
[INFO] [stdout]   --> src/vm/common.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct VM {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `interpret`, `with_chunk`, `push`, `pop`, and `run` are never used
[INFO] [stdout]   --> src/vm/common.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl VM {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 70 |     pub fn interpret(chunk: Chunk) -> VmResult<()> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn with_chunk(chunk: Chunk) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn push(&mut self, val: Value) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn pop(&mut self) -> Value {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn run(&mut self) -> VmResult<()> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_byte` is never used
[INFO] [stdout]    --> src/vm/common.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn read_byte(vm: &mut VM) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_const` is never used
[INFO] [stdout]    --> src/vm/common.rs:153:4
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn read_const(vm: &mut VM) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `upgrade_capacity`, and `write` are never used
[INFO] [stdout]    --> src/vm/common.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl ValueArray {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 160 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn upgrade_capacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn write(&mut self, val: Value) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chunk` is never constructed
[INFO] [stdout]    --> src/vm/common.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct Chunk {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_constant`, `write`, `upgrade_capacity`, and `disassemble` are never used
[INFO] [stdout]    --> src/vm/common.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | impl Chunk {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 197 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn add_constant(&mut self, val: Value) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn write(&mut self, byte: OpCode, line: u32) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn upgrade_capacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn disassemble(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disassemble_instruction` is never used
[INFO] [stdout]    --> src/vm/common.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn disassemble_instruction(chunk: &Chunk, offset: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret` is never used
[INFO] [stdout]    --> src/vm/common.rs:282:4
[INFO] [stdout]     |
[INFO] [stdout] 282 | fn interpret(source: &str) -> VmResult<()> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CompilerResult` is never used
[INFO] [stdout]  --> src/vm/compiler.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub type CompilerResult<T> = Result<T, String>; // Change Err type later
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Compiler` is never constructed
[INFO] [stdout]  --> src/vm/compiler.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Compiler<'a> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn compile(source: &str) -> CompilerResult<Chunk> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `make_error_at_lexeme` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<'a> Compiler<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 39 |     fn make_error_at_lexeme(&self, tok: LexedToken, msg: &str) -> CompilerResult<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expression` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn expression(tokenizer: &mut Lexer) {}
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn number(tokenizer: &mut Lexer) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `emit_return` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:57:4
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn emit_return(chunk: &mut Chunk) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_chunk` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn write_chunk(chunk: &mut Chunk, byte: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_constant` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn make_constant(chunk: &mut Chunk, val: Value) -> CompilerResult<OpCode> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_constant` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn write_constant(chunk: &mut Chunk, val: Value) -> CompilerResult<()> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_chunk_byte_tuple` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn write_chunk_byte_tuple(chunk: &mut Chunk, byte1: u8, byte2: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `consume` is never used
[INFO] [stdout]   --> src/vm/compiler.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn consume(tokenizer: &mut Lexer, kind: TokenKind) -> CompilerResult<()> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Comma`, `Dot`, `AND`, `OR`, and `Root` are never constructed
[INFO] [stdout]   --> src/vm/scanner.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum TokenKind {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Comma,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     Dot,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     AND,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 39 |     OR,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     Root,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenKind` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `had_error` and `panic_mode` are never read
[INFO] [stdout]   --> src/vm/scanner.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Lexer<'a> {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub had_error: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 64 |     pub panic_mode: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `consume` and `panic_mode_on` are never used
[INFO] [stdout]   --> src/vm/scanner.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl<'a> Lexer<'a> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn consume(&mut self, token_kind: TokenKind) -> LexerResult<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn panic_mode_on(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LexerError` is never used
[INFO] [stdout]    --> src/vm/scanner.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum LexerError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize_string_literal` is never used
[INFO] [stdout]    --> src/vm/scanner.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn tokenize_string_literal(src: &str) -> LexerResult<(TokenKind, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/interpreter/main.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 RefCell::borrow_mut(&relevant_ancestor).put(key, val.clone());
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 let _ = RefCell::borrow_mut(&relevant_ancestor).put(key, val.clone());
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/interpreter/main.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         me.load_defaults();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let _ = me.load_defaults();
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/interpreter/resolver.rs:191:15
[INFO] [stdout]     |
[INFO] [stdout] 191 |         while i >= 0 {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/parser/parser.rs:259:47
[INFO] [stdout]     |
[INFO] [stdout] 259 |             .map(|op_str| parse_literal(op_str.clone()))
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/parser/parser.rs:269:47
[INFO] [stdout]     |
[INFO] [stdout] 269 |             .map(|op_str| parse_literal(op_str.clone()))
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/parser/parser.rs:274:21
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn next_char(input: &str) -> ParseResult<char> {
[INFO] [stdout]     |                     ^^^^     ----------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     this lifetime flows to the output
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn next_char(input: &str) -> ParseResult<'_, char> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.66s
[INFO] running `Command { std: "docker" "inspect" "85da7d1b690bb63318834516246441e88b2a8b9b401a170011d2a14437263a9b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85da7d1b690bb63318834516246441e88b2a8b9b401a170011d2a14437263a9b", kill_on_drop: false }`
[INFO] [stdout] 85da7d1b690bb63318834516246441e88b2a8b9b401a170011d2a14437263a9b
