[INFO] cloning repository https://github.com/h3lio5/monkey-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/h3lio5/monkey-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3lio5%2Fmonkey-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3lio5%2Fmonkey-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1d357cf6c09144b767ac0d58a2f854dd5e1d8d19 [INFO] testing h3lio5/monkey-rs against beta-2025-02-18 for beta-1.86-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fh3lio5%2Fmonkey-rs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/h3lio5/monkey-rs on toolchain beta-2025-02-18 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-02-18" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/h3lio5/monkey-rs [INFO] finished tweaking git repo https://github.com/h3lio5/monkey-rs [INFO] tweaked toml for git repo https://github.com/h3lio5/monkey-rs written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/h3lio5/monkey-rs 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" "+beta-2025-02-18" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-02-18" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 32eaaad68afe480069dfb32d43276a98ad4073534f3cd845f7410b3b7d6f8506 [INFO] running `Command { std: "docker" "start" "-a" "32eaaad68afe480069dfb32d43276a98ad4073534f3cd845f7410b3b7d6f8506", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "32eaaad68afe480069dfb32d43276a98ad4073534f3cd845f7410b3b7d6f8506", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "32eaaad68afe480069dfb32d43276a98ad4073534f3cd845f7410b3b7d6f8506", kill_on_drop: false }` [INFO] [stdout] 32eaaad68afe480069dfb32d43276a98ad4073534f3cd845f7410b3b7d6f8506 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-02-18" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1f9ef89e0f7503b85fb231fc2ac3211437c27143b32007fa160f6ca33b86a447 [INFO] running `Command { std: "docker" "start" "-a" "1f9ef89e0f7503b85fb231fc2ac3211437c27143b32007fa160f6ca33b86a447", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.92 [INFO] [stderr] Compiling unicode-ident v1.0.14 [INFO] [stderr] Compiling thiserror v2.0.9 [INFO] [stderr] Compiling quote v1.0.38 [INFO] [stderr] Compiling syn v2.0.92 [INFO] [stderr] Compiling thiserror-impl v2.0.9 [INFO] [stderr] Compiling monkeylang-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ast.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/object/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::object::Object` [INFO] [stdout] --> src/vm/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::object::Object; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::OpenOptions` [INFO] [stdout] --> src/vm/opcode.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fs::OpenOptions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:46:41 [INFO] [stdout] | [INFO] [stdout] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:50:44 [INFO] [stdout] | [INFO] [stdout] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lexer/mod.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | let mut lexer = Lexer { [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: type `evaluator::errors::EvalError` is more private than the item `Evaluator::eval_program` [INFO] [stdout] --> src/evaluator/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Evaluator::eval_program` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `evaluator::errors::EvalError` is only usable at visibility `pub(evaluator)` [INFO] [stdout] --> src/evaluator/errors.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | pub(super) enum EvalError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Program` is never used [INFO] [stdout] --> src/ast.rs:5:10 [INFO] [stdout] | [INFO] [stdout] 5 | pub type Program = Vec; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Let`, `Return`, and `Expression` are never constructed [INFO] [stdout] --> src/ast.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 9 | Let(LetStatement), [INFO] [stdout] | ^^^ [INFO] [stdout] 10 | Return(ReturnStatement), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 11 | Expression(ExpressionStatement), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` 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: multiple variants are never constructed [INFO] [stdout] --> src/ast.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 35 | IntegerLiteral(Token), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 36 | Identifier(Token), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 37 | StringLiteral(Token), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 38 | Array(ArrayLiteral), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 39 | Hash(HashLiteral), [INFO] [stdout] | ^^^^ [INFO] [stdout] 40 | Index(IndexExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 41 | Prefix(PrefixExpression), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 42 | Infix(InfixExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 43 | Boolean(Token), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 44 | If(IfExpression), [INFO] [stdout] | ^^ [INFO] [stdout] 45 | Func(FuncLiteral), [INFO] [stdout] | ^^^^ [INFO] [stdout] 46 | Call(CallExpression), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` 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: variants `Regular`, `Call`, `Index`, and `Noop` are never constructed [INFO] [stdout] --> src/ast.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 110 | pub enum InfixType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 111 | Regular, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 112 | Call, [INFO] [stdout] | ^^^^ [INFO] [stdout] 113 | Index, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 114 | Noop, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InfixType` 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: struct `ByteCode` is never constructed [INFO] [stdout] --> src/compiler/mod.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ByteCode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ByteCode` 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: struct `Compiler` is never constructed [INFO] [stdout] --> src/compiler/mod.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct Compiler { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Compiler` 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: multiple associated items are never used [INFO] [stdout] --> src/compiler/mod.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl Compiler { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn compile_program(&mut self, program: Program) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | fn compile_statement(&mut self, statement: Statement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | fn compile_expr_statement(&mut self, expr: Expression) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn compile_integer_literal(&mut self, token: Token) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | fn compile_boolean_literal(&mut self, token: Token) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | fn compile_infix_expr(&mut self, expr: InfixExpression) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn add_constant(&mut self, obj: Object) -> i16 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn emit(&mut self, opcode: OpCode, operands: Vec) -> i16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn bytecode(&self) -> ByteCode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Env` is never used [INFO] [stdout] --> src/evaluator/mod.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | type Env = Rc>; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Evaluator` is never constructed [INFO] [stdout] --> src/evaluator/mod.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Evaluator { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Evaluator` 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: multiple associated items are never used [INFO] [stdout] --> src/evaluator/mod.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Evaluator { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 26 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | fn eval_statement(&mut self, statement: Statement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn eval_let_statement(&mut self, stmt: LetStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | fn eval_return_statement(&mut self, stmt: ReturnStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn eval_expression(&mut self, expression: Expression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | fn eval_boolean(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn eval_integer(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn eval_string(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | fn eval_identifier(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn eval_prefix_expression(&mut self, expr: PrefixExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | fn eval_bang_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | fn eval_minus_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | fn eval_infix_expression(&mut self, expr: InfixExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | fn eval_integer_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | fn eval_string_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn eval_boolean_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | fn eval_if_expression(&mut self, expr: IfExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | fn eval_block_statement(&mut self, block: BlockStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | fn eval_func_literal(&self, expr: FuncLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn eval_call_expression(&mut self, expr: CallExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | fn eval_arguments(&mut self, arguments: Vec) -> EvalResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | fn execute_function(&mut self, func: FuncObject, args: Vec) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | fn eval_array_expression(&mut self, expr: ArrayLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | fn eval_index_expression(&mut self, expr: IndexExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | fn eval_array_index_expression(&mut self, array: &[Object], index: &i64) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | fn eval_hash_expression(&mut self, expr: HashLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | fn is_truthy(&self, obj: &Object) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EvalError` is never used [INFO] [stdout] --> src/evaluator/errors.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | pub(super) enum EvalError { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `EvalResult` is never used [INFO] [stdout] --> src/evaluator/errors.rs:21:17 [INFO] [stdout] | [INFO] [stdout] 21 | pub(super) type EvalResult = Result; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Lexer` is never constructed [INFO] [stdout] --> src/lexer/mod.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Lexer<'a> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lexer` 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: multiple associated items are never used [INFO] [stdout] --> src/lexer/mod.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl<'a> Lexer<'a> { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 16 | pub fn new(input: &'a str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn next_token(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn skip_whitespace(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn handle_equality(&mut self, token1: Token, token2: Token) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | fn read_number(&mut self, first_digit: char, sign: i64) -> Token { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn handle_minus_or_negative_number(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn read_identifier(&mut self, first_letter: char) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | fn read_string(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/object/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum Object { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] 15 | Int(i64), [INFO] [stdout] | ^^^ [INFO] [stdout] 16 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 17 | Boolean(bool), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 18 | Null, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | Return(Box), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 20 | Func(FuncObject), [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | Array(Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 22 | Hash(HashMap), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Object` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `new_enclosed`, `set`, and `get` are never used [INFO] [stdout] --> src/object/environment.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Environment { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 12 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn new_enclosed(outer: Rc>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn set(&mut self, key: &str, value: Object) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get(&self, key: &str) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `KeyNotFound` is never constructed [INFO] [stdout] --> src/object/errors.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum EnvironmentErrors { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] 7 | #[error("Key Not Found: {key:?}")] [INFO] [stdout] 8 | KeyNotFound { key: String }, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnvironmentErrors` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Precedence` is never used [INFO] [stdout] --> src/parser/mod.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | pub(self) enum Precedence { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser/mod.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Parser<'a> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` 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: multiple associated items are never used [INFO] [stdout] --> src/parser/mod.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl<'a> Parser<'a> { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 32 | /// Creates a new Parser instance [INFO] [stdout] 33 | pub fn new(lexer: Lexer<'a>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn parse_program(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn parse_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | fn parse_let_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn parse_return_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn parse_expression_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn parse_prefix_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn parse_integer_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | fn parse_string_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn parse_boolean_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | fn parse_identifier_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn parse_infix_expression(&mut self, left: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | fn parse_function_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn parse_function_parameters(&mut self) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | fn parse_block_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | fn parse_call_expression(&mut self, function: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | fn parse_array_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | fn parse_list_expression(&mut self, end: Token) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | fn parse_hash_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | fn parse_index_expression(&mut self, left: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | fn parse_grouped_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | fn parse_if_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 344 | fn advance(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 349 | fn expect_next(&mut self, token: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn expect_now(&self, token: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | fn is_current_token(&self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 371 | fn is_peek_token(&self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 376 | fn is_ident_token(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | fn expect_peek(&mut self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn raise_token_mismatch_error(&self, expected: Token, found: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 398 | fn token_precedence(&self, token: &Token) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 414 | fn peek_token_precedence(&self) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 419 | fn current_token_precedence(&self) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn has_infix_parse_function(&self, token: &Token) -> InfixType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 441 | fn collect_identifier(&mut self, identifiers: &mut Vec) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ParseError`, `MismatchedToken`, `NoPrefixParseFunction`, and `ParseExpressionError` are never constructed [INFO] [stdout] --> src/parser/errors.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 7 | #[error("parsing error")] [INFO] [stdout] 8 | ParseError, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 9 | #[error("mismatched tokens (expected {expected:?}, found {found:?})")] [INFO] [stdout] 10 | MismatchedToken { expected: Token, found: Token }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | #[error("No prefix parse function defined for the token: {token:?}")] [INFO] [stdout] 12 | NoPrefixParseFunction { token: Token }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[error("Error parsing the expression: {expression:?}")] [INFO] [stdout] 14 | ParseExpressionError { expression: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/token.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 3 | Illegal, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 4 | Eof, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | Identifier(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 8 | Int(i64), [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | Assign, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 13 | Plus, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | Minus, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | Bang, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | Asterisk, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | Slash, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | LessThan, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 21 | LessThanEqual, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 22 | GreaterThan, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 23 | GreaterThanEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | Equal, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 25 | NotEqual, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | Comma, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 29 | Semicolon, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 30 | Colon, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 31 | LParen, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | RParen, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 33 | LBrace, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 34 | RBrace, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 35 | LBracket, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 36 | RBracket, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Func, [INFO] [stdout] | ^^^^ [INFO] [stdout] 40 | True, [INFO] [stdout] | ^^^^ [INFO] [stdout] 41 | False, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 42 | Let, [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | If, [INFO] [stdout] | ^^ [INFO] [stdout] 44 | Else, [INFO] [stdout] | ^^^^ [INFO] [stdout] 45 | Return, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_keyword_or_identifier` is never used [INFO] [stdout] --> src/token.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl Token { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 49 | pub fn get_keyword_or_identifier(identifier: &str) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `STACK_SIZE` is never used [INFO] [stdout] --> src/vm/mod.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const STACK_SIZE: usize = 2048; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Vm` is never constructed [INFO] [stdout] --> src/vm/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Vm { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Vm` 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: multiple associated items are never used [INFO] [stdout] --> src/vm/mod.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl Vm { [INFO] [stdout] | ------- associated items in this implementation [INFO] [stdout] 23 | fn new(bytecode: ByteCode) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn run(&mut self) -> VmResult<()> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | fn handle_constant_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | fn handle_binary_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn handle_comparision_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | fn execute_integer_comparision_op( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn execute_binary_integer_op( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn handle_pop_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | fn handle_bool_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | fn stack_push(&mut self, obj: Object) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn stack_pop(&mut self) -> VmResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | fn last_popped_stack_element(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `StackOverflowError`, `OpcodeDecodingError`, `StackEmptyError`, `TypeError`, `DivByZeroError`, and `UnsupportedBinaryOperation` are never constructed [INFO] [stdout] --> src/vm/errors.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum VmError { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 9 | #[error("Stackoverflow!")] [INFO] [stdout] 10 | StackOverflowError, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | #[error("error decoding opcode {opcode:?}")] [INFO] [stdout] 12 | OpcodeDecodingError { opcode: OpCode }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[error("Stack is empty!")] [INFO] [stdout] 14 | StackEmptyError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | #[error("Incorrect Type")] [INFO] [stdout] 16 | TypeError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 17 | #[error("Division by 0 error!")] [INFO] [stdout] 18 | DivByZeroError, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 19 | #[error("Unsupported binary operation")] [INFO] [stdout] 20 | UnsupportedBinaryOperation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `VmResult` is never used [INFO] [stdout] --> src/vm/errors.rs:23:17 [INFO] [stdout] | [INFO] [stdout] 23 | pub(super) type VmResult = Result; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `opcode_encode` is never used [INFO] [stdout] --> src/vm/opcode.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn opcode_encode(opcode: OpCode, operands: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.13s [INFO] running `Command { std: "docker" "inspect" "1f9ef89e0f7503b85fb231fc2ac3211437c27143b32007fa160f6ca33b86a447", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1f9ef89e0f7503b85fb231fc2ac3211437c27143b32007fa160f6ca33b86a447", kill_on_drop: false }` [INFO] [stdout] 1f9ef89e0f7503b85fb231fc2ac3211437c27143b32007fa160f6ca33b86a447 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-02-18" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4244934e2850686366e0d26d6367ad0a9dd93899e3d20f13aa866fc203b8804c [INFO] running `Command { std: "docker" "start" "-a" "4244934e2850686366e0d26d6367ad0a9dd93899e3d20f13aa866fc203b8804c", kill_on_drop: false }` [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ast.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/object/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::object::Object` [INFO] [stdout] --> src/vm/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::object::Object; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::OpenOptions` [INFO] [stdout] --> src/vm/opcode.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fs::OpenOptions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:46:41 [INFO] [stdout] | [INFO] [stdout] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:50:44 [INFO] [stdout] | [INFO] [stdout] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lexer/mod.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | let mut lexer = Lexer { [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: type `evaluator::errors::EvalError` is more private than the item `Evaluator::eval_program` [INFO] [stdout] --> src/evaluator/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Evaluator::eval_program` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `evaluator::errors::EvalError` is only usable at visibility `pub(evaluator)` [INFO] [stdout] --> src/evaluator/errors.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | pub(super) enum EvalError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Program` is never used [INFO] [stdout] --> src/ast.rs:5:10 [INFO] [stdout] | [INFO] [stdout] 5 | pub type Program = Vec; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Let`, `Return`, and `Expression` are never constructed [INFO] [stdout] --> src/ast.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 9 | Let(LetStatement), [INFO] [stdout] | ^^^ [INFO] [stdout] 10 | Return(ReturnStatement), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 11 | Expression(ExpressionStatement), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` 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: multiple variants are never constructed [INFO] [stdout] --> src/ast.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 34 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 35 | IntegerLiteral(Token), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 36 | Identifier(Token), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 37 | StringLiteral(Token), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 38 | Array(ArrayLiteral), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 39 | Hash(HashLiteral), [INFO] [stdout] | ^^^^ [INFO] [stdout] 40 | Index(IndexExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 41 | Prefix(PrefixExpression), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 42 | Infix(InfixExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 43 | Boolean(Token), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 44 | If(IfExpression), [INFO] [stdout] | ^^ [INFO] [stdout] 45 | Func(FuncLiteral), [INFO] [stdout] | ^^^^ [INFO] [stdout] 46 | Call(CallExpression), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` 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: variants `Regular`, `Call`, `Index`, and `Noop` are never constructed [INFO] [stdout] --> src/ast.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 110 | pub enum InfixType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 111 | Regular, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 112 | Call, [INFO] [stdout] | ^^^^ [INFO] [stdout] 113 | Index, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 114 | Noop, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InfixType` 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: struct `ByteCode` is never constructed [INFO] [stdout] --> src/compiler/mod.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct ByteCode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ByteCode` 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: struct `Compiler` is never constructed [INFO] [stdout] --> src/compiler/mod.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct Compiler { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Compiler` 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: multiple associated items are never used [INFO] [stdout] --> src/compiler/mod.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl Compiler { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn compile_program(&mut self, program: Program) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | fn compile_statement(&mut self, statement: Statement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | fn compile_expr_statement(&mut self, expr: Expression) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn compile_integer_literal(&mut self, token: Token) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | fn compile_boolean_literal(&mut self, token: Token) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | fn compile_infix_expr(&mut self, expr: InfixExpression) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn add_constant(&mut self, obj: Object) -> i16 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn emit(&mut self, opcode: OpCode, operands: Vec) -> i16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn bytecode(&self) -> ByteCode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Env` is never used [INFO] [stdout] --> src/evaluator/mod.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | type Env = Rc>; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Evaluator` is never constructed [INFO] [stdout] --> src/evaluator/mod.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct Evaluator { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Evaluator` 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: multiple associated items are never used [INFO] [stdout] --> src/evaluator/mod.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Evaluator { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 26 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | fn eval_statement(&mut self, statement: Statement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn eval_let_statement(&mut self, stmt: LetStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | fn eval_return_statement(&mut self, stmt: ReturnStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn eval_expression(&mut self, expression: Expression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | fn eval_boolean(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn eval_integer(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | fn eval_string(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | fn eval_identifier(&self, token: Token) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn eval_prefix_expression(&mut self, expr: PrefixExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | fn eval_bang_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | fn eval_minus_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | fn eval_infix_expression(&mut self, expr: InfixExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | fn eval_integer_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | fn eval_string_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn eval_boolean_infix_expression( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | fn eval_if_expression(&mut self, expr: IfExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | fn eval_block_statement(&mut self, block: BlockStatement) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | fn eval_func_literal(&self, expr: FuncLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | fn eval_call_expression(&mut self, expr: CallExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | fn eval_arguments(&mut self, arguments: Vec) -> EvalResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | fn execute_function(&mut self, func: FuncObject, args: Vec) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | fn eval_array_expression(&mut self, expr: ArrayLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | fn eval_index_expression(&mut self, expr: IndexExpression) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | fn eval_array_index_expression(&mut self, array: &[Object], index: &i64) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 337 | fn eval_hash_expression(&mut self, expr: HashLiteral) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | fn is_truthy(&self, obj: &Object) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EvalError` is never used [INFO] [stdout] --> src/evaluator/errors.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | pub(super) enum EvalError { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `EvalResult` is never used [INFO] [stdout] --> src/evaluator/errors.rs:21:17 [INFO] [stdout] | [INFO] [stdout] 21 | pub(super) type EvalResult = Result; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Lexer` is never constructed [INFO] [stdout] --> src/lexer/mod.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Lexer<'a> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lexer` 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: multiple associated items are never used [INFO] [stdout] --> src/lexer/mod.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl<'a> Lexer<'a> { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 16 | pub fn new(input: &'a str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn next_token(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn skip_whitespace(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn handle_equality(&mut self, token1: Token, token2: Token) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | fn read_number(&mut self, first_digit: char, sign: i64) -> Token { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn handle_minus_or_negative_number(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn read_identifier(&mut self, first_letter: char) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | fn read_string(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/object/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum Object { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] 15 | Int(i64), [INFO] [stdout] | ^^^ [INFO] [stdout] 16 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 17 | Boolean(bool), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 18 | Null, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | Return(Box), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 20 | Func(FuncObject), [INFO] [stdout] | ^^^^ [INFO] [stdout] 21 | Array(Vec), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 22 | Hash(HashMap), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Object` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `new_enclosed`, `set`, and `get` are never used [INFO] [stdout] --> src/object/environment.rs:12:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Environment { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 12 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub fn new_enclosed(outer: Rc>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn set(&mut self, key: &str, value: Object) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn get(&self, key: &str) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `KeyNotFound` is never constructed [INFO] [stdout] --> src/object/errors.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum EnvironmentErrors { [INFO] [stdout] | ----------------- variant in this enum [INFO] [stdout] 7 | #[error("Key Not Found: {key:?}")] [INFO] [stdout] 8 | KeyNotFound { key: String }, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnvironmentErrors` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Precedence` is never used [INFO] [stdout] --> src/parser/mod.rs:13:16 [INFO] [stdout] | [INFO] [stdout] 13 | pub(self) enum Precedence { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser/mod.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Parser<'a> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` 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: multiple associated items are never used [INFO] [stdout] --> src/parser/mod.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl<'a> Parser<'a> { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 32 | /// Creates a new Parser instance [INFO] [stdout] 33 | pub fn new(lexer: Lexer<'a>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn parse_program(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn parse_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | fn parse_let_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn parse_return_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn parse_expression_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn parse_prefix_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn parse_integer_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | fn parse_string_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn parse_boolean_literal_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | fn parse_identifier_expression(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn parse_infix_expression(&mut self, left: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | fn parse_function_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn parse_function_parameters(&mut self) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | fn parse_block_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | fn parse_call_expression(&mut self, function: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | fn parse_array_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | fn parse_list_expression(&mut self, end: Token) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | fn parse_hash_literal_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | fn parse_index_expression(&mut self, left: Expression) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 311 | fn parse_grouped_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | fn parse_if_expression(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 344 | fn advance(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 349 | fn expect_next(&mut self, token: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | fn expect_now(&self, token: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | fn is_current_token(&self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 371 | fn is_peek_token(&self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 376 | fn is_ident_token(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | fn expect_peek(&mut self, token: Token) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 393 | fn raise_token_mismatch_error(&self, expected: Token, found: Token) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 398 | fn token_precedence(&self, token: &Token) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 414 | fn peek_token_precedence(&self) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 419 | fn current_token_precedence(&self) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | fn has_infix_parse_function(&self, token: &Token) -> InfixType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 441 | fn collect_identifier(&mut self, identifiers: &mut Vec) -> Result<(), ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ParseError`, `MismatchedToken`, `NoPrefixParseFunction`, and `ParseExpressionError` are never constructed [INFO] [stdout] --> src/parser/errors.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 7 | #[error("parsing error")] [INFO] [stdout] 8 | ParseError, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 9 | #[error("mismatched tokens (expected {expected:?}, found {found:?})")] [INFO] [stdout] 10 | MismatchedToken { expected: Token, found: Token }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | #[error("No prefix parse function defined for the token: {token:?}")] [INFO] [stdout] 12 | NoPrefixParseFunction { token: Token }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[error("Error parsing the expression: {expression:?}")] [INFO] [stdout] 14 | ParseExpressionError { expression: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/token.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 3 | Illegal, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 4 | Eof, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 7 | Identifier(String), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 8 | Int(i64), [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | Assign, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 13 | Plus, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | Minus, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | Bang, [INFO] [stdout] | ^^^^ [INFO] [stdout] 16 | Asterisk, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | Slash, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | LessThan, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 21 | LessThanEqual, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 22 | GreaterThan, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 23 | GreaterThanEqual, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | Equal, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 25 | NotEqual, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | Comma, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 29 | Semicolon, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 30 | Colon, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 31 | LParen, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | RParen, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 33 | LBrace, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 34 | RBrace, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 35 | LBracket, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 36 | RBracket, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | Func, [INFO] [stdout] | ^^^^ [INFO] [stdout] 40 | True, [INFO] [stdout] | ^^^^ [INFO] [stdout] 41 | False, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 42 | Let, [INFO] [stdout] | ^^^ [INFO] [stdout] 43 | If, [INFO] [stdout] | ^^ [INFO] [stdout] 44 | Else, [INFO] [stdout] | ^^^^ [INFO] [stdout] 45 | Return, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_keyword_or_identifier` is never used [INFO] [stdout] --> src/token.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl Token { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 49 | pub fn get_keyword_or_identifier(identifier: &str) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling monkeylang-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: constant `STACK_SIZE` is never used [INFO] [stdout] --> src/vm/mod.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const STACK_SIZE: usize = 2048; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Vm` is never constructed [INFO] [stdout] --> src/vm/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Vm { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Vm` 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: multiple associated items are never used [INFO] [stdout] --> src/vm/mod.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl Vm { [INFO] [stdout] | ------- associated items in this implementation [INFO] [stdout] 23 | fn new(bytecode: ByteCode) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn run(&mut self) -> VmResult<()> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | fn handle_constant_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | fn handle_binary_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn handle_comparision_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | fn execute_integer_comparision_op( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn execute_binary_integer_op( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn handle_pop_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | fn handle_bool_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | fn stack_push(&mut self, obj: Object) -> VmResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn stack_pop(&mut self) -> VmResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | fn last_popped_stack_element(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `StackOverflowError`, `OpcodeDecodingError`, `StackEmptyError`, `TypeError`, `DivByZeroError`, and `UnsupportedBinaryOperation` are never constructed [INFO] [stdout] --> src/vm/errors.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum VmError { [INFO] [stdout] | ------- variants in this enum [INFO] [stdout] 9 | #[error("Stackoverflow!")] [INFO] [stdout] 10 | StackOverflowError, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 11 | #[error("error decoding opcode {opcode:?}")] [INFO] [stdout] 12 | OpcodeDecodingError { opcode: OpCode }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[error("Stack is empty!")] [INFO] [stdout] 14 | StackEmptyError, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | #[error("Incorrect Type")] [INFO] [stdout] 16 | TypeError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 17 | #[error("Division by 0 error!")] [INFO] [stdout] 18 | DivByZeroError, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 19 | #[error("Unsupported binary operation")] [INFO] [stdout] 20 | UnsupportedBinaryOperation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `VmResult` is never used [INFO] [stdout] --> src/vm/errors.rs:23:17 [INFO] [stdout] | [INFO] [stdout] 23 | pub(super) type VmResult = Result; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `opcode_encode` is never used [INFO] [stdout] --> src/vm/opcode.rs:53:8 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn opcode_encode(opcode: OpCode, operands: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ast.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::ast::*` [INFO] [stdout] --> src/evaluator/tests.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::ast::*; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/evaluator/tests.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/object/errors.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ast::*` and `lexer` [INFO] [stdout] --> src/parser/tests.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::{ast::*, lexer}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::object::Object` [INFO] [stdout] --> src/vm/errors.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::object::Object; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::OpenOptions` [INFO] [stdout] --> src/vm/opcode.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fs::OpenOptions; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ast::*` [INFO] [stdout] --> src/vm/tests.rs:2:13 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{ast::*, compiler::*, lexer::*, parser::*}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:46:41 [INFO] [stdout] | [INFO] [stdout] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `statement` [INFO] [stdout] --> src/compiler/mod.rs:50:44 [INFO] [stdout] | [INFO] [stdout] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lexer/mod.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | let mut lexer = Lexer { [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/tests.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | let mut program = parser.parse_program(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser/tests.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | let mut program = parser.parse_program(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/parser/tests.rs:490:9 [INFO] [stdout] | [INFO] [stdout] 490 | let mut program = parser.parse_program(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `vm` [INFO] [stdout] --> src/vm/tests.rs:60:10 [INFO] [stdout] | [INFO] [stdout] 60 | let (vm, run_result) = test_helper_parse_input("1 / 0"); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `vm` [INFO] [stdout] --> src/vm/tests.rs:84:10 [INFO] [stdout] | [INFO] [stdout] 84 | let (vm, vm_run_result) = test_helper_parse_input("true < false"); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `vm` [INFO] [stdout] --> src/vm/tests.rs:87:10 [INFO] [stdout] | [INFO] [stdout] 87 | let (vm, vm_run_result) = test_helper_parse_input("true < 2"); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `evaluator::errors::EvalError` is more private than the item `Evaluator::eval_program` [INFO] [stdout] --> src/evaluator/mod.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Evaluator::eval_program` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `evaluator::errors::EvalError` is only usable at visibility `pub(evaluator)` [INFO] [stdout] --> src/evaluator/errors.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | pub(super) enum EvalError { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `input` and `line_number` are never read [INFO] [stdout] --> src/lexer/mod.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Lexer<'a> { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 10 | input: &'a str, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 11 | cursor: Peekable>, [INFO] [stdout] 12 | line_number: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lexer` 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: variants `ParseError` and `ParseExpressionError` are never constructed [INFO] [stdout] --> src/parser/errors.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 7 | #[error("parsing error")] [INFO] [stdout] 8 | ParseError, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | ParseExpressionError { expression: String }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/vm/tests.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | compiler.compile_program(program); [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] 9 | let _ = compiler.compile_program(program); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.85s [INFO] running `Command { std: "docker" "inspect" "4244934e2850686366e0d26d6367ad0a9dd93899e3d20f13aa866fc203b8804c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4244934e2850686366e0d26d6367ad0a9dd93899e3d20f13aa866fc203b8804c", kill_on_drop: false }` [INFO] [stdout] 4244934e2850686366e0d26d6367ad0a9dd93899e3d20f13aa866fc203b8804c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-02-18" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 08db8e897136ba36db13bfe661b6bdf18c71c9ad86bbcee82f4538424b092acc [INFO] running `Command { std: "docker" "start" "-a" "08db8e897136ba36db13bfe661b6bdf18c71c9ad86bbcee82f4538424b092acc", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/ast.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::token::Token` [INFO] [stderr] --> src/object/errors.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::token::Token; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::object::Object` [INFO] [stderr] --> src/vm/errors.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::object::Object; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::OpenOptions` [INFO] [stderr] --> src/vm/opcode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fs::OpenOptions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `statement` [INFO] [stderr] --> src/compiler/mod.rs:46:41 [INFO] [stderr] | [INFO] [stderr] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `statement` [INFO] [stderr] --> src/compiler/mod.rs:50:44 [INFO] [stderr] | [INFO] [stderr] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lexer/mod.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | let mut lexer = Lexer { [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: type `evaluator::errors::EvalError` is more private than the item `Evaluator::eval_program` [INFO] [stderr] --> src/evaluator/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Evaluator::eval_program` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `evaluator::errors::EvalError` is only usable at visibility `pub(evaluator)` [INFO] [stderr] --> src/evaluator/errors.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub(super) enum EvalError { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(private_interfaces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: type alias `Program` is never used [INFO] [stderr] --> src/ast.rs:5:10 [INFO] [stderr] | [INFO] [stderr] 5 | pub type Program = Vec; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variants `Let`, `Return`, and `Expression` are never constructed [INFO] [stderr] --> src/ast.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 8 | pub enum Statement { [INFO] [stderr] | --------- variants in this enum [INFO] [stderr] 9 | Let(LetStatement), [INFO] [stderr] | ^^^ [INFO] [stderr] 10 | Return(ReturnStatement), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 11 | Expression(ExpressionStatement), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/ast.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 34 | pub enum Expression { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 35 | IntegerLiteral(Token), [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 36 | Identifier(Token), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 37 | StringLiteral(Token), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 38 | Array(ArrayLiteral), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 39 | Hash(HashLiteral), [INFO] [stderr] | ^^^^ [INFO] [stderr] 40 | Index(IndexExpression), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 41 | Prefix(PrefixExpression), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 42 | Infix(InfixExpression), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 43 | Boolean(Token), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 44 | If(IfExpression), [INFO] [stderr] | ^^ [INFO] [stderr] 45 | Func(FuncLiteral), [INFO] [stderr] | ^^^^ [INFO] [stderr] 46 | Call(CallExpression), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Regular`, `Call`, `Index`, and `Noop` are never constructed [INFO] [stderr] --> src/ast.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 110 | pub enum InfixType { [INFO] [stderr] | --------- variants in this enum [INFO] [stderr] 111 | Regular, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 112 | Call, [INFO] [stderr] | ^^^^ [INFO] [stderr] 113 | Index, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 114 | Noop, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `InfixType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: struct `ByteCode` is never constructed [INFO] [stderr] --> src/compiler/mod.rs:7:12 [INFO] [stderr] | [INFO] [stderr] 7 | pub struct ByteCode { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ByteCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: struct `Compiler` is never constructed [INFO] [stderr] --> src/compiler/mod.rs:13:12 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct Compiler { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Compiler` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/compiler/mod.rs:19:12 [INFO] [stderr] | [INFO] [stderr] 18 | impl Compiler { [INFO] [stderr] | ------------- associated items in this implementation [INFO] [stderr] 19 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | pub fn compile_program(&mut self, program: Program) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 34 | fn compile_statement(&mut self, statement: Statement) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 46 | fn compile_let_statement(&mut self, statement: LetStatement) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 50 | fn compile_return_statement(&mut self, statement: ReturnStatement) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 54 | fn compile_expr_statement(&mut self, expr: Expression) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 65 | fn compile_integer_literal(&mut self, token: Token) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 78 | fn compile_boolean_literal(&mut self, token: Token) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 86 | fn compile_infix_expr(&mut self, expr: InfixExpression) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 119 | fn add_constant(&mut self, obj: Object) -> i16 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 124 | fn emit(&mut self, opcode: OpCode, operands: Vec) -> i16 { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 130 | pub fn bytecode(&self) -> ByteCode { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `Env` is never used [INFO] [stderr] --> src/evaluator/mod.rs:17:6 [INFO] [stderr] | [INFO] [stderr] 17 | type Env = Rc>; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Evaluator` is never constructed [INFO] [stderr] --> src/evaluator/mod.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | pub struct Evaluator { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Evaluator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/evaluator/mod.rs:26:12 [INFO] [stderr] | [INFO] [stderr] 25 | impl Evaluator { [INFO] [stderr] | -------------- associated items in this implementation [INFO] [stderr] 26 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 32 | pub fn eval_program(&mut self, program: Program) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 43 | fn eval_statement(&mut self, statement: Statement) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 51 | fn eval_let_statement(&mut self, stmt: LetStatement) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 62 | fn eval_return_statement(&mut self, stmt: ReturnStatement) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 67 | fn eval_expression(&mut self, expression: Expression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 84 | fn eval_boolean(&self, token: Token) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 94 | fn eval_integer(&self, token: Token) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 103 | fn eval_string(&self, token: Token) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 110 | fn eval_identifier(&self, token: Token) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 123 | fn eval_prefix_expression(&mut self, expr: PrefixExpression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 134 | fn eval_bang_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 142 | fn eval_minus_prefix_expression(&self, right: Object) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 151 | fn eval_infix_expression(&mut self, expr: InfixExpression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 174 | fn eval_integer_infix_expression( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 199 | fn eval_string_infix_expression( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 214 | fn eval_boolean_infix_expression( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 231 | fn eval_if_expression(&mut self, expr: IfExpression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 243 | fn eval_block_statement(&mut self, block: BlockStatement) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 254 | fn eval_func_literal(&self, expr: FuncLiteral) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 262 | fn eval_call_expression(&mut self, expr: CallExpression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 276 | fn eval_arguments(&mut self, arguments: Vec) -> EvalResult> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 283 | fn execute_function(&mut self, func: FuncObject, args: Vec) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 297 | fn eval_array_expression(&mut self, expr: ArrayLiteral) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 307 | fn eval_index_expression(&mut self, expr: IndexExpression) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 330 | fn eval_array_index_expression(&mut self, array: &[Object], index: &i64) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 337 | fn eval_hash_expression(&mut self, expr: HashLiteral) -> EvalResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 348 | fn is_truthy(&self, obj: &Object) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `EvalError` is never used [INFO] [stderr] --> src/evaluator/errors.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | pub(super) enum EvalError { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `EvalResult` is never used [INFO] [stderr] --> src/evaluator/errors.rs:21:17 [INFO] [stderr] | [INFO] [stderr] 21 | pub(super) type EvalResult = Result; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Lexer` is never constructed [INFO] [stderr] --> src/lexer/mod.rs:9:12 [INFO] [stderr] | [INFO] [stderr] 9 | pub struct Lexer<'a> { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Lexer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/lexer/mod.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 15 | impl<'a> Lexer<'a> { [INFO] [stderr] | ------------------ associated items in this implementation [INFO] [stderr] 16 | pub fn new(input: &'a str) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | pub fn next_token(&mut self) -> Token { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 59 | fn skip_whitespace(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 65 | fn handle_equality(&mut self, token1: Token, token2: Token) -> Token { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 74 | fn read_number(&mut self, first_digit: char, sign: i64) -> Token { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 91 | fn handle_minus_or_negative_number(&mut self) -> Token { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 101 | fn read_identifier(&mut self, first_letter: char) -> Token { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 114 | fn read_string(&mut self) -> Token { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/object/mod.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 14 | pub enum Object { [INFO] [stderr] | ------ variants in this enum [INFO] [stderr] 15 | Int(i64), [INFO] [stderr] | ^^^ [INFO] [stderr] 16 | String(String), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 17 | Boolean(bool), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 18 | Null, [INFO] [stderr] | ^^^^ [INFO] [stderr] 19 | Return(Box), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 20 | Func(FuncObject), [INFO] [stderr] | ^^^^ [INFO] [stderr] 21 | Array(Vec), [INFO] [stderr] | ^^^^^ [INFO] [stderr] 22 | Hash(HashMap), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Object` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `new_enclosed`, `set`, and `get` are never used [INFO] [stderr] --> src/object/environment.rs:12:12 [INFO] [stderr] | [INFO] [stderr] 11 | impl Environment { [INFO] [stderr] | ---------------- associated items in this implementation [INFO] [stderr] 12 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 19 | pub fn new_enclosed(outer: Rc>) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 26 | pub fn set(&mut self, key: &str, value: Object) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 30 | pub fn get(&self, key: &str) -> Result { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `KeyNotFound` is never constructed [INFO] [stderr] --> src/object/errors.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub enum EnvironmentErrors { [INFO] [stderr] | ----------------- variant in this enum [INFO] [stderr] 7 | #[error("Key Not Found: {key:?}")] [INFO] [stderr] 8 | KeyNotFound { key: String }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `EnvironmentErrors` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: enum `Precedence` is never used [INFO] [stderr] --> src/parser/mod.rs:13:16 [INFO] [stderr] | [INFO] [stderr] 13 | pub(self) enum Precedence { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Parser` is never constructed [INFO] [stderr] --> src/parser/mod.rs:25:12 [INFO] [stderr] | [INFO] [stderr] 25 | pub struct Parser<'a> { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Parser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/parser/mod.rs:33:12 [INFO] [stderr] | [INFO] [stderr] 31 | impl<'a> Parser<'a> { [INFO] [stderr] | ------------------- associated items in this implementation [INFO] [stderr] 32 | /// Creates a new Parser instance [INFO] [stderr] 33 | pub fn new(lexer: Lexer<'a>) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | pub fn parse_program(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 55 | fn parse_statement(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 63 | fn parse_let_statement(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 77 | fn parse_return_statement(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 85 | fn parse_expression_statement(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 97 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 120 | fn parse_prefix_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 145 | fn parse_integer_literal_expression(&self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 150 | fn parse_string_literal_expression(&self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 155 | fn parse_boolean_literal_expression(&self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 160 | fn parse_identifier_expression(&self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 165 | fn parse_infix_expression(&mut self, left: Expression) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 179 | fn parse_function_literal_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 197 | fn parse_function_parameters(&mut self) -> Result, ParseError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 218 | fn parse_block_statement(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 237 | fn parse_call_expression(&mut self, function: Expression) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 248 | fn parse_array_literal_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 254 | fn parse_list_expression(&mut self, end: Token) -> Result, ParseError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 273 | fn parse_hash_literal_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 299 | fn parse_index_expression(&mut self, left: Expression) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 311 | fn parse_grouped_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 318 | fn parse_if_expression(&mut self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 344 | fn advance(&mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 349 | fn expect_next(&mut self, token: Token) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 357 | fn expect_now(&self, token: Token) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 366 | fn is_current_token(&self, token: Token) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 371 | fn is_peek_token(&self, token: Token) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 376 | fn is_ident_token(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 380 | fn expect_peek(&mut self, token: Token) -> bool { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 393 | fn raise_token_mismatch_error(&self, expected: Token, found: Token) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 398 | fn token_precedence(&self, token: &Token) -> Precedence { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 414 | fn peek_token_precedence(&self) -> Precedence { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 419 | fn current_token_precedence(&self) -> Precedence { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 423 | fn has_infix_parse_function(&self, token: &Token) -> InfixType { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 441 | fn collect_identifier(&mut self, identifiers: &mut Vec) -> Result<(), ParseError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `ParseError`, `MismatchedToken`, `NoPrefixParseFunction`, and `ParseExpressionError` are never constructed [INFO] [stderr] --> src/parser/errors.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub enum ParseError { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 7 | #[error("parsing error")] [INFO] [stderr] 8 | ParseError, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 9 | #[error("mismatched tokens (expected {expected:?}, found {found:?})")] [INFO] [stderr] 10 | MismatchedToken { expected: Token, found: Token }, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 11 | #[error("No prefix parse function defined for the token: {token:?}")] [INFO] [stderr] 12 | NoPrefixParseFunction { token: Token }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 13 | #[error("Error parsing the expression: {expression:?}")] [INFO] [stderr] 14 | ParseExpressionError { expression: String }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/token.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 2 | pub enum Token { [INFO] [stderr] | ----- variants in this enum [INFO] [stderr] 3 | Illegal, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 4 | Eof, [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 7 | Identifier(String), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] 8 | Int(i64), [INFO] [stderr] | ^^^ [INFO] [stderr] 9 | String(String), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 12 | Assign, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 13 | Plus, [INFO] [stderr] | ^^^^ [INFO] [stderr] 14 | Minus, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 15 | Bang, [INFO] [stderr] | ^^^^ [INFO] [stderr] 16 | Asterisk, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 17 | Slash, [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 20 | LessThan, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 21 | LessThanEqual, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 22 | GreaterThan, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 23 | GreaterThanEqual, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] 24 | Equal, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 25 | NotEqual, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 28 | Comma, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 29 | Semicolon, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 30 | Colon, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 31 | LParen, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 32 | RParen, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 33 | LBrace, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 34 | RBrace, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 35 | LBracket, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 36 | RBracket, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 39 | Func, [INFO] [stderr] | ^^^^ [INFO] [stderr] 40 | True, [INFO] [stderr] | ^^^^ [INFO] [stderr] 41 | False, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 42 | Let, [INFO] [stderr] | ^^^ [INFO] [stderr] 43 | If, [INFO] [stderr] | ^^ [INFO] [stderr] 44 | Else, [INFO] [stderr] | ^^^^ [INFO] [stderr] 45 | Return, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated function `get_keyword_or_identifier` is never used [INFO] [stderr] --> src/token.rs:49:12 [INFO] [stderr] | [INFO] [stderr] 48 | impl Token { [INFO] [stderr] | ---------- associated function in this implementation [INFO] [stderr] 49 | pub fn get_keyword_or_identifier(identifier: &str) -> Token { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `STACK_SIZE` is never used [INFO] [stderr] --> src/vm/mod.rs:12:11 [INFO] [stderr] | [INFO] [stderr] 12 | pub const STACK_SIZE: usize = 2048; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Vm` is never constructed [INFO] [stderr] --> src/vm/mod.rs:15:12 [INFO] [stderr] | [INFO] [stderr] 15 | pub struct Vm { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `Vm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/vm/mod.rs:23:8 [INFO] [stderr] | [INFO] [stderr] 22 | impl Vm { [INFO] [stderr] | ------- associated items in this implementation [INFO] [stderr] 23 | fn new(bytecode: ByteCode) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 35 | fn run(&mut self) -> VmResult<()> { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 58 | fn handle_constant_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 76 | fn handle_binary_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 94 | fn handle_comparision_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 116 | fn execute_integer_comparision_op( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 131 | fn execute_binary_integer_op( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 148 | fn handle_pop_opcode(&mut self, ip: &mut usize) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 156 | fn handle_bool_opcode(&mut self, opcode: OpCode, ip: &mut usize) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 169 | fn stack_push(&mut self, obj: Object) -> VmResult<()> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 183 | fn stack_pop(&mut self) -> VmResult { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 196 | fn last_popped_stack_element(&self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `StackOverflowError`, `OpcodeDecodingError`, `StackEmptyError`, `TypeError`, `DivByZeroError`, and `UnsupportedBinaryOperation` are never constructed [INFO] [stderr] --> src/vm/errors.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 8 | pub enum VmError { [INFO] [stderr] | ------- variants in this enum [INFO] [stderr] 9 | #[error("Stackoverflow!")] [INFO] [stderr] 10 | StackOverflowError, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 11 | #[error("error decoding opcode {opcode:?}")] [INFO] [stderr] 12 | OpcodeDecodingError { opcode: OpCode }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 13 | #[error("Stack is empty!")] [INFO] [stderr] 14 | StackEmptyError, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 15 | #[error("Incorrect Type")] [INFO] [stderr] 16 | TypeError, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 17 | #[error("Division by 0 error!")] [INFO] [stderr] 18 | DivByZeroError, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 19 | #[error("Unsupported binary operation")] [INFO] [stderr] 20 | UnsupportedBinaryOperation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `VmError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: type alias `VmResult` is never used [INFO] [stderr] --> src/vm/errors.rs:23:17 [INFO] [stderr] | [INFO] [stderr] 23 | pub(super) type VmResult = Result; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `opcode_encode` is never used [INFO] [stderr] --> src/vm/opcode.rs:53:8 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn opcode_encode(opcode: OpCode, operands: Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::ast::*` [INFO] [stderr] --> src/evaluator/tests.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::ast::*; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::token::Token` [INFO] [stderr] --> src/evaluator/tests.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use crate::token::Token; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `ast::*` and `lexer` [INFO] [stderr] --> src/parser/tests.rs:3:13 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::{ast::*, lexer}; [INFO] [stderr] | ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ast::*` [INFO] [stderr] --> src/vm/tests.rs:2:13 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::{ast::*, compiler::*, lexer::*, parser::*}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parser/tests.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | let mut program = parser.parse_program(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parser/tests.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | let mut program = parser.parse_program(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/parser/tests.rs:490:9 [INFO] [stderr] | [INFO] [stderr] 490 | let mut program = parser.parse_program(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vm` [INFO] [stderr] --> src/vm/tests.rs:60:10 [INFO] [stderr] | [INFO] [stderr] 60 | let (vm, run_result) = test_helper_parse_input("1 / 0"); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vm` [INFO] [stderr] --> src/vm/tests.rs:84:10 [INFO] [stderr] | [INFO] [stderr] 84 | let (vm, vm_run_result) = test_helper_parse_input("true < false"); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `vm` [INFO] [stderr] --> src/vm/tests.rs:87:10 [INFO] [stderr] | [INFO] [stderr] 87 | let (vm, vm_run_result) = test_helper_parse_input("true < 2"); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_vm` [INFO] [stderr] [INFO] [stderr] warning: fields `input` and `line_number` are never read [INFO] [stderr] --> src/lexer/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 9 | pub struct Lexer<'a> { [INFO] [stderr] | ----- fields in this struct [INFO] [stderr] 10 | input: &'a str, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 11 | cursor: Peekable>, [INFO] [stderr] 12 | line_number: usize, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Lexer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variants `ParseError` and `ParseExpressionError` are never constructed [INFO] [stderr] --> src/parser/errors.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub enum ParseError { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 7 | #[error("parsing error")] [INFO] [stderr] 8 | ParseError, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 14 | ParseExpressionError { expression: String }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/vm/tests.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | compiler.compile_program(program); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 9 | let _ = compiler.compile_program(program); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: `monkeylang-rs` (lib) generated 37 warnings (run `cargo fix --lib -p monkeylang-rs` to apply 5 suggestions) [INFO] [stderr] warning: `monkeylang-rs` (lib test) generated 21 warnings (8 duplicates) (run `cargo fix --lib -p monkeylang-rs --tests` to apply 7 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/monkeylang_rs-d49eefd06021c6dc) [INFO] [stdout] [INFO] [stdout] running 37 tests [INFO] [stdout] test evaluator::tests::test_evaluator_array_indexing ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_bang_operator ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_boolean_expr_incorrect ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_boolean_expr ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_function_object ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_function_call ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_if_expr ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_integer_expr_incorrect ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_integer_expr ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_return_statement ... ok [INFO] [stdout] test evaluator::tests::test_evaluator_string_expr ... ok [INFO] [stdout] test lexer::test::test_lexer_if_boolean ... ok [INFO] [stdout] test lexer::test::test_lexer_let_statements ... ok [INFO] [stdout] test lexer::test::test_lexer_operators ... ok [INFO] [stdout] test lexer::test::test_lexer_simple_symbols ... ok [INFO] [stdout] test lexer::test::test_lexer_string_literal ... ok [INFO] [stdout] test parser::tests::test_parser_boolean_literal ... ok [INFO] [stdout] test parser::tests::test_parser_call_expression ... ok [INFO] [stdout] test parser::tests::test_parser_function_literal ... ok [INFO] [stdout] test parser::tests::test_parser_function_literal_incorrect ... ok [INFO] [stdout] test parser::tests::test_parser_identifier_expression ... ok [INFO] [stdout] test parser::tests::test_parser_integer_literal ... ok [INFO] [stdout] test parser::tests::test_parser_if_expression ... ok [INFO] [stdout] test parser::tests::test_parser_let_func_let_statement ... ok [INFO] [stdout] test parser::tests::test_parser_let_func_let_statement_peek_error ... ok [INFO] [stdout] test parser::tests::test_parser_operator_precedence ... ok [INFO] [stdout] test parser::tests::test_parser_let_simple_let_statement_peek_error ... ok [INFO] [stdout] test parser::tests::test_parser_return_statement ... ok [INFO] [stdout] test parser::tests::test_parser_string_literal ... ok [INFO] [stdout] test parser::tests::test_parser_let_statements ... ok [INFO] [stdout] test vm::tests::test_vm_add_op ... ok [INFO] [stdout] test vm::tests::test_vm_boolean_op ... ok [INFO] [stdout] test vm::tests::test_vm_mul_op ... ok [INFO] [stdout] test vm::tests::test_vm_sub_op ... ok [INFO] [stdout] test vm::tests::test_vm_div_op ... ok [INFO] [stdout] test vm::tests::test_vm_constant_op ... ok [INFO] [stdout] test vm::tests::test_vm_comparisions ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/monkeylang_rs-a8a7d53c4f39084d) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests monkeylang_rs [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "08db8e897136ba36db13bfe661b6bdf18c71c9ad86bbcee82f4538424b092acc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "08db8e897136ba36db13bfe661b6bdf18c71c9ad86bbcee82f4538424b092acc", kill_on_drop: false }` [INFO] [stdout] 08db8e897136ba36db13bfe661b6bdf18c71c9ad86bbcee82f4538424b092acc