[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 1.85.0 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-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/h3lio5/monkey-rs on toolchain 1.85.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.85.0" "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-tc1/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" "+1.85.0" "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-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.85.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 77226fe5072ae64c73364aec01f9d2f3f2d0996e33ad102d30c2c68f68a2770a [INFO] running `Command { std: "docker" "start" "-a" "77226fe5072ae64c73364aec01f9d2f3f2d0996e33ad102d30c2c68f68a2770a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "77226fe5072ae64c73364aec01f9d2f3f2d0996e33ad102d30c2c68f68a2770a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "77226fe5072ae64c73364aec01f9d2f3f2d0996e33ad102d30c2c68f68a2770a", kill_on_drop: false }` [INFO] [stdout] 77226fe5072ae64c73364aec01f9d2f3f2d0996e33ad102d30c2c68f68a2770a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+1.85.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 804ea223e2d4acff4ec9c06db3330530a436bb449fd45a720899a4e73e825bb5 [INFO] running `Command { std: "docker" "start" "-a" "804ea223e2d4acff4ec9c06db3330530a436bb449fd45a720899a4e73e825bb5", 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 5.07s [INFO] running `Command { std: "docker" "inspect" "804ea223e2d4acff4ec9c06db3330530a436bb449fd45a720899a4e73e825bb5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "804ea223e2d4acff4ec9c06db3330530a436bb449fd45a720899a4e73e825bb5", kill_on_drop: false }` [INFO] [stdout] 804ea223e2d4acff4ec9c06db3330530a436bb449fd45a720899a4e73e825bb5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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" "+1.85.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 90776e805cca1482ced7ff1f9a7cc905c3bc49578b1cab5c04f5e1393192ab28 [INFO] running `Command { std: "docker" "start" "-a" "90776e805cca1482ced7ff1f9a7cc905c3bc49578b1cab5c04f5e1393192ab28", 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] error: linking with `cc` failed: exit status: 1 [INFO] [stdout] | [INFO] [stdout] = note: LC_ALL="C" PATH="/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/opt/rustwide/cargo-home/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcK3KmuI/symbols.o" "<2 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libtest-bb17ba1fa02ea08e.rlib,libgetopts-d04d0c542852b7d7.rlib,libunicode_width-7748d1fe0f8acd00.rlib,librustc_std_workspace_std-6cf585dc4073d549.rlib,libstd-6273572f18644c87.rlib,libpanic_unwind-267e668abf74a283.rlib,libobject-ec6154ccae37a33e.rlib,libmemchr-500edd5521c440d4.rlib,libaddr2line-86d8d9428792e8ef.rlib,libgimli-10f06487503767c2.rlib,librustc_demangle-6a38424de1e5bca5.rlib,libstd_detect-de9763ea1c19dca3.rlib,libhashbrown-a7f5bb2f736d3c49.rlib,librustc_std_workspace_alloc-7e368919bdc4a44c.rlib,libminiz_oxide-376454d49910c786.rlib,libadler-fa99f5692b5dce85.rlib,libunwind-91cafdaf16f7fe40.rlib,libcfg_if-f7ee3f1ea78d9dae.rlib,liblibc-d3a35665f881365a.rlib,liballoc-715bc629a88bca60.rlib,librustc_std_workspace_core-ae70165d1278cff7.rlib,libcore-406129d0e3fbc101.rlib,libcompiler_builtins-1af05515ab19524a.rlib}" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/monkeylang_rs-ae17aac4caf3da0b" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" [INFO] [stdout] = note: some arguments are omitted. use `--verbose` to show all linker arguments [INFO] [stdout] = note: /usr/bin/ld: final link failed: No space left on device [INFO] [stdout] collect2: error: ld returned 1 exit status [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `monkeylang-rs` (bin "monkeylang-rs" test) due to 1 previous error [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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] [stdout] error: linking with `cc` failed: exit status: 1 [INFO] [stdout] | [INFO] [stdout] = note: LC_ALL="C" PATH="/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/opt/rustwide/cargo-home/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcEDi6Gl/symbols.o" "<17 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libtest-bb17ba1fa02ea08e.rlib,libgetopts-d04d0c542852b7d7.rlib,libunicode_width-7748d1fe0f8acd00.rlib,librustc_std_workspace_std-6cf585dc4073d549.rlib}" "/opt/rustwide/target/debug/deps/{libthiserror-4d05e302de1607aa.rlib}" "/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-6273572f18644c87.rlib,libpanic_unwind-267e668abf74a283.rlib,libobject-ec6154ccae37a33e.rlib,libmemchr-500edd5521c440d4.rlib,libaddr2line-86d8d9428792e8ef.rlib,libgimli-10f06487503767c2.rlib,librustc_demangle-6a38424de1e5bca5.rlib,libstd_detect-de9763ea1c19dca3.rlib,libhashbrown-a7f5bb2f736d3c49.rlib,librustc_std_workspace_alloc-7e368919bdc4a44c.rlib,libminiz_oxide-376454d49910c786.rlib,libadler-fa99f5692b5dce85.rlib,libunwind-91cafdaf16f7fe40.rlib,libcfg_if-f7ee3f1ea78d9dae.rlib,liblibc-d3a35665f881365a.rlib,liballoc-715bc629a88bca60.rlib,librustc_std_workspace_core-ae70165d1278cff7.rlib,libcore-406129d0e3fbc101.rlib,libcompiler_builtins-1af05515ab19524a.rlib}" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/monkeylang_rs-fa5a907a1a32785e" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" [INFO] [stdout] = note: some arguments are omitted. use `--verbose` to show all linker arguments [INFO] [stdout] = note: /usr/bin/ld: final link failed: No space left on device [INFO] [stdout] collect2: error: ld returned 1 exit status [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `monkeylang-rs` (lib test) due to 1 previous error; 21 warnings emitted [INFO] running `Command { std: "docker" "inspect" "90776e805cca1482ced7ff1f9a7cc905c3bc49578b1cab5c04f5e1393192ab28", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "90776e805cca1482ced7ff1f9a7cc905c3bc49578b1cab5c04f5e1393192ab28", kill_on_drop: false }` [INFO] [stdout] 90776e805cca1482ced7ff1f9a7cc905c3bc49578b1cab5c04f5e1393192ab28