[INFO] cloning repository https://github.com/Mo-Jian-Xia-Ke/WACC-36
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Mo-Jian-Xia-Ke/WACC-36" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMo-Jian-Xia-Ke%2FWACC-36", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMo-Jian-Xia-Ke%2FWACC-36'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7d5cd01f55515af0d921dcfa14b44dc9dcbd0df8
[INFO] checking Mo-Jian-Xia-Ke/WACC-36 against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMo-Jian-Xia-Ke%2FWACC-36" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Mo-Jian-Xia-Ke/WACC-36
[INFO] finished tweaking git repo https://github.com/Mo-Jian-Xia-Ke/WACC-36
[INFO] tweaked toml for git repo https://github.com/Mo-Jian-Xia-Ke/WACC-36 written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Mo-Jian-Xia-Ke/WACC-36 on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Mo-Jian-Xia-Ke/WACC-36 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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 350fbe7c7cde542221ec892e4796d18b0da9ea7290c567c7b14a6d7f297148cc
[INFO] running `Command { std: "docker" "start" "-a" "350fbe7c7cde542221ec892e4796d18b0da9ea7290c567c7b14a6d7f297148cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "350fbe7c7cde542221ec892e4796d18b0da9ea7290c567c7b14a6d7f297148cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "350fbe7c7cde542221ec892e4796d18b0da9ea7290c567c7b14a6d7f297148cc", kill_on_drop: false }`
[INFO] [stdout] 350fbe7c7cde542221ec892e4796d18b0da9ea7290c567c7b14a6d7f297148cc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dunmustuse_in_always_ok" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5fcee12507e16990db9dba26123369b6eb84864abf8f35b74e66890e45cbb6e0
[INFO] running `Command { std: "docker" "start" "-a" "5fcee12507e16990db9dba26123369b6eb84864abf8f35b74e66890e45cbb6e0", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling ahash v0.8.7
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]    Compiling chumsky v1.0.0-alpha.6 (https://github.com/YunkaiZhang233/chumsky.git#5ad8a795)
[INFO] [stderr]     Checking yansi v0.5.1
[INFO] [stderr]     Checking unicode-ident v1.0.12
[INFO] [stderr]     Checking ariadne v0.4.0
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling cc v1.0.83
[INFO] [stderr]    Compiling psm v0.1.21
[INFO] [stderr]    Compiling stacker v0.1.15
[INFO] [stderr]     Checking wacc_36 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::code_generator::asm::Scale`
[INFO] [stdout]  --> src/code_generator/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::code_generator::asm::Scale;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ARRAY_LOAD_LABEL` and `ARRAY_STORE_LABEL`
[INFO] [stdout]  --> src/code_generator/mod.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::code_generator::clib_functions::{ARRAY_LOAD_LABEL, ARRAY_STORE_LABEL};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OverFlow`
[INFO] [stdout]  --> src/code_generator/clib_functions.rs:3:49
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::code_generator::asm::ConditionCode::{OverFlow, EQ, GTE, LT, NEQ};
[INFO] [stdout]   |                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryInstr`
[INFO] [stdout]  --> src/code_generator/clib_functions.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code_generator::asm::Instr::{BinaryInstr, UnaryControl};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MemoryReferenceImmediate` and `RESULT_REG`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:12:47
[INFO] [stdout]    |
[INFO] [stdout] 12 |     InstrOperand, InstrType, MemoryReference, MemoryReferenceImmediate, PrintType, Register,
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     RuntimeErrorType, Scale, UnaryInstruction, UnaryNotScaled, RESULT_REG,
[INFO] [stdout]    |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `POINTER_SIZE`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:19:29
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::code_generator::{POINTER_SIZE, REFERENCE_OFFSET_SIZE};
[INFO] [stdout]    |                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::ErrorKind;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::basic_optimise::PropagatedValue`
[INFO] [stdout]  --> src/code_generator/expr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::basic_optimise::PropagatedValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/code_generator/stmt.rs:198:21
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     (Type::Pair(_, ref Any))
[INFO] [stdout]     |                     ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -                     (Type::Pair(_, ref Any))
[INFO] [stdout] 198 +                     Type::Pair(_, ref Any) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/code_generator/stmt.rs:206:21
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     (Type::Pair(ref Any, _))
[INFO] [stdout]     |                     ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 206 -                     (Type::Pair(ref Any, _))
[INFO] [stdout] 206 +                     Type::Pair(ref Any, _) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code_generator::asm::AsmLine::Instruction`
[INFO] [stdout]  --> src/code_generator/peephole_optimise/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::code_generator::asm::AsmLine::Instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryInstruction`
[INFO] [stdout]  --> src/code_generator/peephole_optimise/mod.rs:4:43
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code_generator::asm::{AsmLine, BinaryInstruction, GeneratedCode, Instr, InstrType};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/expr.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{BinaryOperator, Expr, Function, Type, UnaryOperator};
[INFO] [stdout]   |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Spanned`
[INFO] [stdout]  --> src/semantic_checker/expr.rs:4:38
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{any_span, MessageResult, Spanned};
[INFO] [stdout]   |                                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `empty_span`
[INFO] [stdout]  --> src/semantic_checker/program.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{empty_span, new_spanned, MessageResult, Spanned};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/stmt.rs:2:36
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ast::{ArgList, FuncSig, Function, Lvalue, Param, Rvalue, ScopedStmt, Stmt, Type};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/util.rs:1:50
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{ArrayElem, ArrayLiter, FuncSig, Function, Ident, PairElem, Param, Type};
[INFO] [stdout]   |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ast::Program`
[INFO] [stdout]  --> src/interpreter/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ast::Program;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoolValue` and `IntValue`
[INFO] [stdout]   --> src/interpreter/expr.rs:41:37
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::interpreter::Evaluated::{BoolValue, IntValue};
[INFO] [stdout]    |                                     ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_level`
[INFO] [stdout]   --> src/interpreter/expr.rs:42:26
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::interpreter::{get_level, Evaluated, Interpretable};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::interpreter::Evaluated::*`
[INFO] [stdout]   --> src/interpreter/expr.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         use crate::interpreter::Evaluated::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BasicBool` and `BasicInt`
[INFO] [stdout]  --> src/basic_optimise/expr.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::basic_optimise::PropagatedValue::{BasicBool, BasicInt};
[INFO] [stdout]   |                                              ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Param`
[INFO] [stdout]  --> src/basic_optimise/program.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{Function, Param, Program};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PropagatedValue`
[INFO] [stdout]  --> src/basic_optimise/program.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::basic_optimise::{ASTOptimise, PropagatedValue};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code_generator::asm::Scale`
[INFO] [stdout]  --> src/code_generator/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::code_generator::asm::Scale;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ARRAY_LOAD_LABEL` and `ARRAY_STORE_LABEL`
[INFO] [stdout]  --> src/code_generator/mod.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::code_generator::clib_functions::{ARRAY_LOAD_LABEL, ARRAY_STORE_LABEL};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OverFlow`
[INFO] [stdout]  --> src/code_generator/clib_functions.rs:3:49
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::code_generator::asm::ConditionCode::{OverFlow, EQ, GTE, LT, NEQ};
[INFO] [stdout]   |                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryInstr`
[INFO] [stdout]  --> src/code_generator/clib_functions.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code_generator::asm::Instr::{BinaryInstr, UnaryControl};
[INFO] [stdout]   |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MemoryReferenceImmediate` and `RESULT_REG`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:12:47
[INFO] [stdout]    |
[INFO] [stdout] 12 |     InstrOperand, InstrType, MemoryReference, MemoryReferenceImmediate, PrintType, Register,
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     RuntimeErrorType, Scale, UnaryInstruction, UnaryNotScaled, RESULT_REG,
[INFO] [stdout]    |                                                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `POINTER_SIZE`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:19:29
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::code_generator::{POINTER_SIZE, REFERENCE_OFFSET_SIZE};
[INFO] [stdout]    |                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]   --> src/code_generator/clib_functions.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::ErrorKind;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::basic_optimise::PropagatedValue`
[INFO] [stdout]  --> src/code_generator/expr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::basic_optimise::PropagatedValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/code_generator/stmt.rs:198:21
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     (Type::Pair(_, ref Any))
[INFO] [stdout]     |                     ^                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -                     (Type::Pair(_, ref Any))
[INFO] [stdout] 198 +                     Type::Pair(_, ref Any) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/code_generator/stmt.rs:206:21
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     (Type::Pair(ref Any, _))
[INFO] [stdout]     |                     ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 206 -                     (Type::Pair(ref Any, _))
[INFO] [stdout] 206 +                     Type::Pair(ref Any, _) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code_generator::asm::AsmLine::Instruction`
[INFO] [stdout]  --> src/code_generator/peephole_optimise/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::code_generator::asm::AsmLine::Instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BinaryInstruction`
[INFO] [stdout]  --> src/code_generator/peephole_optimise/mod.rs:4:43
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code_generator::asm::{AsmLine, BinaryInstruction, GeneratedCode, Instr, InstrType};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/expr.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{BinaryOperator, Expr, Function, Type, UnaryOperator};
[INFO] [stdout]   |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Spanned`
[INFO] [stdout]  --> src/semantic_checker/expr.rs:4:38
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{any_span, MessageResult, Spanned};
[INFO] [stdout]   |                                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `empty_span`
[INFO] [stdout]  --> src/semantic_checker/program.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{empty_span, new_spanned, MessageResult, Spanned};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/stmt.rs:2:36
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ast::{ArgList, FuncSig, Function, Lvalue, Param, Rvalue, ScopedStmt, Stmt, Type};
[INFO] [stdout]   |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Function`
[INFO] [stdout]  --> src/semantic_checker/util.rs:1:50
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{ArrayElem, ArrayLiter, FuncSig, Function, Ident, PairElem, Param, Type};
[INFO] [stdout]   |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ast::Program`
[INFO] [stdout]  --> src/interpreter/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ast::Program;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoolValue` and `IntValue`
[INFO] [stdout]   --> src/interpreter/expr.rs:41:37
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::interpreter::Evaluated::{BoolValue, IntValue};
[INFO] [stdout]    |                                     ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_level`
[INFO] [stdout]   --> src/interpreter/expr.rs:42:26
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::interpreter::{get_level, Evaluated, Interpretable};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::interpreter::Evaluated::*`
[INFO] [stdout]   --> src/interpreter/expr.rs:69:13
[INFO] [stdout]    |
[INFO] [stdout] 69 |         use crate::interpreter::Evaluated::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BasicBool` and `BasicInt`
[INFO] [stdout]  --> src/basic_optimise/expr.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::basic_optimise::PropagatedValue::{BasicBool, BasicInt};
[INFO] [stdout]   |                                              ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Param`
[INFO] [stdout]  --> src/basic_optimise/program.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ast::{Function, Param, Program};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PropagatedValue`
[INFO] [stdout]  --> src/basic_optimise/program.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::basic_optimise::{ASTOptimise, PropagatedValue};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/interpreter/stmt.rs:141:17
[INFO] [stdout]     |
[INFO] [stdout] 127 | /                 match pair_elem {
[INFO] [stdout] 128 | |                     PairElem::PairElemFst(boxed) => {
[INFO] [stdout] 129 | |                         let x = &boxed.0;
[INFO] [stdout] ...   |
[INFO] [stdout] 140 | |                 }
[INFO] [stdout]     | |_________________- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 141 |                   todo!()
[INFO] [stdout]     |                   ^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scope`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         scope: &mut ScopeInfo,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scope`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regs`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         regs: &mut Vec<Register>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_regs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/expr.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 let mut lhs_exp = &mut boxed_lhs.0;
[INFO] [stdout]    |                     ----^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/expr.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut rhs_exp = &mut boxed_rhs.0;
[INFO] [stdout]    |                     ----^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/program.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let mut scope = scope.make_scope(&mut self.param_symbol_table);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `scale` is never read
[INFO] [stdout]    --> src/code_generator/stmt.rs:121:33
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 let mut scale = Scale::default();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/stmt.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |         aux: (),
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/stmt.rs:745:9
[INFO] [stdout]     |
[INFO] [stdout] 745 |         aux: (),
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/semantic_checker/stmt.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let mut lhs_type = lhs.clone().0.analyse(scope);
[INFO] [stdout]    |                     ----^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scope`
[INFO] [stdout]  --> src/semantic_checker/util.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 |     fn func_analyse(&mut self, scope: &mut ScopeInfo) -> MessageResult<Type> {
[INFO] [stdout]   |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renamed_id`
[INFO] [stdout]   --> src/semantic_checker/util.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 |             Some((t, renamed_id)) => Ok(t.clone()),
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renamed_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/semantic_checker/util.rs:35:19
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Some((t, renamed_id)) => {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renamed_id`
[INFO] [stdout]   --> src/semantic_checker/util.rs:35:22
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Some((t, renamed_id)) => {
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renamed_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `register`
[INFO] [stdout]   --> src/symbol_table.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some((t, register)) => {
[INFO] [stdout]    |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interpreter/expr.rs:309:55
[INFO] [stdout]     |
[INFO] [stdout] 309 | ...                   let Evaluated::ArrayValue(mut next_arr) = arr_addr[used_index].clone()
[INFO] [stdout]     |                                                 ----^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/expr.rs:269:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/interpreter/expr.rs:287:21
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 let index = arr_elem.indices.iter().map(|(i, _)| i).collect::<Vec<_>>();
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]   --> src/interpreter/program.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         aux: Self::Input,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]   --> src/interpreter/stmt.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         aux: Self::Input,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/interpreter/stmt.rs:91:29
[INFO] [stdout]    |
[INFO] [stdout] 91 |                         let mut array_pointer = &mut stack[total - num - 1].2;
[INFO] [stdout]    |                             ----^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `array_val`
[INFO] [stdout]   --> src/interpreter/stmt.rs:88:36
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 for (num, (id_, _, array_val)) in entry_stack.iter().rev().enumerate() {
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_array_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/interpreter/stmt.rs:129:29
[INFO] [stdout]     |
[INFO] [stdout] 129 |                         let x = &boxed.0;
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/interpreter/stmt.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |                         let x = &boxed.0;
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/stmt.rs:154:9
[INFO] [stdout]     |
[INFO] [stdout] 154 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `type_`
[INFO] [stdout]    --> src/interpreter/stmt.rs:175:24
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Stmt::Free(type_, object_) => {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_type_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object_`
[INFO] [stdout]    --> src/interpreter/stmt.rs:175:31
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Stmt::Free(type_, object_) => {
[INFO] [stdout]     |                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_object_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/stmt.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/basic_optimise/mod.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |             BasicChar(x) => BasicInt((*x as u8) as i32),
[INFO] [stdout]     |             ------------ matches all the relevant values
[INFO] [stdout] 202 |             BasicChar(_) => NotBasic,
[INFO] [stdout]     |             ^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/basic_optimise/mod.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |             BasicInt(x) => BasicChar(char::from(*x as u8)),
[INFO] [stdout]     |             ----------- matches all the relevant values
[INFO] [stdout] 211 |             BasicInt(_) => NotBasic,
[INFO] [stdout]     |             ^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 178 |     let mut result = program_checker(&mut program);
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SIZE` is never used
[INFO] [stdout]   --> src/code_generator/mod.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const DEFAULT_SIZE: i32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Scaled` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:318:10
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub type Scaled<T> = (T, Scale);
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_scale` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn from_scale<T>(scaled: Scaled<T>) -> T {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_scale` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn get_scale<T>(scaled: Scaled<T>) -> Scale {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:380:12
[INFO] [stdout]     |
[INFO] [stdout] 379 | impl MemoryReference {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 380 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Not`, `Or`, and `Ret` are never constructed
[INFO] [stdout]    --> src/code_generator/asm.rs:435:5
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub enum InstrType {
[INFO] [stdout]     |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 435 |     Not,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     Or,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     Ret,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `InstrType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Comment` is never constructed
[INFO] [stdout]   --> src/code_generator/def_libary.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum Directives {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Comment(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Directives` 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 `CodeTarget` is never used
[INFO] [stdout]   --> src/code_generator/asm_creator.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum CodeTarget {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jump` is never used
[INFO] [stdout]    --> src/code_generator/asm_creator.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub fn jump(code: &mut GeneratedCode, label: &str) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Evaluated` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum Evaluated {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_LEVEL` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const BOTTOM_LEVEL: u32 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `level_up` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn level_up() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `level_down` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn level_down() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_level` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn get_level() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `level_clear` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn level_clear(stack: &mut Vec<(String, u32, Evaluated)>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Interpretable` is never used
[INFO] [stdout]   --> src/interpreter/mod.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub trait Interpretable {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/interpreter/expr.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Evaluated {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 48 |     pub fn from_int(given: i32) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn from_char(given: char) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn from_bool(given: bool) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn from_string(given: String) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn from_array(given: Vec<Evaluated>) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn from_null() -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn from_pair(given_left: Evaluated, given_right: Evaluated) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `logical_and`, `logical_or`, `get_ord`, `get_chr`, and `get_len` are never used
[INFO] [stdout]    --> src/interpreter/expr.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl Evaluated {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 188 |     pub fn logical_and(&self, other: &Evaluated) -> Evaluated {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn logical_or(&self, other: &Evaluated) -> Evaluated {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn get_ord(&self) -> Evaluated {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn get_chr(&self) -> Evaluated {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn get_len(&self) -> Evaluated {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret_unary_app` is never used
[INFO] [stdout]    --> src/interpreter/expr.rs:229:4
[INFO] [stdout]     |
[INFO] [stdout] 229 | fn interpret_unary_app(unary_operator: &UnaryOperator, exp: Evaluated) -> Evaluated {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret_binary_app` is never used
[INFO] [stdout]    --> src/interpreter/expr.rs:239:4
[INFO] [stdout]     |
[INFO] [stdout] 239 | fn interpret_binary_app(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret_program` is never used
[INFO] [stdout]  --> src/interpreter/interpret.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn interpret_program(ast: &mut Program) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_be_basic` is never used
[INFO] [stdout]  --> src/basic_optimise/expr.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl Expr {
[INFO] [stdout]   | --------- method in this implementation
[INFO] [stdout] 8 |     pub fn can_be_basic(&self) -> bool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Any` should have a snake case name
[INFO] [stdout]    --> src/code_generator/stmt.rs:198:40
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     (Type::Pair(_, ref Any))
[INFO] [stdout]     |                                        ^^^ help: convert the identifier to snake case: `any`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Any` should have a snake case name
[INFO] [stdout]    --> src/code_generator/stmt.rs:206:37
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     (Type::Pair(ref Any, _))
[INFO] [stdout]     |                                     ^^^ help: convert the identifier to snake case: `any`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<String, Infallible>
[INFO] [stdout]   --> src/semantic_checker/program.rs:12:65
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub static ref CURRENT_FUNCTION: Mutex<String> = Mutex::new("MAIN".parse().unwrap()); // current function
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<String, Infallible>
[INFO] [stdout]    --> src/semantic_checker/program.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |     CALLING_STACK.lock().unwrap().push("MAIN".parse().unwrap());
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/semantic_checker/program.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |         func_check(&mut scope, &mut function);
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 165 |         let _ = func_check(&mut scope, &mut function);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/symbol_table.rs:31:33
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn initialise(symbol_table: &mut SymbolTable) -> ScopeInfo {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn initialise(symbol_table: &mut SymbolTable) -> ScopeInfo<'_> {
[INFO] [stdout]    |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `wacc_36` (bin "wacc_36") due to 2 previous errors; 82 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/interpreter/stmt.rs:141:17
[INFO] [stdout]     |
[INFO] [stdout] 127 | /                 match pair_elem {
[INFO] [stdout] 128 | |                     PairElem::PairElemFst(boxed) => {
[INFO] [stdout] 129 | |                         let x = &boxed.0;
[INFO] [stdout] ...   |
[INFO] [stdout] 140 | |                 }
[INFO] [stdout]     | |_________________- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 141 |                   todo!()
[INFO] [stdout]     |                   ^^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scope`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         scope: &mut ScopeInfo,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scope`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `regs`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         regs: &mut Vec<Register>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_regs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/clib_functions.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/expr.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 let mut lhs_exp = &mut boxed_lhs.0;
[INFO] [stdout]    |                     ----^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/expr.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut rhs_exp = &mut boxed_rhs.0;
[INFO] [stdout]    |                     ----^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/code_generator/program.rs:46:13
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let mut scope = scope.make_scope(&mut self.param_symbol_table);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `scale` is never read
[INFO] [stdout]    --> src/code_generator/stmt.rs:121:33
[INFO] [stdout]     |
[INFO] [stdout] 121 |                 let mut scale = Scale::default();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/stmt.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |         aux: (),
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/code_generator/stmt.rs:745:9
[INFO] [stdout]     |
[INFO] [stdout] 745 |         aux: (),
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/semantic_checker/stmt.rs:40:21
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 let mut lhs_type = lhs.clone().0.analyse(scope);
[INFO] [stdout]    |                     ----^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scope`
[INFO] [stdout]  --> src/semantic_checker/util.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 |     fn func_analyse(&mut self, scope: &mut ScopeInfo) -> MessageResult<Type> {
[INFO] [stdout]   |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renamed_id`
[INFO] [stdout]   --> src/semantic_checker/util.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 |             Some((t, renamed_id)) => Ok(t.clone()),
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renamed_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/semantic_checker/util.rs:35:19
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Some((t, renamed_id)) => {
[INFO] [stdout]    |                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renamed_id`
[INFO] [stdout]   --> src/semantic_checker/util.rs:35:22
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Some((t, renamed_id)) => {
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renamed_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `register`
[INFO] [stdout]   --> src/symbol_table.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |             Some((t, register)) => {
[INFO] [stdout]    |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/interpreter/expr.rs:309:55
[INFO] [stdout]     |
[INFO] [stdout] 309 | ...                   let Evaluated::ArrayValue(mut next_arr) = arr_addr[used_index].clone()
[INFO] [stdout]     |                                                 ----^^^^^^^^
[INFO] [stdout]     |                                                 |
[INFO] [stdout]     |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/expr.rs:269:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/interpreter/expr.rs:287:21
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 let index = arr_elem.indices.iter().map(|(i, _)| i).collect::<Vec<_>>();
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]   --> src/interpreter/program.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         aux: Self::Input,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]   --> src/interpreter/stmt.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |         aux: Self::Input,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/interpreter/stmt.rs:91:29
[INFO] [stdout]    |
[INFO] [stdout] 91 |                         let mut array_pointer = &mut stack[total - num - 1].2;
[INFO] [stdout]    |                             ----^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `array_val`
[INFO] [stdout]   --> src/interpreter/stmt.rs:88:36
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 for (num, (id_, _, array_val)) in entry_stack.iter().rev().enumerate() {
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_array_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/interpreter/stmt.rs:129:29
[INFO] [stdout]     |
[INFO] [stdout] 129 |                         let x = &boxed.0;
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/interpreter/stmt.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |                         let x = &boxed.0;
[INFO] [stdout]     |                             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/stmt.rs:154:9
[INFO] [stdout]     |
[INFO] [stdout] 154 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `type_`
[INFO] [stdout]    --> src/interpreter/stmt.rs:175:24
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Stmt::Free(type_, object_) => {
[INFO] [stdout]     |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_type_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object_`
[INFO] [stdout]    --> src/interpreter/stmt.rs:175:31
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Stmt::Free(type_, object_) => {
[INFO] [stdout]     |                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_object_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aux`
[INFO] [stdout]    --> src/interpreter/stmt.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |         aux: Self::Input,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_aux`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/basic_optimise/mod.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |             BasicChar(x) => BasicInt((*x as u8) as i32),
[INFO] [stdout]     |             ------------ matches all the relevant values
[INFO] [stdout] 202 |             BasicChar(_) => NotBasic,
[INFO] [stdout]     |             ^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `wacc_36` (bin "wacc_36" test) due to 2 previous errors; 73 warnings emitted
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/basic_optimise/mod.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |             BasicInt(x) => BasicChar(char::from(*x as u8)),
[INFO] [stdout]     |             ----------- matches all the relevant values
[INFO] [stdout] 211 |             BasicInt(_) => NotBasic,
[INFO] [stdout]     |             ^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 178 |     let mut result = program_checker(&mut program);
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SIZE` is never used
[INFO] [stdout]   --> src/code_generator/mod.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const DEFAULT_SIZE: i32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Scaled` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:318:10
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub type Scaled<T> = (T, Scale);
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_scale` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn from_scale<T>(scaled: Scaled<T>) -> T {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_scale` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn get_scale<T>(scaled: Scaled<T>) -> Scale {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/code_generator/asm.rs:380:12
[INFO] [stdout]     |
[INFO] [stdout] 379 | impl MemoryReference {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 380 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Not`, `Or`, and `Ret` are never constructed
[INFO] [stdout]    --> src/code_generator/asm.rs:435:5
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub enum InstrType {
[INFO] [stdout]     |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 435 |     Not,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     Or,
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     Ret,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `InstrType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Comment` is never constructed
[INFO] [stdout]   --> src/code_generator/def_libary.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum Directives {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Comment(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Directives` 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 `CodeTarget` is never used
[INFO] [stdout]   --> src/code_generator/asm_creator.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum CodeTarget {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jump` is never used
[INFO] [stdout]    --> src/code_generator/asm_creator.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub fn jump(code: &mut GeneratedCode, label: &str) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_array` and `from_pair` are never used
[INFO] [stdout]   --> src/interpreter/expr.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Evaluated {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn from_array(given: Vec<Evaluated>) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn from_pair(given_left: Evaluated, given_right: Evaluated) -> Evaluated {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpret_program` is never used
[INFO] [stdout]  --> src/interpreter/interpret.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn interpret_program(ast: &mut Program) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_be_basic` is never used
[INFO] [stdout]  --> src/basic_optimise/expr.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl Expr {
[INFO] [stdout]   | --------- method in this implementation
[INFO] [stdout] 8 |     pub fn can_be_basic(&self) -> bool {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Any` should have a snake case name
[INFO] [stdout]    --> src/code_generator/stmt.rs:198:40
[INFO] [stdout]     |
[INFO] [stdout] 198 |                     (Type::Pair(_, ref Any))
[INFO] [stdout]     |                                        ^^^ help: convert the identifier to snake case: `any`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Any` should have a snake case name
[INFO] [stdout]    --> src/code_generator/stmt.rs:206:37
[INFO] [stdout]     |
[INFO] [stdout] 206 |                     (Type::Pair(ref Any, _))
[INFO] [stdout]     |                                     ^^^ help: convert the identifier to snake case: `any`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/parser/lexer.rs:241:20
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn work(s: &str) -> Vec<Token> {
[INFO] [stdout]     |                    ^^^^         ^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn work(s: &str) -> Vec<Token<'_>> {
[INFO] [stdout]     |                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<String, Infallible>
[INFO] [stdout]   --> src/semantic_checker/program.rs:12:65
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub static ref CURRENT_FUNCTION: Mutex<String> = Mutex::new("MAIN".parse().unwrap()); // current function
[INFO] [stdout]    |                                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<String, Infallible>
[INFO] [stdout]    --> src/semantic_checker/program.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |     CALLING_STACK.lock().unwrap().push("MAIN".parse().unwrap());
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/semantic_checker/program.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |         func_check(&mut scope, &mut function);
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 165 |         let _ = func_check(&mut scope, &mut function);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/symbol_table.rs:31:33
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn initialise(symbol_table: &mut SymbolTable) -> ScopeInfo {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn initialise(symbol_table: &mut SymbolTable) -> ScopeInfo<'_> {
[INFO] [stdout]    |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "5fcee12507e16990db9dba26123369b6eb84864abf8f35b74e66890e45cbb6e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5fcee12507e16990db9dba26123369b6eb84864abf8f35b74e66890e45cbb6e0", kill_on_drop: false }`
[INFO] [stdout] 5fcee12507e16990db9dba26123369b6eb84864abf8f35b74e66890e45cbb6e0
