[INFO] cloning repository https://github.com/Pureblackkk/craft-interpreter-practice-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Pureblackkk/craft-interpreter-practice-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPureblackkk%2Fcraft-interpreter-practice-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPureblackkk%2Fcraft-interpreter-practice-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4659f7efe819e6cb3009b97cd7c64d14da643096
[INFO] testing Pureblackkk/craft-interpreter-practice-rs against 1.83.0 for beta-1.84.0-4-retry
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FPureblackkk%2Fcraft-interpreter-practice-rs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Pureblackkk/craft-interpreter-practice-rs on toolchain 1.83.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.83.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Pureblackkk/craft-interpreter-practice-rs
[INFO] finished tweaking git repo https://github.com/Pureblackkk/craft-interpreter-practice-rs
[INFO] tweaked toml for git repo https://github.com/Pureblackkk/craft-interpreter-practice-rs written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/Pureblackkk/craft-interpreter-practice-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.83.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+1.83.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 59b512e4f72407eeed3ebde18e1d4b097c6e053ff91b907901b9484d2cb1a16f
[INFO] running `Command { std: "docker" "start" "-a" "59b512e4f72407eeed3ebde18e1d4b097c6e053ff91b907901b9484d2cb1a16f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "59b512e4f72407eeed3ebde18e1d4b097c6e053ff91b907901b9484d2cb1a16f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59b512e4f72407eeed3ebde18e1d4b097c6e053ff91b907901b9484d2cb1a16f", kill_on_drop: false }`
[INFO] [stdout] 59b512e4f72407eeed3ebde18e1d4b097c6e053ff91b907901b9484d2cb1a16f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+1.83.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5fe7e26b77f6b8205aacf3f36742fe87755ef2de80f54ae0b704bc1f0df13d85
[INFO] running `Command { std: "docker" "start" "-a" "5fe7e26b77f6b8205aacf3f36742fe87755ef2de80f54ae0b704bc1f0df13d85", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.82
[INFO] [stderr]    Compiling siphasher v0.3.11
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling phf_shared v0.11.2
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling phf_generator v0.11.2
[INFO] [stderr]    Compiling syn v2.0.61
[INFO] [stderr]    Compiling phf_macros v0.11.2
[INFO] [stderr]    Compiling phf v0.11.2
[INFO] [stderr]    Compiling craft_interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt::Arguments`
[INFO] [stdout]  --> src/vistor/ast_printer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Arguments;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/vistor/expr_interpreter.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::value::class::ClassInstance`
[INFO] [stdout]  --> src/vistor/expr_interpreter.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::value::class::ClassInstance;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SetValueType`
[INFO] [stdout]  --> src/vistor/stmt_resolver.rs:6:62
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::resolver::{ClassStatus, FunctionStatus, Resolver, SetValueType};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/parser/parser_expr.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cell::RefCell`
[INFO] [stdout]  --> src/value/mod.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{cell::RefCell, rc::Rc};
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RefMut`
[INFO] [stdout]  --> src/environment/mod.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::{RefCell, RefMut};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> src/environment/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr`
[INFO] [stdout]  --> src/environment/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::ptr;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: elided lifetime has a name
[INFO] [stdout]   --> src/resolver/mod.rs:38:53
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<'a> Resolver<'a> {
[INFO] [stdout]    |      -- lifetime `'a` declared here
[INFO] [stdout] 38 |     pub fn new(interpreter: &'a mut Interpreter) -> Resolver {
[INFO] [stdout]    |                                                     ^^^^^^^^ this elided lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(elided_named_lifetimes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:79:32
[INFO] [stdout]    |
[INFO] [stdout] 79 |             Expr::Call(callee, token, arguments) => {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:91:31
[INFO] [stdout]    |
[INFO] [stdout] 91 |             Expr::Get(object, property) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:97:31
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Expr::Set(object, property, value) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/vistor/expr_interpreter.rs:190:23
[INFO] [stdout]     |
[INFO] [stdout] 190 |             Expr::New(token, caller) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value_result`
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:63:25
[INFO] [stdout]    |
[INFO] [stdout] 63 |                     let value_result = self.exectue(statement)?;
[INFO] [stdout]    |                         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_interpreter.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_interpreter.rs:171:29
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:77:31
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Expr::Get(object, property) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:81:31
[INFO] [stdout]    |
[INFO] [stdout] 81 |             Expr::Set(object, property, val) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `method`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:97:32
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Expr::Super(token, method) => {
[INFO] [stdout]    |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             _ => Ok(()),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 58  |             Stmt::Block(statements) => {
[INFO] [stdout]     |             ----------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 64  |             Stmt::Var(indentifier, expr) => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 75  |             Stmt::Function(name, _, _) => {
[INFO] [stdout]     |             -------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 82  |             Stmt::Expr(expr) => {
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             _ => Ok(()),
[INFO] [stdout]     |             ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:164:29
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmt`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:177:29
[INFO] [stdout]     |
[INFO] [stdout] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_stmt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:177:42
[INFO] [stdout]     |
[INFO] [stdout] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stdout]     |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `function_type`
[INFO] [stdout]   --> src/parser/parser_stmt.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn function(&mut self, function_type: FunctionType) -> Result<Stmt, ParserError> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_function_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser_stmt.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut initializer: Option<Stmt>;
[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: unused variable: `token`
[INFO] [stdout]   --> src/value/function.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         token: &Token,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]   --> src/interpreter/mod.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |             let res = self.exectue(&statement)?;
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]   --> src/scanner/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Scanner {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/scanner/mod.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout] 26  | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 27  |     pub fn new(src: String) -> Scanner {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39  |     pub fn scan_tokens(&mut self) -> Result<Vec<Token>, ScannerError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60  |     fn scan_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn advance(&mut self) -> char {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn match_next(&mut self, expected: char) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn peek(&mut self) -> char {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn peek_next(&mut self) -> char {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn add_token(&mut self, token_type: TokenType, literal: Option<Literal>) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn string(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     fn number(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn identifier(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn is_at_end(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     fn done(&self) -> bool {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn is_digit(c: char) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn is_alpha(c: char) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn is_alpha_numberic(c: char) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/scanner/token.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum TokenType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 6  |     // Single-character tokens.
[INFO] [stdout] 7  |     LeftParen,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 8  |     RightParen,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     LeftBrace,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 10 |     RightBrace,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     LeftBracket,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     RightBracket,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 13 |     Comma,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     Dot,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 15 |     Minus,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     Plus,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 17 |     Semicolon,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     Slash,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 19 |     Star,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Bang,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 23 |     BangEqual,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     Equal,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 25 |     EqualEqual,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 26 |     Greater,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 27 |     GreaterEqual,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 28 |     Less,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 29 |     LessEqual,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     Number,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     And,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 38 |     Class,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 39 |     Else,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 40 |     False,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 41 |     Fun,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 42 |     For,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 43 |     If,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 44 |     Nil,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 45 |     Or,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 46 |     Print,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 47 |     Return,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 48 |     Super,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 49 |     This,
[INFO] [stdout] 50 |     True,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 51 |     Var,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 52 |     While,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 53 |     Lambda,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 54 |     New,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 55 |     Extend,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     Eof,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` 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 `Identifier` and `Number` are never constructed
[INFO] [stdout]   --> src/scanner/token.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum Literal {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 62 |     Identifier(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 63 |     Str(String),
[INFO] [stdout] 64 |     Number(f64),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Literal` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `RESERVED_KEYWORD` is never used
[INFO] [stdout]   --> src/scanner/token.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub static RESERVED_KEYWORD: phf::Map<&'static str, TokenType> = phf_map!{
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/grammer/expression.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum Expr {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 5  |     Grouping(Box<Expr>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 6  |     Unary(Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 7  |     Binary(Box<Expr>, Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 8  |     Literal(ExprLiteral),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 9  |     Variable(Token),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 10 |     Assign(Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 11 |     Logical(Box<Expr>, Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 12 |     Call(Box<Expr>, Token, Vec<Expr>),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 13 |     New(Token, Box<Expr>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     Get(Box<Expr>, Token),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 15 |     Set(Box<Expr>, Token, Box<Expr>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 16 |     This(Token),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 17 |     Super(Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expr` 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 `Number`, `String`, `True`, `False`, and `Nil` are never constructed
[INFO] [stdout]   --> src/grammer/expression.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub enum ExprLiteral {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 36 |     Number(f64),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 37 |     String(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     True,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 39 |     False,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 40 |     Nil,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExprLiteral` 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/grammer/statement.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub enum Stmt {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 10 |     Expr(Expr),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 11 |     Print(Expr),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 12 |     Var(Token, Option<Expr>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 13 |     Block(Vec<Stmt>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     If(Expr, Box<Stmt>, Box<Option<Stmt>>),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 15 |     While(Expr, Box<Stmt>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     Function(Token, Vec<Token>, Box<Stmt>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 17 |     Class(Token, Option<Expr>, Vec<Stmt>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 18 |     Return(Token, Option<Expr>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Stmt` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FunctionType` is never used
[INFO] [stdout]   --> src/grammer/statement.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum FunctionType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FunctionType` 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` and `print` are never used
[INFO] [stdout]   --> src/vistor/ast_printer.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout] 7  | impl AstPrinter {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 8  |     pub fn new() -> AstPrinter {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn print(&mut self, expr: Expr) -> String {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `interpret_expr_debug` is never used
[INFO] [stdout]   --> src/vistor/expr_interpreter.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Interpreter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 14 |     pub fn interpret_expr_debug(&mut self, expr: &Expr) -> Result<LValue, RunTimeError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `interpret_stmt_debug` is never used
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Interpreter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 15 |     pub fn interpret_stmt_debug(&mut self, stmt: &Stmt) -> Result<(), RunTimeError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]  --> src/parser/mod.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Parser {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/parser/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Parser {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(tokens: Vec<Token>) -> Parser {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn parser(&mut self) -> Result<Vec<Stmt>, ParserError> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     fn consume(&mut self, typee: TokenType, message: &str) -> Result<&Token, ParserError> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn match_one_of(&mut self, types: Vec<TokenType>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn matches(&mut self, typee: TokenType) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn check(&mut self, typee: TokenType) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn advance(&mut self) -> &Token {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     fn is_at_end(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn peek(&mut self) -> &Token {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn previous(&mut self) -> &Token {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser/parser_expr.rs:6:12
[INFO] [stdout]     |
[INFO] [stdout] 5   | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 6   |     pub fn parse_expr_debug(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10  |     pub fn expression(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14  |     fn assignment(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     fn or(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |     fn and(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     fn equality(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80  |     fn comparision(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn term(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     fn factor(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn unary(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn class_init(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn call(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn primary(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `finsh_call` is never used
[INFO] [stdout]    --> src/parser/parser_expr.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] 259 |     fn finsh_call(&mut self, callee: Expr) -> Result<Expr, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:6:12
[INFO] [stdout]     |
[INFO] [stdout] 5   | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 6   |     pub fn declaration(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23  |     fn var_declaration(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36  |     fn class(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60  |     fn function(&mut self, function_type: FunctionType) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89  |     fn statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn block(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     fn print_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn expression_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn if_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     fn while_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn for_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     fn return_statement(&mut self) -> Result<Stmt, ParserError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TokenMisMatch`, `ExpectedExpression`, `InvalidAssignmentTarget`, and `FunctionParamUpperLimit` are never constructed
[INFO] [stdout]   --> src/parser/parese_error.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum ParserError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 6  |     TokenMisMatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     ExpectedExpression {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     InvalidAssignmentTarget {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     FunctionParamUpperLimit {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `arity` is never used
[INFO] [stdout]   --> src/value/function.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub trait Callable {
[INFO] [stdout]    |           -------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn arity(&self) -> usize;
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/value/class.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Class {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `arity` is never used
[INFO] [stdout]   --> src/value/class.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl Class {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn arity(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]    --> src/value/class.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 95  | impl ClassInstance {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `interpret` are never used
[INFO] [stdout]   --> src/interpreter/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Interpreter {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Interpreter {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn interpret(&mut self, statements: Vec<Stmt>) -> Result<(), RunTimeError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `resolve` are never used
[INFO] [stdout]   --> src/resolver/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<'a> Resolver<'a> {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 38 |     pub fn new(interpreter: &'a mut Interpreter) -> Resolver {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn resolve(&mut self, statements: &Vec<Stmt>) -> Result<(), ResolveError> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                     self.exectue(&(*body));
[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] 83 |                     let _ = self.exectue(&(*body));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/parser/parser_stmt.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |             self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let _ = self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |         let _ = self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 145 |         self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |         self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 160 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let _ = self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |         self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |         self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let _ = self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/value/class.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |             init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let _ = init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.73s
[INFO] running `Command { std: "docker" "inspect" "5fe7e26b77f6b8205aacf3f36742fe87755ef2de80f54ae0b704bc1f0df13d85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5fe7e26b77f6b8205aacf3f36742fe87755ef2de80f54ae0b704bc1f0df13d85", kill_on_drop: false }`
[INFO] [stdout] 5fe7e26b77f6b8205aacf3f36742fe87755ef2de80f54ae0b704bc1f0df13d85
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+1.83.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b78dff5e85dae1fb5e07dc53d162ef275dc41a3f5f101382a2546447930f18b1
[INFO] running `Command { std: "docker" "start" "-a" "b78dff5e85dae1fb5e07dc53d162ef275dc41a3f5f101382a2546447930f18b1", kill_on_drop: false }`
[INFO] [stderr]    Compiling craft_interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt::Arguments`
[INFO] [stdout]  --> src/vistor/ast_printer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Arguments;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/vistor/expr_interpreter.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::value::class::ClassInstance`
[INFO] [stdout]  --> src/vistor/expr_interpreter.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::value::class::ClassInstance;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SetValueType`
[INFO] [stdout]  --> src/vistor/stmt_resolver.rs:6:62
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::resolver::{ClassStatus, FunctionStatus, Resolver, SetValueType};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/parser/parser_expr.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |         while true {
[INFO] [stdout]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cell::RefCell`
[INFO] [stdout]  --> src/value/mod.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::{cell::RefCell, rc::Rc};
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RefMut`
[INFO] [stdout]  --> src/environment/mod.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::{RefCell, RefMut};
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Deref`
[INFO] [stdout]  --> src/environment/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Deref;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr`
[INFO] [stdout]  --> src/environment/mod.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::ptr;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: elided lifetime has a name
[INFO] [stdout]   --> src/resolver/mod.rs:38:53
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<'a> Resolver<'a> {
[INFO] [stdout]    |      -- lifetime `'a` declared here
[INFO] [stdout] 38 |     pub fn new(interpreter: &'a mut Interpreter) -> Resolver {
[INFO] [stdout]    |                                                     ^^^^^^^^ this elided lifetime gets resolved as `'a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(elided_named_lifetimes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:79:32
[INFO] [stdout]    |
[INFO] [stdout] 79 |             Expr::Call(callee, token, arguments) => {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:91:31
[INFO] [stdout]    |
[INFO] [stdout] 91 |             Expr::Get(object, property) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/ast_printer.rs:97:31
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Expr::Set(object, property, value) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/vistor/expr_interpreter.rs:190:23
[INFO] [stdout]     |
[INFO] [stdout] 190 |             Expr::New(token, caller) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value_result`
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:63:25
[INFO] [stdout]    |
[INFO] [stdout] 63 |                     let value_result = self.exectue(statement)?;
[INFO] [stdout]    |                         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_interpreter.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_interpreter.rs:171:29
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:77:31
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Expr::Get(object, property) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `property`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:81:31
[INFO] [stdout]    |
[INFO] [stdout] 81 |             Expr::Set(object, property, val) => {
[INFO] [stdout]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `method`
[INFO] [stdout]   --> src/vistor/expr_resolver.rs:97:32
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Expr::Super(token, method) => {
[INFO] [stdout]    |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |             _ => Ok(()),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 58  |             Stmt::Block(statements) => {
[INFO] [stdout]     |             ----------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 64  |             Stmt::Var(indentifier, expr) => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 75  |             Stmt::Function(name, _, _) => {
[INFO] [stdout]     |             -------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 82  |             Stmt::Expr(expr) => {
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             _ => Ok(()),
[INFO] [stdout]     |             ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `supper_class_expr`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:164:29
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmt`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:177:29
[INFO] [stdout]     |
[INFO] [stdout] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_stmt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/vistor/stmt_resolver.rs:177:42
[INFO] [stdout]     |
[INFO] [stdout] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stdout]     |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `function_type`
[INFO] [stdout]   --> src/parser/parser_stmt.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn function(&mut self, function_type: FunctionType) -> Result<Stmt, ParserError> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_function_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser_stmt.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut initializer: Option<Stmt>;
[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: unused variable: `token`
[INFO] [stdout]   --> src/value/function.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         token: &Token,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]   --> src/interpreter/mod.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |             let res = self.exectue(&statement)?;
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Logical` is never constructed
[INFO] [stdout]   --> src/grammer/expression.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub enum Expr {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 11 |     Logical(Box<Expr>, Token, Box<Expr>),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expr` 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: method `interpret_stmt_debug` is never used
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Interpreter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 15 |     pub fn interpret_stmt_debug(&mut self, stmt: &Stmt) -> Result<(), RunTimeError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `or` and `and` are never used
[INFO] [stdout]   --> src/parser/parser_expr.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 5  | impl Parser {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn or(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]    |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn and(&mut self) -> Result<Expr, ParserError> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `arity` is never used
[INFO] [stdout]   --> src/value/function.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub trait Callable {
[INFO] [stdout]    |           -------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn arity(&self) -> usize;
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/value/class.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Class {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `arity` is never used
[INFO] [stdout]   --> src/value/class.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl Class {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn arity(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]    --> src/value/class.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 95  | impl ClassInstance {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/vistor/stmt_interpreter.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                     self.exectue(&(*body));
[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] 83 |                     let _ = self.exectue(&(*body));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/parser/parser_stmt.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |             self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let _ = self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 125 |         let _ = self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:145:9
[INFO] [stdout]     |
[INFO] [stdout] 145 |         self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 145 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |         self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 160 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let _ = self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |         self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser/parser_stmt.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |         self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let _ = self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/value/class.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |             init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 118 |             let _ = init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.59s
[INFO] running `Command { std: "docker" "inspect" "b78dff5e85dae1fb5e07dc53d162ef275dc41a3f5f101382a2546447930f18b1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b78dff5e85dae1fb5e07dc53d162ef275dc41a3f5f101382a2546447930f18b1", kill_on_drop: false }`
[INFO] [stdout] b78dff5e85dae1fb5e07dc53d162ef275dc41a3f5f101382a2546447930f18b1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+1.83.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] dd774e6248238b346864530e69cc0eddd339147d2a33d43683e8b7929b6f7ece
[INFO] running `Command { std: "docker" "start" "-a" "dd774e6248238b346864530e69cc0eddd339147d2a33d43683e8b7929b6f7ece", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::fmt::Arguments`
[INFO] [stderr]  --> src/vistor/ast_printer.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::Arguments;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::rc::Rc`
[INFO] [stderr]  --> src/vistor/expr_interpreter.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::rc::Rc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::value::class::ClassInstance`
[INFO] [stderr]  --> src/vistor/expr_interpreter.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::value::class::ClassInstance;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SetValueType`
[INFO] [stderr]  --> src/vistor/stmt_resolver.rs:6:62
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::resolver::{ClassStatus, FunctionStatus, Resolver, SetValueType};
[INFO] [stderr]   |                                                              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: denote infinite loops with `loop { ... }`
[INFO] [stderr]    --> src/parser/parser_expr.rs:168:9
[INFO] [stderr]     |
[INFO] [stderr] 168 |         while true {
[INFO] [stderr]     |         ^^^^^^^^^^ help: use `loop`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(while_true)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `cell::RefCell`
[INFO] [stderr]  --> src/value/mod.rs:6:11
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::{cell::RefCell, rc::Rc};
[INFO] [stderr]   |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RefMut`
[INFO] [stderr]  --> src/environment/mod.rs:1:26
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::cell::{RefCell, RefMut};
[INFO] [stderr]   |                          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Deref`
[INFO] [stderr]  --> src/environment/mod.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::ops::Deref;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr`
[INFO] [stderr]  --> src/environment/mod.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::ptr;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: elided lifetime has a name
[INFO] [stderr]   --> src/resolver/mod.rs:38:53
[INFO] [stderr]    |
[INFO] [stderr] 37 | impl<'a> Resolver<'a> {
[INFO] [stderr]    |      -- lifetime `'a` declared here
[INFO] [stderr] 38 |     pub fn new(interpreter: &'a mut Interpreter) -> Resolver {
[INFO] [stderr]    |                                                     ^^^^^^^^ this elided lifetime gets resolved as `'a`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(elided_named_lifetimes)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]   --> src/vistor/ast_printer.rs:79:32
[INFO] [stderr]    |
[INFO] [stderr] 79 |             Expr::Call(callee, token, arguments) => {
[INFO] [stderr]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `property`
[INFO] [stderr]   --> src/vistor/ast_printer.rs:91:31
[INFO] [stderr]    |
[INFO] [stderr] 91 |             Expr::Get(object, property) => {
[INFO] [stderr]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `property`
[INFO] [stderr]   --> src/vistor/ast_printer.rs:97:31
[INFO] [stderr]    |
[INFO] [stderr] 97 |             Expr::Set(object, property, value) => {
[INFO] [stderr]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/vistor/expr_interpreter.rs:190:23
[INFO] [stderr]     |
[INFO] [stderr] 190 |             Expr::New(token, caller) => {
[INFO] [stderr]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `value_result`
[INFO] [stderr]   --> src/vistor/stmt_interpreter.rs:63:25
[INFO] [stderr]    |
[INFO] [stderr] 63 |                     let value_result = self.exectue(statement)?;
[INFO] [stderr]    |                         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_value_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `supper_class_expr`
[INFO] [stderr]    --> src/vistor/stmt_interpreter.rs:135:29
[INFO] [stderr]     |
[INFO] [stderr] 135 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `supper_class_expr`
[INFO] [stderr]    --> src/vistor/stmt_interpreter.rs:171:29
[INFO] [stderr]     |
[INFO] [stderr] 171 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `property`
[INFO] [stderr]   --> src/vistor/expr_resolver.rs:77:31
[INFO] [stderr]    |
[INFO] [stderr] 77 |             Expr::Get(object, property) => {
[INFO] [stderr]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `property`
[INFO] [stderr]   --> src/vistor/expr_resolver.rs:81:31
[INFO] [stderr]    |
[INFO] [stderr] 81 |             Expr::Set(object, property, val) => {
[INFO] [stderr]    |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_property`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `method`
[INFO] [stderr]   --> src/vistor/expr_resolver.rs:97:32
[INFO] [stderr]    |
[INFO] [stderr] 97 |             Expr::Super(token, method) => {
[INFO] [stderr]    |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stderr]     |
[INFO] [stderr] 173 |             _ => Ok(()),
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]    --> src/vistor/stmt_resolver.rs:173:13
[INFO] [stderr]     |
[INFO] [stderr] 58  |             Stmt::Block(statements) => {
[INFO] [stderr]     |             ----------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 64  |             Stmt::Var(indentifier, expr) => {
[INFO] [stderr]     |             ---------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 75  |             Stmt::Function(name, _, _) => {
[INFO] [stderr]     |             -------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 82  |             Stmt::Expr(expr) => {
[INFO] [stderr]     |             ---------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 173 |             _ => Ok(()),
[INFO] [stderr]     |             ^ ...and 5 other patterns collectively make this unreachable
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `supper_class_expr`
[INFO] [stderr]    --> src/vistor/stmt_resolver.rs:164:29
[INFO] [stderr]     |
[INFO] [stderr] 164 |                 if let Some(supper_class_expr) = supper_class {
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_supper_class_expr`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `stmt`
[INFO] [stderr]    --> src/vistor/stmt_resolver.rs:177:29
[INFO] [stderr]     |
[INFO] [stderr] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stderr]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_stmt`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `env`
[INFO] [stderr]    --> src/vistor/stmt_resolver.rs:177:42
[INFO] [stderr]     |
[INFO] [stderr] 177 |     fn visit_env(&mut self, stmt: &Stmt, env: Rc<RefCell<Environment>>) -> Result<(), ResolveError> {
[INFO] [stderr]     |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `function_type`
[INFO] [stderr]   --> src/parser/parser_stmt.rs:60:28
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn function(&mut self, function_type: FunctionType) -> Result<Stmt, ParserError> {
[INFO] [stderr]    |                            ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_function_type`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/parser/parser_stmt.rs:170:13
[INFO] [stderr]     |
[INFO] [stderr] 170 |         let mut initializer: Option<Stmt>;
[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: unused variable: `token`
[INFO] [stderr]   --> src/value/function.rs:66:9
[INFO] [stderr]    |
[INFO] [stderr] 66 |         token: &Token,
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `res`
[INFO] [stderr]   --> src/interpreter/mod.rs:29:17
[INFO] [stderr]    |
[INFO] [stderr] 29 |             let res = self.exectue(&statement)?;
[INFO] [stderr]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Logical` is never constructed
[INFO] [stderr]   --> src/grammer/expression.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 4  | pub enum Expr {
[INFO] [stderr]    |          ---- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 11 |     Logical(Box<Expr>, Token, Box<Expr>),
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Expr` 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: method `interpret_stmt_debug` is never used
[INFO] [stderr]   --> src/vistor/stmt_interpreter.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl Interpreter {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] 15 |     pub fn interpret_stmt_debug(&mut self, stmt: &Stmt) -> Result<(), RunTimeError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `or` and `and` are never used
[INFO] [stderr]   --> src/parser/parser_expr.rs:37:8
[INFO] [stderr]    |
[INFO] [stderr] 5  | impl Parser {
[INFO] [stderr]    | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 37 |     fn or(&mut self) -> Result<Expr, ParserError> {
[INFO] [stderr]    |        ^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     fn and(&mut self) -> Result<Expr, ParserError> {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `arity` is never used
[INFO] [stderr]   --> src/value/function.rs:59:8
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub trait Callable {
[INFO] [stderr]    |           -------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 59 |     fn arity(&self) -> usize;
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_string` is never used
[INFO] [stderr]   --> src/value/class.rs:40:12
[INFO] [stderr]    |
[INFO] [stderr] 27 | impl Class {
[INFO] [stderr]    | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 40 |     pub fn to_string(&self) -> String {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `arity` is never used
[INFO] [stderr]   --> src/value/class.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 61 | impl Class {
[INFO] [stderr]    | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 77 |     pub fn arity(&self) -> usize {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_string` is never used
[INFO] [stderr]    --> src/value/class.rs:124:12
[INFO] [stderr]     |
[INFO] [stderr] 95  | impl ClassInstance {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 124 |     pub fn to_string(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/vistor/stmt_interpreter.rs:83:21
[INFO] [stderr]    |
[INFO] [stderr] 83 |                     self.exectue(&(*body));
[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] 83 |                     let _ = self.exectue(&(*body));
[INFO] [stderr]    |                     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]   --> src/parser/parser_stmt.rs:42:13
[INFO] [stderr]    |
[INFO] [stderr] 42 |             self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]    |
[INFO] [stderr] 42 |             let _ = self.consume(TokenType::Identifier, "Expect super class name");
[INFO] [stderr]    |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:125:9
[INFO] [stderr]     |
[INFO] [stderr] 125 |         self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 125 |         let _ = self.consume(TokenType::RightBrace, "Expect '}' after block.");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:143:9
[INFO] [stderr]     |
[INFO] [stderr] 143 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 143 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after if");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:145:9
[INFO] [stderr]     |
[INFO] [stderr] 145 |         self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 145 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after if condition");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:158:9
[INFO] [stderr]     |
[INFO] [stderr] 158 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 158 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after while");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:160:9
[INFO] [stderr]     |
[INFO] [stderr] 160 |         self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 160 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after condition");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:167:9
[INFO] [stderr]     |
[INFO] [stderr] 167 |         self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 167 |         let _ = self.consume(TokenType::LeftParen, "Expect \' ( \' after for");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:186:9
[INFO] [stderr]     |
[INFO] [stderr] 186 |         self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 186 |         let _ = self.consume(TokenType::Semicolon, "Expect \' ; \' after loop condition");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:195:9
[INFO] [stderr]     |
[INFO] [stderr] 195 |         self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 195 |         let _ = self.consume(TokenType::RightParen, "Expect \' ) \' after for clauses.");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser/parser_stmt.rs:237:9
[INFO] [stderr]     |
[INFO] [stderr] 237 |         self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 237 |         let _ = self.consume(TokenType::Semicolon, "Expect \';\' after return value");
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/value/class.rs:118:13
[INFO] [stderr]     |
[INFO] [stderr] 118 |             init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 118 |             let _ = init_func.bind(instance.clone()).call(interpreter, token, arguments);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `craft_interpreter` (bin "craft_interpreter" test) generated 47 warnings (run `cargo fix --bin "craft_interpreter" --tests` to apply 10 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/craft_interpreter-286231fe8fac698b)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test parser::parser_expr::tests::expression_error ... ok
[INFO] [stdout] test scanner::tests::multiple_line ... ok
[INFO] [stdout] test scanner::tests::unit_identifier_literals ... ok
[INFO] [stdout] test scanner::tests::unit_notation ... ok
[INFO] [stdout] test scanner::tests::unit_number_literals ... ok
[INFO] [stdout] test scanner::tests::unit_one_or_two_character_token ... ok
[INFO] [stdout] test scanner::tests::unit_reserved_keywords ... ok
[INFO] [stdout] test scanner::tests::unit_single_character_token ... ok
[INFO] [stdout] test scanner::tests::unit_string_literals ... ok
[INFO] [stdout] test scanner::token::tests::create_token ... ok
[INFO] [stdout] test vistor::ast_printer::tests::display_token ... ok
[INFO] [stdout] test scanner::tests::error_unexpected_char ... ok
[INFO] [stdout] test vistor::expr_interpreter::tests::interpreter_expression ... ok
[INFO] [stdout] test scanner::tests::error_unterminated_string ... ok
[INFO] [stdout] test vistor::expr_interpreter::tests::interpreter_expression_error ... ok
[INFO] [stdout] test parser::parser_expr::tests::expression_general ... ok
[INFO] [stdout] test parser::parser_expr::tests::expression_primary ... ok
[INFO] [stdout] test interpreter::tests::simple_statement has been running for over 60 seconds
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "dd774e6248238b346864530e69cc0eddd339147d2a33d43683e8b7929b6f7ece", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dd774e6248238b346864530e69cc0eddd339147d2a33d43683e8b7929b6f7ece", kill_on_drop: false }`
[INFO] [stdout] dd774e6248238b346864530e69cc0eddd339147d2a33d43683e8b7929b6f7ece
