[INFO] cloning repository https://github.com/sa318sha/chry_compiler
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sa318sha/chry_compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsa318sha%2Fchry_compiler", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsa318sha%2Fchry_compiler'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a4dd3170567e15324313e03728e449d43bf4afdc
[INFO] testing sa318sha/chry_compiler against try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsa318sha%2Fchry_compiler" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/sa318sha/chry_compiler
[INFO] finished tweaking git repo https://github.com/sa318sha/chry_compiler
[INFO] tweaked toml for git repo https://github.com/sa318sha/chry_compiler written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sa318sha/chry_compiler on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sa318sha/chry_compiler 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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dffcc9d96619fb22abba10c77d6401919da282c83d2279a82801eb23336cd1aa
[INFO] running `Command { std: "docker" "start" "-a" "dffcc9d96619fb22abba10c77d6401919da282c83d2279a82801eb23336cd1aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dffcc9d96619fb22abba10c77d6401919da282c83d2279a82801eb23336cd1aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dffcc9d96619fb22abba10c77d6401919da282c83d2279a82801eb23336cd1aa", kill_on_drop: false }`
[INFO] [stdout] dffcc9d96619fb22abba10c77d6401919da282c83d2279a82801eb23336cd1aa
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c6f4cc181a0536647d6a86b07de440058ca81f3bd062137d9a7af3058d92cb54
[INFO] running `Command { std: "docker" "start" "-a" "c6f4cc181a0536647d6a86b07de440058ca81f3bd062137d9a7af3058d92cb54", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rusty-fork v0.3.0
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling proptest v1.7.0
[INFO] [stderr]    Compiling chry_compiler v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[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 import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[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] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[INFO] [stdout]    |                       ^             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/block_builder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/block_builder.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/block_builder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction`, `SSAExpr`, and `TempId`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRInstr`, `Label`, `TempId`, `block_builder::BlockBuilder`, `cfg::CFG`, `literal::Literal`, `ssa_version::SSAVersion`, `token::Token`, and `types::Type`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::{block_builder::BlockBuilder, cfg::CFG, ssa_version::SSAVersion},
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     types::{
[INFO] [stdout] 6 |         hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 7 |         literal::Literal,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |         token::Token,
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 9 |         types::Type,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::TempId`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::hir_types::TempId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | use crate::types::literal::Literal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     types::hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/hir/hir.rs:132:27
[INFO] [stdout]     |
[INFO] [stdout] 132 |                 let (val, id) = self.lower_expr(typed_expr)?;
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:192:30
[INFO] [stdout]     |
[INFO] [stdout] 192 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:197:31
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:218:30
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/hir/hir.rs:218:37
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |             TypedExprKind::Call(name, token, typed_args) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:336:32
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:336:44
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr1`
[INFO] [stdout]    --> src/hir/hir.rs:336:51
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:337:32
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:337:39
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result_temp`
[INFO] [stdout]    --> src/hir/hir.rs:399:21
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let result_temp = self.fresh_temp();
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result_temp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:542:13
[INFO] [stdout]     |
[INFO] [stdout] 542 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:558:13
[INFO] [stdout]     |
[INFO] [stdout] 558 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:54:18
[INFO] [stdout]    |
[INFO] [stdout] 54 |             for (var, phi_node) in phis {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/lir/lir.rs:101:50
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let dests = moves.iter().map(|(dest, src)| dest).collect::<Vec<_>>();
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/lir/lir.rs:84:46
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn insert_phi_moves_for_block(&mut self, label: &Label, phis: &HashMap<String, PhiNode>) {
[INFO] [stdout]    |                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for (var, phi_node) in phis {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/lir/lir.rs:233:37
[INFO] [stdout]     |
[INFO] [stdout] 233 |             Terminator::Return(opt, ty) => {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:114:81
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn post_backward_scan_pass(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instr`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for (idx, instr) in block.instrs.iter().enumerate() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_instr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:141:75
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn backward_scan(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_defs`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let current_defs: HashMap<VirtualReg, LiveRange> = HashMap::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_defs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 |     for (idx, lr) in live_ranges.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/parser/parser.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Stmt::Print(expr) => {}
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param`
[INFO] [stdout]   --> src/parser/parser.rs:97:35
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_param`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_type`
[INFO] [stdout]   --> src/parser/parser.rs:97:54
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:123:26
[INFO] [stdout]     |
[INFO] [stdout] 123 |             Stmt::Return(token, expr) => {
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             Stmt::Break(token) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:169:32
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Expr::Call(callee, token, args) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |             Expr::Set(lhs, token, val) => {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         let mut expr = self.or()?;
[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: unused variable: `i`
[INFO] [stdout]   --> src/scanner/scanner.rs:92:22
[INFO] [stdout]    |
[INFO] [stdout] 92 |         if let Some((i, ch)) = x {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/ssa/block_builder.rs:37:14
[INFO] [stdout]    |
[INFO] [stdout] 37 |         for (label, block) in &self.block_instrs {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:54
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                      ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:59
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:53
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                     ^^^^ help: try ignoring the field: `dest: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:59
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_label`
[INFO] [stdout]   --> src/ssa/dominator.rs:48:21
[INFO] [stdout]    |
[INFO] [stdout] 48 |                 let parent_label = cfg.get_label(cfg.get_dfs_parents(v_hash).unwrap());
[INFO] [stdout]    |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:31
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                               ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:36
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                                    ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let x = self.pretty_print_typed_stmts(&typed_stmt, 0);
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/type_checker/type_checker.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut typed_var_type: Type;
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:145:32
[INFO] [stdout]     |
[INFO] [stdout] 145 |                     if let Err(error) = val {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |                 if let Err(e) = val {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:202:32
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:25
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:32
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:550:23
[INFO] [stdout]     |
[INFO] [stdout] 550 |             Expr::Get(token, value) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:603:39
[INFO] [stdout]     |
[INFO] [stdout] 603 |             TypedExprKind::Call(name, token, typed_exprs) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:728:30
[INFO] [stdout]     |
[INFO] [stdout] 728 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:31
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:38
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:30
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:37
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/types/literal.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |         Literal::Float(f, string) => string.clone(),
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> src/types/types.rs:56:27
[INFO] [stdout]    |
[INFO] [stdout] 56 |         Type::Function(_, items, _) => todo!(),
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                        ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fields`
[INFO] [stdout]   --> src/types/types.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                              ^^^^^^ help: try ignoring the field: `fields: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:58:22
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                      ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variants`
[INFO] [stdout]   --> src/types/types.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                            ^^^^^^^^ help: try ignoring the field: `variants: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             Literal::Bool(_) => Type::Bool,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 63 |             Literal::Int(_) => Type::Int,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 64 |             Literal::String(_) => Type::String,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 65 |             Literal::Float(_, _) => Type::Float, // if supported
[INFO] [stdout]    |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/hir_types.rs:111:39
[INFO] [stdout]     |
[INFO] [stdout] 111 |             HIRInstr::StoreVar { var, src, .. } => Some(var.lexeme.clone()), // this is the SSA-def
[INFO] [stdout]     |                                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/types/ssa_types.rs:223:34
[INFO] [stdout]     |
[INFO] [stdout] 223 |         Terminator::Return(None, ty) => "RETURN".to_string(),
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]    --> src/types/lir_types.rs:151:17
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 cond,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `cond: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `virtual_reg`
[INFO] [stdout]    --> src/types/lir_types.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |             LIRTerminator::Return(virtual_reg) => vec![],
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_virtual_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/types/lir_types.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             LIRTerminator::Jump(label) => vec![],
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `then_label`
[INFO] [stdout]    --> src/types/lir_types.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |                 then_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `then_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `else_label`
[INFO] [stdout]    --> src/types/lir_types.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 else_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `else_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                     ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:166:26
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                          ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:20
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                    ^^^ help: try ignoring the field: `lhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:25
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                         ^^^ help: try ignoring the field: `rhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:168:24
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:169:19
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:169:24
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:170:24
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             Neg { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             Inc { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             Dec { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:174:24
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:175:18
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                  ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:177:19
[INFO] [stdout]     |
[INFO] [stdout] 177 |             Not { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lir_programs`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:47:31
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lir_programs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fresh_temps` and `fresh_labels` are never used
[INFO] [stdout]    --> src/hir/hir.rs:540:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl HIR {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn fresh_temps(&mut self, amount: usize) -> Vec<TempId> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     fn fresh_labels(&mut self, amount: usize) -> Vec<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_to_instrs` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn lower_program_to_instrs(stmts: &[TypedStmt]) -> Result<Vec<HIRInstr>, Vec<String>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_report_errors` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn lower_program_report_errors(prog: &[TypedStmt]) -> Vec<HIRInstr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dummy_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn dummy_token(name: &str) -> Token {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn arb_token() -> impl Strategy<Value = Token> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal_expr` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn arb_literal_expr() -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn arb_literal() -> impl Strategy<Value = Literal> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_print_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn arb_print_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_large_body_program` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn arb_large_body_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_if_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn arb_nested_if_stmt(depth: u32) -> BoxedStrategy<TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_control_flow_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn arb_nested_control_flow_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_type` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn arb_type() -> impl Strategy<Value = Type> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_expr` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn arb_expr(depth: u32) -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_global_var` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn arb_global_var() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_func_body_stmt` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn arb_func_body_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_valid_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn arb_valid_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tempids` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn extract_tempids(instrs: &[HIRInstr]) -> HashSet<TempId> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_labels` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn extract_labels(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_label_targets` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn extract_label_targets(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LIRLowering {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     block_order: Vec<Label>, // inherited from SSAProgram
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `idx` is never read
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct LiveRangeAnalysis {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     idx: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pos_after` and `pos_before` are never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl LiveRangeAnalysis {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn pos_after(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn pos_before(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_after` is never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:300:4
[INFO] [stdout]     |
[INFO] [stdout] 300 | fn pos_after(label: &Label, instr_idx: usize, base_index: &HashMap<Label, usize>) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `match_identifier` is never used
[INFO] [stdout]    --> src/parser/parser.rs:798:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 798 |     fn match_identifier(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `end` is never read
[INFO] [stdout]   --> src/scanner/scanner.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Scanner {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     end: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Scanner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ssa/dominator.rs:293:8
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Dominator {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 293 |     fn get_label(&self, v: DFSNumber) -> DFSNumber {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn get_ancestor(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn get_immediate_dominator(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn assign_label(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn assign_ancestor(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn assign_semi_dominator(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     fn assign_immediate_dominator(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `anon_temp_counter` is never read
[INFO] [stdout]   --> src/ssa/ssa_state.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SSAState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 16 |     var_stack: HashMap<String, Vec<SSATempId>>,
[INFO] [stdout] 17 |     anon_temp_counter: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dom_test` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_dom_test<F: FnOnce(&CFG, &Dominator)>(instrs: Vec<HIRInstr>, check: F) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_dominator_tree_eq` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn assert_dominator_tree_eq(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_phi_insertion` is never used
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_phi_insertion(instrs: Vec<HIRInstr>, target: &Label) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationContext` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AllocationContext {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[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] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::lir::live_range_analyis::live_range_analysis`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::lir::live_range_analyis::live_range_analysis;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::lower_to_ssa_program`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::ssa::ssa::lower_to_ssa_program;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[INFO] [stdout]     |                            ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/block_builder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/block_builder.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/block_builder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction`, `SSAExpr`, and `TempId`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRInstr`, `Label`, `TempId`, `block_builder::BlockBuilder`, `cfg::CFG`, `literal::Literal`, `ssa_version::SSAVersion`, `token::Token`, and `types::Type`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::{block_builder::BlockBuilder, cfg::CFG, ssa_version::SSAVersion},
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     types::{
[INFO] [stdout] 6 |         hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 7 |         literal::Literal,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |         token::Token,
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 9 |         types::Type,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::TempId`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::hir_types::TempId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | use crate::types::literal::Literal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     types::hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::ssa::ssa::SSAContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/parser/parser.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Stmt::Print(expr) => {}
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param`
[INFO] [stdout]   --> src/parser/parser.rs:97:35
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_param`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_type`
[INFO] [stdout]   --> src/parser/parser.rs:97:54
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:123:26
[INFO] [stdout]     |
[INFO] [stdout] 123 |             Stmt::Return(token, expr) => {
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             Stmt::Break(token) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:169:32
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Expr::Call(callee, token, args) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |             Expr::Set(lhs, token, val) => {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         let mut expr = self.or()?;
[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: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:54:18
[INFO] [stdout]    |
[INFO] [stdout] 54 |             for (var, phi_node) in phis {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/lir/lir.rs:101:50
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let dests = moves.iter().map(|(dest, src)| dest).collect::<Vec<_>>();
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/lir/lir.rs:84:46
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn insert_phi_moves_for_block(&mut self, label: &Label, phis: &HashMap<String, PhiNode>) {
[INFO] [stdout]    |                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for (var, phi_node) in phis {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/lir/lir.rs:233:37
[INFO] [stdout]     |
[INFO] [stdout] 233 |             Terminator::Return(opt, ty) => {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:114:81
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn post_backward_scan_pass(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instr`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for (idx, instr) in block.instrs.iter().enumerate() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_instr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:141:75
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn backward_scan(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_defs`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let current_defs: HashMap<VirtualReg, LiveRange> = HashMap::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_defs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 |     for (idx, lr) in live_ranges.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/scanner/scanner.rs:92:22
[INFO] [stdout]    |
[INFO] [stdout] 92 |         if let Some((i, ch)) = x {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let x = self.pretty_print_typed_stmts(&typed_stmt, 0);
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/type_checker/type_checker.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut typed_var_type: Type;
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:145:32
[INFO] [stdout]     |
[INFO] [stdout] 145 |                     if let Err(error) = val {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |                 if let Err(e) = val {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:202:32
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:25
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:32
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:550:23
[INFO] [stdout]     |
[INFO] [stdout] 550 |             Expr::Get(token, value) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:603:39
[INFO] [stdout]     |
[INFO] [stdout] 603 |             TypedExprKind::Call(name, token, typed_exprs) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:728:30
[INFO] [stdout]     |
[INFO] [stdout] 728 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:31
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:38
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:30
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:37
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/types/literal.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |         Literal::Float(f, string) => string.clone(),
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> src/types/types.rs:56:27
[INFO] [stdout]    |
[INFO] [stdout] 56 |         Type::Function(_, items, _) => todo!(),
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                        ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fields`
[INFO] [stdout]   --> src/types/types.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                              ^^^^^^ help: try ignoring the field: `fields: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:58:22
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                      ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variants`
[INFO] [stdout]   --> src/types/types.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                            ^^^^^^^^ help: try ignoring the field: `variants: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             Literal::Bool(_) => Type::Bool,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 63 |             Literal::Int(_) => Type::Int,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 64 |             Literal::String(_) => Type::String,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 65 |             Literal::Float(_, _) => Type::Float, // if supported
[INFO] [stdout]    |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/hir_types.rs:111:39
[INFO] [stdout]     |
[INFO] [stdout] 111 |             HIRInstr::StoreVar { var, src, .. } => Some(var.lexeme.clone()), // this is the SSA-def
[INFO] [stdout]     |                                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/types/ssa_types.rs:223:34
[INFO] [stdout]     |
[INFO] [stdout] 223 |         Terminator::Return(None, ty) => "RETURN".to_string(),
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]    --> src/types/lir_types.rs:151:17
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 cond,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `cond: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `virtual_reg`
[INFO] [stdout]    --> src/types/lir_types.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |             LIRTerminator::Return(virtual_reg) => vec![],
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_virtual_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/types/lir_types.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             LIRTerminator::Jump(label) => vec![],
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `then_label`
[INFO] [stdout]    --> src/types/lir_types.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |                 then_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `then_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `else_label`
[INFO] [stdout]    --> src/types/lir_types.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 else_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `else_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                     ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:166:26
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                          ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:20
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                    ^^^ help: try ignoring the field: `lhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:25
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                         ^^^ help: try ignoring the field: `rhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:168:24
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:169:19
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:169:24
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:170:24
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             Neg { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             Inc { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             Dec { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:174:24
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:175:18
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                  ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:177:19
[INFO] [stdout]     |
[INFO] [stdout] 177 |             Not { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/hir/hir.rs:132:27
[INFO] [stdout]     |
[INFO] [stdout] 132 |                 let (val, id) = self.lower_expr(typed_expr)?;
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:192:30
[INFO] [stdout]     |
[INFO] [stdout] 192 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:197:31
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:218:30
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/hir/hir.rs:218:37
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |             TypedExprKind::Call(name, token, typed_args) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:336:32
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:336:44
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr1`
[INFO] [stdout]    --> src/hir/hir.rs:336:51
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:337:32
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:337:39
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result_temp`
[INFO] [stdout]    --> src/hir/hir.rs:399:21
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let result_temp = self.fresh_temp();
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result_temp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:542:13
[INFO] [stdout]     |
[INFO] [stdout] 542 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:558:13
[INFO] [stdout]     |
[INFO] [stdout] 558 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/ssa/block_builder.rs:37:14
[INFO] [stdout]    |
[INFO] [stdout] 37 |         for (label, block) in &self.block_instrs {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:54
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                      ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:59
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:53
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                     ^^^^ help: try ignoring the field: `dest: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:59
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_label`
[INFO] [stdout]   --> src/ssa/dominator.rs:48:21
[INFO] [stdout]    |
[INFO] [stdout] 48 |                 let parent_label = cfg.get_label(cfg.get_dfs_parents(v_hash).unwrap());
[INFO] [stdout]    |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:31
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                               ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:36
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                                    ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lir_programs`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:47:31
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lir_programs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]   --> src/main.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let depth = args.get(2);
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let mut ssa_contexts = lower_functions_to_ssa(&hir_lowerer.functions);
[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/main.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut lir_programs: Vec<lir::lir::LIRProgram> = lower_to_lir(ssa_contexts);
[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/main.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut live_ranges = live_range_multiple_analysis(&lir_programs);
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCAN_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const SCAN_LEVEL: i32 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSE_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const PARSE_LEVEL: i32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHECK_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const CHECK_LEVEL: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print_parser`, `parse_stmt_result`, `pretty_print_ast`, `pretty_print_expr`, and `match_identifier` are never used
[INFO] [stdout]    --> src/parser/parser.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn print_parser(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn parse_stmt_result(&mut self) -> ParseResult<Stmt> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     fn pretty_print_ast(&self, stmt: &Stmt, depth: usize) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn pretty_print_expr(&self, expr: &Expr, depth: usize) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     fn match_identifier(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Custom` is never constructed
[INFO] [stdout]   --> src/parser/parse_error.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Custom {
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` 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: field `block_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LIRLowering {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     block_order: Vec<Label>, // inherited from SSAProgram
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reverse_post_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct LIRProgram {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub reverse_post_order: Vec<Label>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `idx` is never read
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct LiveRangeAnalysis {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     idx: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pos_after` and `pos_before` are never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl LiveRangeAnalysis {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn pos_after(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn pos_before(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_after` is never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:300:4
[INFO] [stdout]     |
[INFO] [stdout] 300 | fn pos_after(label: &Label, instr_idx: usize, base_index: &HashMap<Label, usize>) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `end` is never read
[INFO] [stdout]   --> src/scanner/scanner.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Scanner {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     end: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Scanner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_tokens` is never used
[INFO] [stdout]   --> src/scanner/scanner.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl Scanner {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn list_tokens(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UnexpectedCharacter` is never constructed
[INFO] [stdout]  --> src/scanner/scan_error.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum ScanError {
[INFO] [stdout]   |          --------- variant in this enum
[INFO] [stdout] 3 |     UnexpectedCharacter {
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ScanError` 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: method `declare` is never used
[INFO] [stdout]   --> src/type_checker/symbol_table.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl SymbolTable {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn declare(&mut self, name: &str) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `debug_typedstmts`, `pretty_print_typed_expr`, and `pretty_print_typed_stmts` are never used
[INFO] [stdout]    --> src/type_checker/type_checker.rs:62:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl TypeChecker {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn debug_typedstmts(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 595 |     fn pretty_print_typed_expr(&self, expr: &TypedExpr, depth: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 672 |     fn pretty_print_typed_stmts(&self, stmt: &TypedStmt, depth: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ControlCondition`, `InvalidOperator`, `ReturnTypeMismatch`, `UnknownField`, and `UnknownMethod` are never constructed
[INFO] [stdout]   --> src/type_checker/type_error.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum TypeError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     ControlCondition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     InvalidOperator {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     ReturnTypeMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     UnknownField {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     UnknownMethod {
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Nil` is never constructed
[INFO] [stdout]  --> src/types/literal.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Literal {
[INFO] [stdout]   |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Nil,
[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: variants `Struct` and `Enum` are never constructed
[INFO] [stdout]   --> src/types/types.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Type {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |     Struct {
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     Enum {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Type` 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 `print_token`, `dummy_with_type`, `dummy_identifier`, and `dummy_keyword` are never used
[INFO] [stdout]   --> src/types/token.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Token {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn print_token(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn dummy_with_type(token_type: TokenType) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn dummy_identifier(name: &str) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn dummy_keyword(keyword: &str) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BoolLiteral` is never constructed
[INFO] [stdout]   --> src/types/token_type.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | pub enum TokenType {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     BoolLiteral,
[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: variant `Set` is never constructed
[INFO] [stdout]   --> src/types/expr.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum Expr {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     Set(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] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_expr` is never used
[INFO] [stdout]   --> src/types/expr.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn pretty_print_expr(expr: &Expr) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_stmt` is never used
[INFO] [stdout]   --> src/types/stmt.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn pretty_print_stmt(stmt: &Stmt) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Get` and `Grouping` are never constructed
[INFO] [stdout]   --> src/types/typed_expr.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum TypedExprKind {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     Get(Token, Box<TypedExpr>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Grouping(Box<TypedExpr>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypedExprKind` 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: function `pretty_print_typed_expr` is never used
[INFO] [stdout]   --> src/types/typed_expr.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn pretty_print_typed_expr(expr: &TypedExpr) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Class` is never constructed
[INFO] [stdout]   --> src/types/typed_stmt.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum TypedStmt {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Class(Token, Box<Vec<TypedStmt>>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypedStmt` 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: function `pretty_print_typed_stmt` is never used
[INFO] [stdout]   --> src/types/typed_stmt.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn pretty_print_typed_stmt(stmt: &TypedStmt) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/types/hir_types.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl TempId {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 12 |     pub fn name(&self) -> String {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_hir_global` is never used
[INFO] [stdout]    --> src/types/hir_types.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn pretty_print_hir_global(global: &HIRGlobal) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rename_uses`, `rename_def`, and `uses` are never used
[INFO] [stdout]   --> src/types/ssa_types.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl SSAInstr {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 43 |     pub fn rename_uses(&mut self, stack: &HashMap<String, Vec<SSATempId>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn rename_def(&mut self, new_id: SSATempId) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn uses(&self) -> Vec<SSATempId> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_basic_block` is never used
[INFO] [stdout]    --> src/types/ssa_types.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn pretty_print_basic_block(block: &BasicBlock) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `preds` is never read
[INFO] [stdout]   --> src/types/lir_types.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct LIRBasicBlock {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub preds: Vec<Label>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Nop` is never constructed
[INFO] [stdout]   --> src/types/lir_types.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum LIRInstr {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 99 |     Nop,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LIRInstr` 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 `X86Instr` is never used
[INFO] [stdout]  --> src/types/x86_64.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum X86Instr {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationContext` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AllocationContext {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpillSlot` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SpillSlot {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Condition` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum Condition {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operand` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:60:10
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum Operand {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Register` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum Register {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypedRegister` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct TypedRegister {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Word` and `DWord` are never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum RegSize {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 81 |     Byte,  // 8-bit (e.g., al)
[INFO] [stdout] 82 |     Word,  // 16-bit (e.g., ax)
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 83 |     DWord, // 32-bit (e.g., eax)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RegSize` 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: constant `CALLEE_SAVED` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub const CALLEE_SAVED: &[RegName] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALLOCATABLE` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:95:11
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub const ALLOCATABLE: &[RegName] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RegName` is never used
[INFO] [stdout]    --> src/types/x86_64.rs:114:10
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub enum RegName {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryOperand` is never constructed
[INFO] [stdout]    --> src/types/x86_64.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct MemoryOperand {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fresh_temps` and `fresh_labels` are never used
[INFO] [stdout]    --> src/hir/hir.rs:540:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl HIR {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn fresh_temps(&mut self, amount: usize) -> Vec<TempId> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     fn fresh_labels(&mut self, amount: usize) -> Vec<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/hir/hir_error.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum HIRError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout]  9 |     /// Attempt to use an undeclared variable
[INFO] [stdout] 10 |     UndefinedVariable {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     TypeMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     InvalidOperation {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     NotCallable {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     ArityMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     MisplacedControlFlow {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     DuplicateDefinition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HIRError` 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: function `lower_program_to_instrs` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn lower_program_to_instrs(stmts: &[TypedStmt]) -> Result<Vec<HIRInstr>, Vec<String>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_report_errors` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn lower_program_report_errors(prog: &[TypedStmt]) -> Vec<HIRInstr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dummy_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn dummy_token(name: &str) -> Token {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn arb_token() -> impl Strategy<Value = Token> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal_expr` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn arb_literal_expr() -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn arb_literal() -> impl Strategy<Value = Literal> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_print_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn arb_print_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_large_body_program` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn arb_large_body_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_if_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn arb_nested_if_stmt(depth: u32) -> BoxedStrategy<TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_control_flow_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn arb_nested_control_flow_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_type` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn arb_type() -> impl Strategy<Value = Type> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_expr` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn arb_expr(depth: u32) -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_global_var` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn arb_global_var() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_func_body_stmt` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn arb_func_body_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_valid_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn arb_valid_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tempids` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn extract_tempids(instrs: &[HIRInstr]) -> HashSet<TempId> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_labels` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn extract_labels(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_label_targets` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn extract_label_targets(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pretty_print_blocks` is never used
[INFO] [stdout]    --> src/ssa/block_builder.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl BlockBuilder {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn pretty_print_blocks(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_ssa_blocks` is never used
[INFO] [stdout]    --> src/ssa/block_builder.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn pretty_print_ssa_blocks(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `label` is never read
[INFO] [stdout]  --> src/ssa/cfg.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CFGNode {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] 9 |     pub label: Label,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dfs`, `pretty_print_dfs`, `get_index`, and `preds` are never used
[INFO] [stdout]    --> src/ssa/cfg.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl CFG {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn dfs(&mut self, entry_label: Label) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn pretty_print_dfs(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn get_index(&self, label: &Label) -> Option<&HashIndex> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn preds(&self, idx: usize) -> &[Label] {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ssa/dominator.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Dominator {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn pretty_print_buckets(&mut self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn pretty_print_semi_dominators(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn pretty_print_immediate_dominators(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn pretty_print_dominator_tree(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn pretty_print_dominance_frontier(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     fn get_label(&self, v: DFSNumber) -> DFSNumber {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn get_ancestor(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn get_immediate_dominator(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn assign_label(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn assign_ancestor(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn assign_semi_dominator(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     fn assign_immediate_dominator(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `anon_temp_counter` is never read
[INFO] [stdout]   --> src/ssa/ssa_state.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SSAState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 16 |     var_stack: HashMap<String, Vec<SSATempId>>,
[INFO] [stdout] 17 |     anon_temp_counter: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dom_test` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_dom_test<F: FnOnce(&CFG, &Dominator)>(instrs: Vec<HIRInstr>, check: F) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_dominator_tree_eq` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn assert_dominator_tree_eq(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_phi_insertion` is never used
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_phi_insertion(instrs: Vec<HIRInstr>, target: &Label) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterAllocation` is never constructed
[INFO] [stdout]   --> src/assembly/register_allocation.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RegisterAllocation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_allocate_x86_64` is never used
[INFO] [stdout]   --> src/assembly/register_allocation.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn register_allocate_x86_64(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `linear_scan`, `expire_old_ranges`, `spill`, and `choose_free_reg` are never used
[INFO] [stdout]    --> src/assembly/register_allocation.rs:37:8
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl RegisterAllocation {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  37 |     fn new() -> RegisterAllocation {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     fn expire_old_ranges(&mut self, idx: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     fn spill(&mut self, live_range: &LiveRange) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn choose_free_reg(&mut self) -> RegName {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpillSlotAllocator` is never constructed
[INFO] [stdout]  --> src/assembly/spill_slot_allocator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SpillSlotAllocator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fresh` is never used
[INFO] [stdout]  --> src/assembly/spill_slot_allocator.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl SpillSlotAllocator {
[INFO] [stdout]   | ----------------------- method in this implementation
[INFO] [stdout] 9 |     pub fn fresh(&mut self, name: &RegName, size: &RegSize) -> SpillSlot {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.03s
[INFO] running `Command { std: "docker" "inspect" "c6f4cc181a0536647d6a86b07de440058ca81f3bd062137d9a7af3058d92cb54", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c6f4cc181a0536647d6a86b07de440058ca81f3bd062137d9a7af3058d92cb54", kill_on_drop: false }`
[INFO] [stdout] c6f4cc181a0536647d6a86b07de440058ca81f3bd062137d9a7af3058d92cb54
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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" "-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 50a260392123c179200fe87c8747f7481903fff712e63a31d00cae1b478dbe47
[INFO] running `Command { std: "docker" "start" "-a" "50a260392123c179200fe87c8747f7481903fff712e63a31d00cae1b478dbe47", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[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 import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[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] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[INFO] [stdout]    |                       ^             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/block_builder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/block_builder.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/block_builder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction`, `SSAExpr`, and `TempId`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRInstr`, `Label`, `TempId`, `block_builder::BlockBuilder`, `cfg::CFG`, `literal::Literal`, `ssa_version::SSAVersion`, `token::Token`, and `types::Type`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::{block_builder::BlockBuilder, cfg::CFG, ssa_version::SSAVersion},
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     types::{
[INFO] [stdout] 6 |         hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 7 |         literal::Literal,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |         token::Token,
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 9 |         types::Type,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::TempId`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::hir_types::TempId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | use crate::types::literal::Literal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     types::hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/hir/hir.rs:132:27
[INFO] [stdout]     |
[INFO] [stdout] 132 |                 let (val, id) = self.lower_expr(typed_expr)?;
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:192:30
[INFO] [stdout]     |
[INFO] [stdout] 192 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:197:31
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:218:30
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/hir/hir.rs:218:37
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |             TypedExprKind::Call(name, token, typed_args) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:336:32
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:336:44
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr1`
[INFO] [stdout]    --> src/hir/hir.rs:336:51
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:337:32
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:337:39
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result_temp`
[INFO] [stdout]    --> src/hir/hir.rs:399:21
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let result_temp = self.fresh_temp();
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result_temp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:542:13
[INFO] [stdout]     |
[INFO] [stdout] 542 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:558:13
[INFO] [stdout]     |
[INFO] [stdout] 558 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:54:18
[INFO] [stdout]    |
[INFO] [stdout] 54 |             for (var, phi_node) in phis {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/lir/lir.rs:101:50
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let dests = moves.iter().map(|(dest, src)| dest).collect::<Vec<_>>();
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/lir/lir.rs:84:46
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn insert_phi_moves_for_block(&mut self, label: &Label, phis: &HashMap<String, PhiNode>) {
[INFO] [stdout]    |                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for (var, phi_node) in phis {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/lir/lir.rs:233:37
[INFO] [stdout]     |
[INFO] [stdout] 233 |             Terminator::Return(opt, ty) => {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:114:81
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn post_backward_scan_pass(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instr`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for (idx, instr) in block.instrs.iter().enumerate() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_instr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:141:75
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn backward_scan(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_defs`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let current_defs: HashMap<VirtualReg, LiveRange> = HashMap::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_defs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 |     for (idx, lr) in live_ranges.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/parser/parser.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Stmt::Print(expr) => {}
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param`
[INFO] [stdout]   --> src/parser/parser.rs:97:35
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_param`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_type`
[INFO] [stdout]   --> src/parser/parser.rs:97:54
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:123:26
[INFO] [stdout]     |
[INFO] [stdout] 123 |             Stmt::Return(token, expr) => {
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             Stmt::Break(token) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:169:32
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Expr::Call(callee, token, args) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |             Expr::Set(lhs, token, val) => {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         let mut expr = self.or()?;
[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: unused variable: `i`
[INFO] [stdout]   --> src/scanner/scanner.rs:92:22
[INFO] [stdout]    |
[INFO] [stdout] 92 |         if let Some((i, ch)) = x {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/ssa/block_builder.rs:37:14
[INFO] [stdout]    |
[INFO] [stdout] 37 |         for (label, block) in &self.block_instrs {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:54
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                      ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:59
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:53
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                     ^^^^ help: try ignoring the field: `dest: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:59
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_label`
[INFO] [stdout]   --> src/ssa/dominator.rs:48:21
[INFO] [stdout]    |
[INFO] [stdout] 48 |                 let parent_label = cfg.get_label(cfg.get_dfs_parents(v_hash).unwrap());
[INFO] [stdout]    |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:31
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                               ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:36
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                                    ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let x = self.pretty_print_typed_stmts(&typed_stmt, 0);
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/type_checker/type_checker.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut typed_var_type: Type;
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:145:32
[INFO] [stdout]     |
[INFO] [stdout] 145 |                     if let Err(error) = val {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |                 if let Err(e) = val {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:202:32
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:25
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:32
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:550:23
[INFO] [stdout]     |
[INFO] [stdout] 550 |             Expr::Get(token, value) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:603:39
[INFO] [stdout]     |
[INFO] [stdout] 603 |             TypedExprKind::Call(name, token, typed_exprs) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:728:30
[INFO] [stdout]     |
[INFO] [stdout] 728 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:31
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:38
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:30
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:37
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/types/literal.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |         Literal::Float(f, string) => string.clone(),
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> src/types/types.rs:56:27
[INFO] [stdout]    |
[INFO] [stdout] 56 |         Type::Function(_, items, _) => todo!(),
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                        ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fields`
[INFO] [stdout]   --> src/types/types.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                              ^^^^^^ help: try ignoring the field: `fields: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:58:22
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                      ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variants`
[INFO] [stdout]   --> src/types/types.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                            ^^^^^^^^ help: try ignoring the field: `variants: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             Literal::Bool(_) => Type::Bool,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 63 |             Literal::Int(_) => Type::Int,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 64 |             Literal::String(_) => Type::String,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 65 |             Literal::Float(_, _) => Type::Float, // if supported
[INFO] [stdout]    |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/hir_types.rs:111:39
[INFO] [stdout]     |
[INFO] [stdout] 111 |             HIRInstr::StoreVar { var, src, .. } => Some(var.lexeme.clone()), // this is the SSA-def
[INFO] [stdout]     |                                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/types/ssa_types.rs:223:34
[INFO] [stdout]     |
[INFO] [stdout] 223 |         Terminator::Return(None, ty) => "RETURN".to_string(),
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]    --> src/types/lir_types.rs:151:17
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 cond,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `cond: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `virtual_reg`
[INFO] [stdout]    --> src/types/lir_types.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |             LIRTerminator::Return(virtual_reg) => vec![],
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_virtual_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/types/lir_types.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             LIRTerminator::Jump(label) => vec![],
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `then_label`
[INFO] [stdout]    --> src/types/lir_types.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |                 then_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `then_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `else_label`
[INFO] [stdout]    --> src/types/lir_types.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 else_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `else_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                     ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:166:26
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                          ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:20
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                    ^^^ help: try ignoring the field: `lhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:25
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                         ^^^ help: try ignoring the field: `rhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:168:24
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:169:19
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:169:24
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:170:24
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             Neg { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             Inc { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             Dec { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:174:24
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:175:18
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                  ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling chry_compiler v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:177:19
[INFO] [stdout]     |
[INFO] [stdout] 177 |             Not { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lir_programs`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:47:31
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lir_programs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fresh_temps` and `fresh_labels` are never used
[INFO] [stdout]    --> src/hir/hir.rs:540:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl HIR {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn fresh_temps(&mut self, amount: usize) -> Vec<TempId> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     fn fresh_labels(&mut self, amount: usize) -> Vec<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_to_instrs` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn lower_program_to_instrs(stmts: &[TypedStmt]) -> Result<Vec<HIRInstr>, Vec<String>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_report_errors` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn lower_program_report_errors(prog: &[TypedStmt]) -> Vec<HIRInstr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dummy_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn dummy_token(name: &str) -> Token {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn arb_token() -> impl Strategy<Value = Token> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal_expr` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn arb_literal_expr() -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn arb_literal() -> impl Strategy<Value = Literal> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_print_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn arb_print_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_large_body_program` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn arb_large_body_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_if_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn arb_nested_if_stmt(depth: u32) -> BoxedStrategy<TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_control_flow_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn arb_nested_control_flow_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_type` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn arb_type() -> impl Strategy<Value = Type> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_expr` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn arb_expr(depth: u32) -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_global_var` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn arb_global_var() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_func_body_stmt` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn arb_func_body_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_valid_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn arb_valid_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tempids` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn extract_tempids(instrs: &[HIRInstr]) -> HashSet<TempId> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_labels` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn extract_labels(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_label_targets` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn extract_label_targets(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `block_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LIRLowering {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     block_order: Vec<Label>, // inherited from SSAProgram
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `idx` is never read
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct LiveRangeAnalysis {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     idx: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pos_after` and `pos_before` are never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl LiveRangeAnalysis {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn pos_after(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn pos_before(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_after` is never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:300:4
[INFO] [stdout]     |
[INFO] [stdout] 300 | fn pos_after(label: &Label, instr_idx: usize, base_index: &HashMap<Label, usize>) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `match_identifier` is never used
[INFO] [stdout]    --> src/parser/parser.rs:798:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 798 |     fn match_identifier(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `end` is never read
[INFO] [stdout]   --> src/scanner/scanner.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Scanner {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     end: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Scanner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ssa/dominator.rs:293:8
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Dominator {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 293 |     fn get_label(&self, v: DFSNumber) -> DFSNumber {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn get_ancestor(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn get_immediate_dominator(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn assign_label(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn assign_ancestor(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn assign_semi_dominator(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     fn assign_immediate_dominator(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `anon_temp_counter` is never read
[INFO] [stdout]   --> src/ssa/ssa_state.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SSAState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 16 |     var_stack: HashMap<String, Vec<SSATempId>>,
[INFO] [stdout] 17 |     anon_temp_counter: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dom_test` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_dom_test<F: FnOnce(&CFG, &Dominator)>(instrs: Vec<HIRInstr>, check: F) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_dominator_tree_eq` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn assert_dominator_tree_eq(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_phi_insertion` is never used
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_phi_insertion(instrs: Vec<HIRInstr>, target: &Label) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationContext` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AllocationContext {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[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] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::lir::live_range_analyis::live_range_analysis`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::lir::live_range_analyis::live_range_analysis;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::lower_to_ssa_program`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::ssa::ssa::lower_to_ssa_program;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[INFO] [stdout]     |                            ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/block_builder.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/block_builder.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/block_builder.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction`, `SSAExpr`, and `TempId`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRInstr`, `Label`, `TempId`, `block_builder::BlockBuilder`, `cfg::CFG`, `literal::Literal`, `ssa_version::SSAVersion`, `token::Token`, and `types::Type`
[INFO] [stdout]  --> src/ssa/cfg_test.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::{block_builder::BlockBuilder, cfg::CFG, ssa_version::SSAVersion},
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     types::{
[INFO] [stdout] 6 |         hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 7 |         literal::Literal,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |         token::Token,
[INFO] [stdout]   |         ^^^^^^^^^^^^
[INFO] [stdout] 9 |         types::Type,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod cfg_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::TempId`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::hir_types::TempId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/ssa/mod.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | mod dominator_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/dominator_test.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | mod dominator_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | use crate::types::literal::Literal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::token::Token`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | use crate::types::token::Token;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | use crate::types::types::Type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:12:41
[INFO] [stdout]    |
[INFO] [stdout] 12 |     types::hir_types::{HIRInstr, Label, TempId},
[INFO] [stdout]    |                                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/ssa/mod.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod phi_insertion_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::ssa::ssa::SSAContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]   --> src/parser/parser.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             Stmt::Print(expr) => {}
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `param`
[INFO] [stdout]   --> src/parser/parser.rs:97:35
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_param`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `return_type`
[INFO] [stdout]   --> src/parser/parser.rs:97:54
[INFO] [stdout]    |
[INFO] [stdout] 97 |             Stmt::Function(token, param, func_stmts, return_type) => {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_return_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:123:26
[INFO] [stdout]     |
[INFO] [stdout] 123 |             Stmt::Return(token, expr) => {
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:129:25
[INFO] [stdout]     |
[INFO] [stdout] 129 |             Stmt::Break(token) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:169:32
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Expr::Call(callee, token, args) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser/parser.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |             Expr::Set(lhs, token, val) => {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser/parser.rs:544:13
[INFO] [stdout]     |
[INFO] [stdout] 544 |         let mut expr = self.or()?;
[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: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:54:18
[INFO] [stdout]    |
[INFO] [stdout] 54 |             for (var, phi_node) in phis {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/lir/lir.rs:101:50
[INFO] [stdout]     |
[INFO] [stdout] 101 |             let dests = moves.iter().map(|(dest, src)| dest).collect::<Vec<_>>();
[INFO] [stdout]     |                                                  ^^^ help: if this is intentional, prefix it with an underscore: `_src`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/lir/lir.rs:84:46
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn insert_phi_moves_for_block(&mut self, label: &Label, phis: &HashMap<String, PhiNode>) {
[INFO] [stdout]    |                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `var`
[INFO] [stdout]   --> src/lir/lir.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |         for (var, phi_node) in phis {
[INFO] [stdout]    |              ^^^ help: if this is intentional, prefix it with an underscore: `_var`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/lir/lir.rs:233:37
[INFO] [stdout]     |
[INFO] [stdout] 233 |             Terminator::Return(opt, ty) => {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:114:81
[INFO] [stdout]     |
[INFO] [stdout] 114 |     fn post_backward_scan_pass(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instr`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for (idx, instr) in block.instrs.iter().enumerate() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_instr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:141:75
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn backward_scan(&mut self, block: &LIRBasicBlock, label: &Label, curr_idx: usize) {
[INFO] [stdout]     |                                                                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_defs`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let current_defs: HashMap<VirtualReg, LiveRange> = HashMap::new();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_defs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 |     for (idx, lr) in live_ranges.iter().enumerate() {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/scanner/scanner.rs:92:22
[INFO] [stdout]    |
[INFO] [stdout] 92 |         if let Some((i, ch)) = x {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             let x = self.pretty_print_typed_stmts(&typed_stmt, 0);
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/type_checker/type_checker.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let mut typed_var_type: Type;
[INFO] [stdout]    |                     ----^^^^^^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:145:32
[INFO] [stdout]     |
[INFO] [stdout] 145 |                     if let Err(error) = val {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:184:28
[INFO] [stdout]     |
[INFO] [stdout] 184 |                 if let Err(e) = val {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:202:32
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if let Err(e) = val {
[INFO] [stdout]     |                                ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:25
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:359:32
[INFO] [stdout]     |
[INFO] [stdout] 359 |             Stmt::Class(token, stmts) => {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:550:23
[INFO] [stdout]     |
[INFO] [stdout] 550 |             Expr::Get(token, value) => {
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:603:39
[INFO] [stdout]     |
[INFO] [stdout] 603 |             TypedExprKind::Call(name, token, typed_exprs) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:728:30
[INFO] [stdout]     |
[INFO] [stdout] 728 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:31
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:731:38
[INFO] [stdout]     |
[INFO] [stdout] 731 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:30
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/type_checker/type_checker.rs:734:37
[INFO] [stdout]     |
[INFO] [stdout] 734 |             TypedStmt::Class(token, typed_stmts) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/types/literal.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 |         Literal::Float(f, string) => string.clone(),
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> src/types/types.rs:56:27
[INFO] [stdout]    |
[INFO] [stdout] 56 |         Type::Function(_, items, _) => todo!(),
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                        ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fields`
[INFO] [stdout]   --> src/types/types.rs:57:30
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Type::Struct { name, fields } => todo!(),
[INFO] [stdout]    |                              ^^^^^^ help: try ignoring the field: `fields: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]   --> src/types/types.rs:58:22
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                      ^^^^ help: try ignoring the field: `name: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `variants`
[INFO] [stdout]   --> src/types/types.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |         Type::Enum { name, variants } => todo!(),
[INFO] [stdout]    |                            ^^^^^^^^ help: try ignoring the field: `variants: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/types/expr.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             Literal::Bool(_) => Type::Bool,
[INFO] [stdout]    |             ---------------- matches some of the same values
[INFO] [stdout] 63 |             Literal::Int(_) => Type::Int,
[INFO] [stdout]    |             --------------- matches some of the same values
[INFO] [stdout] 64 |             Literal::String(_) => Type::String,
[INFO] [stdout]    |             ------------------ matches some of the same values
[INFO] [stdout] 65 |             Literal::Float(_, _) => Type::Float, // if supported
[INFO] [stdout]    |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 68 |             _ => todo!("Other literal types"),
[INFO] [stdout]    |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/hir_types.rs:111:39
[INFO] [stdout]     |
[INFO] [stdout] 111 |             HIRInstr::StoreVar { var, src, .. } => Some(var.lexeme.clone()), // this is the SSA-def
[INFO] [stdout]     |                                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/types/ssa_types.rs:223:34
[INFO] [stdout]     |
[INFO] [stdout] 223 |         Terminator::Return(None, ty) => "RETURN".to_string(),
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cond`
[INFO] [stdout]    --> src/types/lir_types.rs:151:17
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 cond,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `cond: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `virtual_reg`
[INFO] [stdout]    --> src/types/lir_types.rs:155:35
[INFO] [stdout]     |
[INFO] [stdout] 155 |             LIRTerminator::Return(virtual_reg) => vec![],
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_virtual_reg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/types/lir_types.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             LIRTerminator::Jump(label) => vec![],
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `then_label`
[INFO] [stdout]    --> src/types/lir_types.rs:163:17
[INFO] [stdout]     |
[INFO] [stdout] 163 |                 then_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `then_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `else_label`
[INFO] [stdout]    --> src/types/lir_types.rs:164:17
[INFO] [stdout]     |
[INFO] [stdout] 164 |                 else_label,
[INFO] [stdout]     |                 ^^^^^^^^^^ help: try ignoring the field: `else_label: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:166:21
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                     ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:166:26
[INFO] [stdout]     |
[INFO] [stdout] 166 |             MovZX { dst, src } => todo!(),
[INFO] [stdout]     |                          ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:20
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                    ^^^ help: try ignoring the field: `lhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]    --> src/types/x86_64.rs:167:25
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Test { lhs, rhs } => todo!(),
[INFO] [stdout]     |                         ^^^ help: try ignoring the field: `rhs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:168:24
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Shl { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:169:19
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:169:24
[INFO] [stdout]     |
[INFO] [stdout] 169 |             Shr { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:170:19
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:170:24
[INFO] [stdout]     |
[INFO] [stdout] 170 |             Sar { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             Neg { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             Inc { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             Dec { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:174:24
[INFO] [stdout]     |
[INFO] [stdout] 174 |             And { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:175:18
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                  ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |             Or { dst, src } => todo!(),
[INFO] [stdout]     |                       ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/types/x86_64.rs:176:24
[INFO] [stdout]     |
[INFO] [stdout] 176 |             Xor { dst, src } => todo!(),
[INFO] [stdout]     |                        ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dst`
[INFO] [stdout]    --> src/types/x86_64.rs:177:19
[INFO] [stdout]     |
[INFO] [stdout] 177 |             Not { dst } => todo!(),
[INFO] [stdout]     |                   ^^^ help: try ignoring the field: `dst: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/hir/hir.rs:132:27
[INFO] [stdout]     |
[INFO] [stdout] 132 |                 let (val, id) = self.lower_expr(typed_expr)?;
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:192:30
[INFO] [stdout]     |
[INFO] [stdout] 192 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:197:31
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:218:30
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/hir/hir.rs:218:37
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |             TypedExprKind::Call(name, token, typed_args) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:336:32
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:336:44
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr1`
[INFO] [stdout]    --> src/hir/hir.rs:336:51
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:337:32
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:337:39
[INFO] [stdout]     |
[INFO] [stdout] 337 |             TypedExprKind::Get(token, typed_expr) => todo!(),
[INFO] [stdout]     |                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result_temp`
[INFO] [stdout]    --> src/hir/hir.rs:399:21
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let result_temp = self.fresh_temp();
[INFO] [stdout]     |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result_temp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:542:13
[INFO] [stdout]     |
[INFO] [stdout] 542 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/hir/hir.rs:558:13
[INFO] [stdout]     |
[INFO] [stdout] 558 |         for i in 0..amount {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]   --> src/ssa/block_builder.rs:37:14
[INFO] [stdout]    |
[INFO] [stdout] 37 |         for (label, block) in &self.block_instrs {
[INFO] [stdout]    |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:54
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                      ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:166:59
[INFO] [stdout]     |
[INFO] [stdout] 166 |                     if let HIRInstr::StoreVar { var, src, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dest`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:53
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                     ^^^^ help: try ignoring the field: `dest: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/block_builder.rs:171:59
[INFO] [stdout]     |
[INFO] [stdout] 171 |                     if let HIRInstr::LoadVar { var, dest, ty } = instr {
[INFO] [stdout]     |                                                           ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parent_label`
[INFO] [stdout]   --> src/ssa/dominator.rs:48:21
[INFO] [stdout]    |
[INFO] [stdout] 48 |                 let parent_label = cfg.get_label(cfg.get_dfs_parents(v_hash).unwrap());
[INFO] [stdout]    |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `src`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:31
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                               ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ty`
[INFO] [stdout]    --> src/ssa/ssa_state.rs:311:36
[INFO] [stdout]     |
[INFO] [stdout] 311 |             HIRInstr::Print { src, ty } => None,
[INFO] [stdout]     |                                    ^^ help: try ignoring the field: `ty: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lir_programs`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:47:31
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]    |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_lir_programs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]   --> src/main.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |     let depth = args.get(2);
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let mut ssa_contexts = lower_functions_to_ssa(&hir_lowerer.functions);
[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/main.rs:99:9
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let mut lir_programs: Vec<lir::lir::LIRProgram> = lower_to_lir(ssa_contexts);
[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/main.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     let mut live_ranges = live_range_multiple_analysis(&lir_programs);
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCAN_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const SCAN_LEVEL: i32 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSE_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const PARSE_LEVEL: i32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHECK_LEVEL` is never used
[INFO] [stdout]   --> src/main.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const CHECK_LEVEL: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print_parser`, `parse_stmt_result`, `pretty_print_ast`, `pretty_print_expr`, and `match_identifier` are never used
[INFO] [stdout]    --> src/parser/parser.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn print_parser(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn parse_stmt_result(&mut self) -> ParseResult<Stmt> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     fn pretty_print_ast(&self, stmt: &Stmt, depth: usize) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn pretty_print_expr(&self, expr: &Expr, depth: usize) -> () {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 798 |     fn match_identifier(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Custom` is never constructed
[INFO] [stdout]   --> src/parser/parse_error.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Custom {
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` 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: field `block_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct LIRLowering {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     block_order: Vec<Label>, // inherited from SSAProgram
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `reverse_post_order` is never read
[INFO] [stdout]   --> src/lir/lir.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct LIRProgram {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub reverse_post_order: Vec<Label>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `idx` is never read
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct LiveRangeAnalysis {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     idx: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pos_after` and `pos_before` are never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl LiveRangeAnalysis {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn pos_after(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn pos_before(i: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_after` is never used
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:300:4
[INFO] [stdout]     |
[INFO] [stdout] 300 | fn pos_after(label: &Label, instr_idx: usize, base_index: &HashMap<Label, usize>) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `end` is never read
[INFO] [stdout]   --> src/scanner/scanner.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Scanner {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     end: usize,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Scanner` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list_tokens` is never used
[INFO] [stdout]   --> src/scanner/scanner.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl Scanner {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn list_tokens(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UnexpectedCharacter` is never constructed
[INFO] [stdout]  --> src/scanner/scan_error.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum ScanError {
[INFO] [stdout]   |          --------- variant in this enum
[INFO] [stdout] 3 |     UnexpectedCharacter {
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ScanError` 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: method `declare` is never used
[INFO] [stdout]   --> src/type_checker/symbol_table.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl SymbolTable {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn declare(&mut self, name: &str) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `debug_typedstmts`, `pretty_print_typed_expr`, and `pretty_print_typed_stmts` are never used
[INFO] [stdout]    --> src/type_checker/type_checker.rs:62:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl TypeChecker {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn debug_typedstmts(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 595 |     fn pretty_print_typed_expr(&self, expr: &TypedExpr, depth: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 672 |     fn pretty_print_typed_stmts(&self, stmt: &TypedStmt, depth: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ControlCondition`, `InvalidOperator`, `ReturnTypeMismatch`, `UnknownField`, and `UnknownMethod` are never constructed
[INFO] [stdout]   --> src/type_checker/type_error.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum TypeError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     ControlCondition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     InvalidOperator {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     ReturnTypeMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     UnknownField {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     UnknownMethod {
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Nil` is never constructed
[INFO] [stdout]  --> src/types/literal.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Literal {
[INFO] [stdout]   |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Nil,
[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: variants `Struct` and `Enum` are never constructed
[INFO] [stdout]   --> src/types/types.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Type {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |     Struct {
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     Enum {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Type` 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 `print_token`, `dummy_with_type`, `dummy_identifier`, and `dummy_keyword` are never used
[INFO] [stdout]   --> src/types/token.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Token {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn print_token(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn dummy_with_type(token_type: TokenType) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn dummy_identifier(name: &str) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn dummy_keyword(keyword: &str) -> Token {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BoolLiteral` is never constructed
[INFO] [stdout]   --> src/types/token_type.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | pub enum TokenType {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     BoolLiteral,
[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: variant `Set` is never constructed
[INFO] [stdout]   --> src/types/expr.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum Expr {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     Set(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] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_expr` is never used
[INFO] [stdout]   --> src/types/expr.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn pretty_print_expr(expr: &Expr) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_stmt` is never used
[INFO] [stdout]   --> src/types/stmt.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn pretty_print_stmt(stmt: &Stmt) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Get` and `Grouping` are never constructed
[INFO] [stdout]   --> src/types/typed_expr.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum TypedExprKind {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     Get(Token, Box<TypedExpr>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Grouping(Box<TypedExpr>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypedExprKind` 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: function `pretty_print_typed_expr` is never used
[INFO] [stdout]   --> src/types/typed_expr.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn pretty_print_typed_expr(expr: &TypedExpr) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Class` is never constructed
[INFO] [stdout]   --> src/types/typed_stmt.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum TypedStmt {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Class(Token, Box<Vec<TypedStmt>>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypedStmt` 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: function `pretty_print_typed_stmt` is never used
[INFO] [stdout]   --> src/types/typed_stmt.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn pretty_print_typed_stmt(stmt: &TypedStmt) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/types/hir_types.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl TempId {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 12 |     pub fn name(&self) -> String {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_hir_global` is never used
[INFO] [stdout]    --> src/types/hir_types.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn pretty_print_hir_global(global: &HIRGlobal) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rename_uses`, `rename_def`, and `uses` are never used
[INFO] [stdout]   --> src/types/ssa_types.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl SSAInstr {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 43 |     pub fn rename_uses(&mut self, stack: &HashMap<String, Vec<SSATempId>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn rename_def(&mut self, new_id: SSATempId) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn uses(&self) -> Vec<SSATempId> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_basic_block` is never used
[INFO] [stdout]    --> src/types/ssa_types.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn pretty_print_basic_block(block: &BasicBlock) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `preds` is never read
[INFO] [stdout]   --> src/types/lir_types.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct LIRBasicBlock {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub preds: Vec<Label>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Nop` is never constructed
[INFO] [stdout]   --> src/types/lir_types.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum LIRInstr {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 99 |     Nop,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LIRInstr` 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 `X86Instr` is never used
[INFO] [stdout]  --> src/types/x86_64.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum X86Instr {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AllocationContext` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct AllocationContext {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpillSlot` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct SpillSlot {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Condition` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum Condition {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operand` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:60:10
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum Operand {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Register` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum Register {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypedRegister` is never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct TypedRegister {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Word` and `DWord` are never constructed
[INFO] [stdout]   --> src/types/x86_64.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum RegSize {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] 81 |     Byte,  // 8-bit (e.g., al)
[INFO] [stdout] 82 |     Word,  // 16-bit (e.g., ax)
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 83 |     DWord, // 32-bit (e.g., eax)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RegSize` 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: constant `CALLEE_SAVED` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:87:11
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub const CALLEE_SAVED: &[RegName] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALLOCATABLE` is never used
[INFO] [stdout]   --> src/types/x86_64.rs:95:11
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub const ALLOCATABLE: &[RegName] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RegName` is never used
[INFO] [stdout]    --> src/types/x86_64.rs:114:10
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub enum RegName {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryOperand` is never constructed
[INFO] [stdout]    --> src/types/x86_64.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct MemoryOperand {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fresh_temps` and `fresh_labels` are never used
[INFO] [stdout]    --> src/hir/hir.rs:540:8
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl HIR {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn fresh_temps(&mut self, amount: usize) -> Vec<TempId> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     fn fresh_labels(&mut self, amount: usize) -> Vec<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/hir/hir_error.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum HIRError {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout]  9 |     /// Attempt to use an undeclared variable
[INFO] [stdout] 10 |     UndefinedVariable {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     TypeMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     InvalidOperation {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     NotCallable {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     ArityMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     MisplacedControlFlow {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     DuplicateDefinition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HIRError` 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: function `lower_program_to_instrs` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn lower_program_to_instrs(stmts: &[TypedStmt]) -> Result<Vec<HIRInstr>, Vec<String>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lower_program_report_errors` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn lower_program_report_errors(prog: &[TypedStmt]) -> Vec<HIRInstr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dummy_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn dummy_token(name: &str) -> Token {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_token` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn arb_token() -> impl Strategy<Value = Token> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal_expr` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn arb_literal_expr() -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_literal` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn arb_literal() -> impl Strategy<Value = Literal> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_print_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn arb_print_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_large_body_program` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn arb_large_body_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_if_stmt` is never used
[INFO] [stdout]   --> src/hir/hir_prop.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn arb_nested_if_stmt(depth: u32) -> BoxedStrategy<TypedStmt> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_nested_control_flow_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn arb_nested_control_flow_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_type` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn arb_type() -> impl Strategy<Value = Type> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_expr` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn arb_expr(depth: u32) -> impl Strategy<Value = TypedExpr> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_global_var` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:163:4
[INFO] [stdout]     |
[INFO] [stdout] 163 | fn arb_global_var() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_func_body_stmt` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:177:4
[INFO] [stdout]     |
[INFO] [stdout] 177 | fn arb_func_body_stmt() -> impl Strategy<Value = TypedStmt> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arb_valid_program` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn arb_valid_program() -> impl Strategy<Value = Vec<TypedStmt>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tempids` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn extract_tempids(instrs: &[HIRInstr]) -> HashSet<TempId> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_labels` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn extract_labels(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_label_targets` is never used
[INFO] [stdout]    --> src/hir/hir_prop.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn extract_label_targets(instrs: &[HIRInstr]) -> HashSet<Label> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pretty_print_blocks` is never used
[INFO] [stdout]    --> src/ssa/block_builder.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl BlockBuilder {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn pretty_print_blocks(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pretty_print_ssa_blocks` is never used
[INFO] [stdout]    --> src/ssa/block_builder.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn pretty_print_ssa_blocks(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `label` is never read
[INFO] [stdout]  --> src/ssa/cfg.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CFGNode {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] 9 |     pub label: Label,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `dfs`, `pretty_print_dfs`, `get_index`, and `preds` are never used
[INFO] [stdout]    --> src/ssa/cfg.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl CFG {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn dfs(&mut self, entry_label: Label) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn pretty_print_dfs(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn get_index(&self, label: &Label) -> Option<&HashIndex> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn preds(&self, idx: usize) -> &[Label] {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ssa/dominator.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  19 | impl Dominator {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn pretty_print_buckets(&mut self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn pretty_print_semi_dominators(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn pretty_print_immediate_dominators(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn pretty_print_dominator_tree(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn pretty_print_dominance_frontier(&self, cfg: &CFG) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     fn get_label(&self, v: DFSNumber) -> DFSNumber {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn get_ancestor(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn get_immediate_dominator(&self, v: DFSNumber) -> Option<DFSNumber> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |     fn assign_label(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn assign_ancestor(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     fn assign_semi_dominator(&mut self, idx: DFSNumber, value: DFSNumber) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     fn assign_immediate_dominator(&mut self, idx: DFSNumber, value: Option<DFSNumber>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `anon_temp_counter` is never read
[INFO] [stdout]   --> src/ssa/ssa_state.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SSAState {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 16 |     var_stack: HashMap<String, Vec<SSATempId>>,
[INFO] [stdout] 17 |     anon_temp_counter: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_dom_test` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_dom_test<F: FnOnce(&CFG, &Dominator)>(instrs: Vec<HIRInstr>, check: F) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_dominator_tree_eq` is never used
[INFO] [stdout]   --> src/ssa/dominator_test.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn assert_dominator_tree_eq(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_phi_insertion` is never used
[INFO] [stdout]   --> src/ssa/phi_insertion_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn run_phi_insertion(instrs: Vec<HIRInstr>, target: &Label) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegisterAllocation` is never constructed
[INFO] [stdout]   --> src/assembly/register_allocation.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RegisterAllocation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_allocate_x86_64` is never used
[INFO] [stdout]   --> src/assembly/register_allocation.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn register_allocate_x86_64(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `linear_scan`, `expire_old_ranges`, `spill`, and `choose_free_reg` are never used
[INFO] [stdout]    --> src/assembly/register_allocation.rs:37:8
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl RegisterAllocation {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  37 |     fn new() -> RegisterAllocation {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn linear_scan(&mut self, lir_programs: &Vec<LIRProgram>, live_ranges: &Vec<LiveRange>) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     fn expire_old_ranges(&mut self, idx: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     fn spill(&mut self, live_range: &LiveRange) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn choose_free_reg(&mut self) -> RegName {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpillSlotAllocator` is never constructed
[INFO] [stdout]  --> src/assembly/spill_slot_allocator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SpillSlotAllocator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fresh` is never used
[INFO] [stdout]  --> src/assembly/spill_slot_allocator.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl SpillSlotAllocator {
[INFO] [stdout]   | ----------------------- method in this implementation
[INFO] [stdout] 9 |     pub fn fresh(&mut self, name: &RegName, size: &RegSize) -> SpillSlot {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chry_compiler::hir`
[INFO] [stdout]  --> tests/source_to_hir.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chry_compiler::hir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hir_function_ok` is never used
[INFO] [stdout]   --> tests/source_to_hir.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn hir_function_ok(source: &str) -> Vec<HIRFunction> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[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] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::parse_error::ParseError`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::parse_error::ParseError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::expr::Expr`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::expr::Expr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/parser/parser_prop_test.rs:15:31
[INFO] [stdout]    |
[INFO] [stdout] 15 |     (arb_literal()).prop_map(|(lit)| format!("{};", lit))
[INFO] [stdout]    |                               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 15 -     (arb_literal()).prop_map(|(lit)| format!("{};", lit))
[INFO] [stdout] 15 +     (arb_literal()).prop_map(|lit| format!("{};", lit))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::lir::live_range_analyis::live_range_analysis`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::lir::live_range_analyis::live_range_analysis;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::zip`
[INFO] [stdout]  --> src/scanner/scanner_unit_tests.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::iter::zip;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let val = ("(");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 52 -     let val = ("(");
[INFO] [stdout] 52 +     let val = "(" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let val = (")");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 62 -     let val = (")");
[INFO] [stdout] 62 +     let val = ")" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:72:15
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let val = ("{");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -     let val = ("{");
[INFO] [stdout] 72 +     let val = "{" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:82:15
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let val = ("}");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 82 -     let val = ("}");
[INFO] [stdout] 82 +     let val = "}" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let val = (",");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -     let val = (",");
[INFO] [stdout] 92 +     let val = "," ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let val = (".");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 102 -     let val = (".");
[INFO] [stdout] 102 +     let val = "." ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let val = ("-");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 109 -     let val = ("-");
[INFO] [stdout] 109 +     let val = "-" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:119:15
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let val = ("+");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 119 -     let val = ("+");
[INFO] [stdout] 119 +     let val = "+" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let val = ("|");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 125 -     let val = ("|");
[INFO] [stdout] 125 +     let val = "|" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:135:15
[INFO] [stdout]     |
[INFO] [stdout] 135 |     let val = ("||");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 135 -     let val = ("||");
[INFO] [stdout] 135 +     let val = "||" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:142:15
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let val = ("var @ fun # 123 $");
[INFO] [stdout]     |               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 142 -     let val = ("var @ fun # 123 $");
[INFO] [stdout] 142 +     let val = "var @ fun # 123 $" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:156:15
[INFO] [stdout]     |
[INFO] [stdout] 156 |     let val = (";");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -     let val = (";");
[INFO] [stdout] 156 +     let val = ";" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:166:15
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let val = ("*");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 166 -     let val = ("*");
[INFO] [stdout] 166 +     let val = "*" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:173:15
[INFO] [stdout]     |
[INFO] [stdout] 173 |     let val = ("x");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 173 -     let val = ("x");
[INFO] [stdout] 173 +     let val = "x" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:183:15
[INFO] [stdout]     |
[INFO] [stdout] 183 |     let val = ("var");
[INFO] [stdout]     |               ^     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -     let val = ("var");
[INFO] [stdout] 183 +     let val = "var" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:193:15
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let val = ("123");
[INFO] [stdout]     |               ^     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 193 -     let val = ("123");
[INFO] [stdout] 193 +     let val = "123" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:203:15
[INFO] [stdout]     |
[INFO] [stdout] 203 |     let val = ("45.67");
[INFO] [stdout]     |               ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 203 -     let val = ("45.67");
[INFO] [stdout] 203 +     let val = "45.67" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:218:15
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let val = ("\"hello\"");
[INFO] [stdout]     |               ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 218 -     let val = ("\"hello\"");
[INFO] [stdout] 218 +     let val = "\"hello\"" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:233:15
[INFO] [stdout]     |
[INFO] [stdout] 233 |     let val = ("!");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 233 -     let val = ("!");
[INFO] [stdout] 233 +     let val = "!" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:240:15
[INFO] [stdout]     |
[INFO] [stdout] 240 |     let val = ("!=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 240 -     let val = ("!=");
[INFO] [stdout] 240 +     let val = "!=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     let val = ("=");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 250 -     let val = ("=");
[INFO] [stdout] 250 +     let val = "=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:260:15
[INFO] [stdout]     |
[INFO] [stdout] 260 |     let val = ("==");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -     let val = ("==");
[INFO] [stdout] 260 +     let val = "==" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let val = ("<");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 270 -     let val = ("<");
[INFO] [stdout] 270 +     let val = "<" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:277:15
[INFO] [stdout]     |
[INFO] [stdout] 277 |     let val = ("<=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 277 -     let val = ("<=");
[INFO] [stdout] 277 +     let val = "<=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:287:15
[INFO] [stdout]     |
[INFO] [stdout] 287 |     let val = (">");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 287 -     let val = (">");
[INFO] [stdout] 287 +     let val = ">" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:297:15
[INFO] [stdout]     |
[INFO] [stdout] 297 |     let val = (">=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 297 -     let val = (">=");
[INFO] [stdout] 297 +     let val = ">=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:307:15
[INFO] [stdout]     |
[INFO] [stdout] 307 |     let val = ("->");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 307 -     let val = ("->");
[INFO] [stdout] 307 +     let val = "->" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:317:15
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let val = ("// comment\nvar");
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 317 -     let val = ("// comment\nvar");
[INFO] [stdout] 317 +     let val = "// comment\nvar" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:327:15
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let val = ("/* comment */ fun");
[INFO] [stdout]     |               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 327 -     let val = ("/* comment */ fun");
[INFO] [stdout] 327 +     let val = "/* comment */ fun" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:338:15
[INFO] [stdout]     |
[INFO] [stdout] 338 |     let val = ("\"unterminated");
[INFO] [stdout]     |               ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 338 -     let val = ("\"unterminated");
[INFO] [stdout] 338 +     let val = "\"unterminated" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:347:15
[INFO] [stdout]     |
[INFO] [stdout] 347 |     let val = ("@");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 347 -     let val = ("@");
[INFO] [stdout] 347 +     let val = "@" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::scan_error::ScanError`
[INFO] [stdout]  --> src/scanner/scanner_fuzz_tests.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::scan_error::ScanError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::lower_to_ssa_program`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::ssa::ssa::lower_to_ssa_program;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[INFO] [stdout]     |                            ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction` and `SSAExpr`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]  --> src/ssa/var_rename_test.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use super::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]   --> src/ssa/var_rename_test.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     use std::collections::HashSet;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::ssa::ssa::SSAContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default`
[INFO] [stdout]  --> src/hir/hir.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{default, vec};
[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 import: `token::Token`
[INFO] [stdout]  --> src/hir/hir.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | ...   hir_types::*, literal::Literal, op::{BinaryOp, LogicalOp, UnaryOp}, token::Token, token_type::TokenType, typed_expr::{TypedExpr...
[INFO] [stdout]   |                                                                           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |                         if (*return_type == Type::Void) {
[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] 148 -                         if (*return_type == Type::Void) {
[INFO] [stdout] 148 +                         if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/hir/hir.rs:161:24
[INFO] [stdout]     |
[INFO] [stdout] 161 |                     if (*return_type == Type::Void) {
[INFO] [stdout]     |                        ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                     if (*return_type == Type::Void) {
[INFO] [stdout] 161 +                     if *return_type == Type::Void  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/hir/hir.rs:183:27
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 return Ok((vec![]));
[INFO] [stdout]     |                           ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 return Ok((vec![]));
[INFO] [stdout] 183 +                 return Ok(vec![] );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]    --> src/hir/hir.rs:329:28
[INFO] [stdout]     |
[INFO] [stdout] 329 |                     return (Ok((vec, result_temp)));
[INFO] [stdout]     |                            ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 329 -                     return (Ok((vec, result_temp)));
[INFO] [stdout] 329 +                     return Ok((vec, result_temp)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hir::hir_error::HIRError`
[INFO] [stdout]  --> src/hir/hir_prop.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::hir::hir_error::HIRError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::type_checker::type_checker::TypeChecker`
[INFO] [stdout]  --> src/hir/hir_prop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::type_checker::type_checker::TypeChecker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::HIRInstr`
[INFO] [stdout]  --> src/lir/lir.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::hir_types::HIRInstr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/lir/lir.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa::ssa::SSAProgram`
[INFO] [stdout]   --> src/lir/lir.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ssa::ssa::SSAProgram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `hash::Hash` and `iter::Map`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 4 |     iter::Map,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::min`
[INFO] [stdout]  --> src/lir/live_range_analyis.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use itertools::min;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `op`, `self`, and `ssa::ssa::SSAContext`
[INFO] [stdout]   --> src/lir/live_range_analyis.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lir::{self, lir::LIRProgram},
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 12 |     ssa::ssa::SSAContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |         op,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lir/live_range_analyis.rs:120:24
[INFO] [stdout]     |
[INFO] [stdout] 120 |             let p = if (idx < block.instrs.len()) {
[INFO] [stdout]     |                        ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 120 -             let p = if (idx < block.instrs.len()) {
[INFO] [stdout] 120 +             let p = if idx < block.instrs.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/parser/parser.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]   --> src/parser/parser.rs:88:23
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 match (expr.as_ref()) {
[INFO] [stdout]    |                       ^             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -                 match (expr.as_ref()) {
[INFO] [stdout] 88 +                 match expr.as_ref()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 313 |         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout]     |            ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 313 -         if (self.match_tokens(&[TokenType::Equal])) {
[INFO] [stdout] 313 +         if self.match_tokens(&[TokenType::Equal])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 339 |         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout]     |               ^                                                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 339 -         while (!self.is_at_end() && !self.check(&TokenType::RightParen)) {
[INFO] [stdout] 339 +         while !self.is_at_end() && !self.check(&TokenType::RightParen)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:445:19
[INFO] [stdout]     |
[INFO] [stdout] 445 |         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout]     |                   ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 445 -         } else if (self.match_tokens(&[TokenType::Var])) {
[INFO] [stdout] 445 +         } else if self.match_tokens(&[TokenType::Var])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:453:25
[INFO] [stdout]     |
[INFO] [stdout] 453 |             condition = (self.expression()?);
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 453 -             condition = (self.expression()?);
[INFO] [stdout] 453 +             condition = self.expression()? ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser/parser.rs:455:25
[INFO] [stdout]     |
[INFO] [stdout] 455 |             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout]     |                         ^                                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 455 -             condition = (Expr::Literal(Literal::Bool(true)));
[INFO] [stdout] 455 +             condition = Expr::Literal(Literal::Bool(true)) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:641:15
[INFO] [stdout]     |
[INFO] [stdout] 641 |         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout]     |               ^                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 641 -         while (self.match_tokens(&[TokenType::Bang, TokenType::Minus])) {
[INFO] [stdout] 641 +         while self.match_tokens(&[TokenType::Bang, TokenType::Minus])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:652:16
[INFO] [stdout]     |
[INFO] [stdout] 652 |             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 652 -             if (self.match_tokens(&[TokenType::LeftParen])) {
[INFO] [stdout] 652 +             if self.match_tokens(&[TokenType::LeftParen])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:654:23
[INFO] [stdout]     |
[INFO] [stdout] 654 |             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout]     |                       ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -             } else if (self.match_tokens(&[TokenType::Dot])) {
[INFO] [stdout] 654 +             } else if self.match_tokens(&[TokenType::Dot])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/parser/parser.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 |         while (!self.is_at_end()) {
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 749 -         while (!self.is_at_end()) {
[INFO] [stdout] 749 +         while !self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser/parser.rs:750:16
[INFO] [stdout]     |
[INFO] [stdout] 750 |             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout]     |                ^                                                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -             if (self.previous().tokentype == TokenType::Semicolon) {
[INFO] [stdout] 750 +             if self.previous().tokentype == TokenType::Semicolon  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::parse_error::ParseError`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::parse_error::ParseError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::expr::Expr`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::expr::Expr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::types::Type`
[INFO] [stdout]  --> src/parser/parser_prop_test.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/parser/parser_prop_test.rs:15:31
[INFO] [stdout]    |
[INFO] [stdout] 15 |     (arb_literal()).prop_map(|(lit)| format!("{};", lit))
[INFO] [stdout]    |                               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 15 -     (arb_literal()).prop_map(|(lit)| format!("{};", lit))
[INFO] [stdout] 15 +     (arb_literal()).prop_map(|lit| format!("{};", lit))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 |         if (is_double) {
[INFO] [stdout]     |            ^         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -         if (is_double) {
[INFO] [stdout] 130 +         if is_double  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/scanner/scanner.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 |         if (self.is_at_end()) {
[INFO] [stdout]     |            ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -         if (self.is_at_end()) {
[INFO] [stdout] 184 +         if self.is_at_end()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::zip`
[INFO] [stdout]  --> src/scanner/scanner_unit_tests.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::iter::zip;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let val = ("(");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 52 -     let val = ("(");
[INFO] [stdout] 52 +     let val = "(" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let val = (")");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 62 -     let val = (")");
[INFO] [stdout] 62 +     let val = ")" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:72:15
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let val = ("{");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -     let val = ("{");
[INFO] [stdout] 72 +     let val = "{" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:82:15
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let val = ("}");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 82 -     let val = ("}");
[INFO] [stdout] 82 +     let val = "}" ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/scanner/scanner_unit_tests.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let val = (",");
[INFO] [stdout]    |               ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -     let val = (",");
[INFO] [stdout] 92 +     let val = "," ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let val = (".");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 102 -     let val = (".");
[INFO] [stdout] 102 +     let val = "." ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let val = ("-");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 109 -     let val = ("-");
[INFO] [stdout] 109 +     let val = "-" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:119:15
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let val = ("+");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 119 -     let val = ("+");
[INFO] [stdout] 119 +     let val = "+" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let val = ("|");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 125 -     let val = ("|");
[INFO] [stdout] 125 +     let val = "|" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:135:15
[INFO] [stdout]     |
[INFO] [stdout] 135 |     let val = ("||");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 135 -     let val = ("||");
[INFO] [stdout] 135 +     let val = "||" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:142:15
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let val = ("var @ fun # 123 $");
[INFO] [stdout]     |               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 142 -     let val = ("var @ fun # 123 $");
[INFO] [stdout] 142 +     let val = "var @ fun # 123 $" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:156:15
[INFO] [stdout]     |
[INFO] [stdout] 156 |     let val = (";");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 156 -     let val = (";");
[INFO] [stdout] 156 +     let val = ";" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:166:15
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let val = ("*");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 166 -     let val = ("*");
[INFO] [stdout] 166 +     let val = "*" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:173:15
[INFO] [stdout]     |
[INFO] [stdout] 173 |     let val = ("x");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 173 -     let val = ("x");
[INFO] [stdout] 173 +     let val = "x" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:183:15
[INFO] [stdout]     |
[INFO] [stdout] 183 |     let val = ("var");
[INFO] [stdout]     |               ^     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -     let val = ("var");
[INFO] [stdout] 183 +     let val = "var" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:193:15
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let val = ("123");
[INFO] [stdout]     |               ^     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 193 -     let val = ("123");
[INFO] [stdout] 193 +     let val = "123" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:203:15
[INFO] [stdout]     |
[INFO] [stdout] 203 |     let val = ("45.67");
[INFO] [stdout]     |               ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 203 -     let val = ("45.67");
[INFO] [stdout] 203 +     let val = "45.67" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:218:15
[INFO] [stdout]     |
[INFO] [stdout] 218 |     let val = ("\"hello\"");
[INFO] [stdout]     |               ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 218 -     let val = ("\"hello\"");
[INFO] [stdout] 218 +     let val = "\"hello\"" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:233:15
[INFO] [stdout]     |
[INFO] [stdout] 233 |     let val = ("!");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 233 -     let val = ("!");
[INFO] [stdout] 233 +     let val = "!" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:240:15
[INFO] [stdout]     |
[INFO] [stdout] 240 |     let val = ("!=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 240 -     let val = ("!=");
[INFO] [stdout] 240 +     let val = "!=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     let val = ("=");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 250 -     let val = ("=");
[INFO] [stdout] 250 +     let val = "=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:260:15
[INFO] [stdout]     |
[INFO] [stdout] 260 |     let val = ("==");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -     let val = ("==");
[INFO] [stdout] 260 +     let val = "==" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let val = ("<");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 270 -     let val = ("<");
[INFO] [stdout] 270 +     let val = "<" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:277:15
[INFO] [stdout]     |
[INFO] [stdout] 277 |     let val = ("<=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 277 -     let val = ("<=");
[INFO] [stdout] 277 +     let val = "<=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:287:15
[INFO] [stdout]     |
[INFO] [stdout] 287 |     let val = (">");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 287 -     let val = (">");
[INFO] [stdout] 287 +     let val = ">" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:297:15
[INFO] [stdout]     |
[INFO] [stdout] 297 |     let val = (">=");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 297 -     let val = (">=");
[INFO] [stdout] 297 +     let val = ">=" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:307:15
[INFO] [stdout]     |
[INFO] [stdout] 307 |     let val = ("->");
[INFO] [stdout]     |               ^    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 307 -     let val = ("->");
[INFO] [stdout] 307 +     let val = "->" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:317:15
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let val = ("// comment\nvar");
[INFO] [stdout]     |               ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 317 -     let val = ("// comment\nvar");
[INFO] [stdout] 317 +     let val = "// comment\nvar" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:327:15
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let val = ("/* comment */ fun");
[INFO] [stdout]     |               ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 327 -     let val = ("/* comment */ fun");
[INFO] [stdout] 327 +     let val = "/* comment */ fun" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:338:15
[INFO] [stdout]     |
[INFO] [stdout] 338 |     let val = ("\"unterminated");
[INFO] [stdout]     |               ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 338 -     let val = ("\"unterminated");
[INFO] [stdout] 338 +     let val = "\"unterminated" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/scanner/scanner_unit_tests.rs:347:15
[INFO] [stdout]     |
[INFO] [stdout] 347 |     let val = ("@");
[INFO] [stdout]     |               ^   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 347 -     let val = ("@");
[INFO] [stdout] 347 +     let val = "@" ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::scan_error::ScanError`
[INFO] [stdout]  --> src/scanner/scanner_fuzz_tests.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::scan_error::ScanError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/ssa/block_builder.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::format;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::cfg::CFG`
[INFO] [stdout]  --> src/ssa/block_builder.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::ssa::cfg::CFG;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::hir_types::pretty_print_hir_instr`
[INFO] [stdout]  --> src/ssa/block_builder.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::hir_types::pretty_print_hir_instr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SSAInstr`, `pretty_print_ssa_instr`, and `pretty_print_terminator`
[INFO] [stdout]   --> src/ssa/block_builder.rs:9:17
[INFO] [stdout]    |
[INFO] [stdout]  9 |     BasicBlock, SSAInstr, pretty_print_basic_block, pretty_print_basic_block_ssa,
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 10 |     pretty_print_ssa_instr, pretty_print_terminator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HIRFunction` and `SSAExpr`
[INFO] [stdout]   --> src/ssa/block_builder.rs:15:17
[INFO] [stdout]    |
[INFO] [stdout] 15 |     hir_types::{HIRFunction, HIRInstr, Label, TempId},
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 16 |     ssa_types::{SSAExpr, SSATempId, Terminator},
[INFO] [stdout]    |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::block_builder::BlockBuilder`
[INFO] [stdout]  --> src/ssa/cfg.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa::block_builder::BlockBuilder;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::num`
[INFO] [stdout]  --> src/ssa/cfg.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use core::num;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/ssa/cfg.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `return` value
[INFO] [stdout]   --> src/ssa/cfg.rs:30:16
[INFO] [stdout]    |
[INFO] [stdout] 30 |         return (self.0 < other.0);
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 30 -         return (self.0 < other.0);
[INFO] [stdout] 30 +         return self.0 < other.0 ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap` and `hash::Hash`
[INFO] [stdout]  --> src/ssa/dominator.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, hash::Hash};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CFGNode` and `types::hir_types::Label`
[INFO] [stdout]  --> src/ssa/dominator.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 |     ssa::cfg::{CFG, CFGNode, DFSNumber, HashIndex},
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 5 |     types::hir_types::Label,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/ssa/liveness.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     hash::Hash,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `pretty_print_basic_block` and `pretty_print_ssa_blocks`
[INFO] [stdout]   --> src/ssa/ssa.rs:5:25
[INFO] [stdout]    |
[INFO] [stdout]  5 |         block_builder::{pretty_print_ssa_blocks, BlockBuilder},
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |         ssa_types::{pretty_print_basic_block, pretty_print_basic_block_ssa, BasicBlock},
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TempId`
[INFO] [stdout]  --> src/ssa/ssa_state.rs:3:41
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::hir_types::{HIRInstr, TempId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert`
[INFO] [stdout]   --> src/ssa/ssa_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::convert;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ssa;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ssa::ssa_version`
[INFO] [stdout]  --> src/ssa/dominator_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::ssa::ssa_version;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::literal::Literal`
[INFO] [stdout]  --> src/ssa/phi_insertion_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::literal::Literal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]  --> src/ssa/var_rename_test.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use super::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]   --> src/ssa/var_rename_test.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     use std::collections::HashSet;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `token::Token`
[INFO] [stdout]   --> src/type_checker/type_checker.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{token::Token, token_type::TokenType, types::Type};
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/types/typed_stmt.rs:55:30
[INFO] [stdout]    |
[INFO] [stdout] 55 |         TypedStmt::Return(_, (val)) => {
[INFO] [stdout]    |                              ^   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 55 -         TypedStmt::Return(_, (val)) => {
[INFO] [stdout] 55 +         TypedStmt::Return(_, val ) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/types/hir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HIRFunction`
[INFO] [stdout]  --> src/types/ssa_types.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hir_types::{HIRFunction, HIRInstr, Label, pretty_print_hir_instr},
[INFO] [stdout]   |                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/types/lir_types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ssa_types::SSATempId`
[INFO] [stdout]  --> src/types/lir_types.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ssa_types::SSATempId,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]    --> src/types/x86_64.rs:143:17
[INFO] [stdout]     |
[INFO] [stdout] 143 |     fmt::{self, write},
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/assembly/register_allocation.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 |     assembly::spill_slot_allocator::{self, SpillSlotAllocator}, lir::{lir::LIRProgram, live_range_analyis::LiveRange}, types::{
[INFO] [stdout]   |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let (i, (max_range)) = self
[INFO] [stdout]    |                 ^         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 87 -         let (i, (max_range)) = self
[INFO] [stdout] 87 +         let (i, max_range ) = self
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/assembly/register_allocation.rs:91:30
[INFO] [stdout]    |
[INFO] [stdout] 91 |             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout]    |                              ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 -             .max_by_key(|(_, (range))| range.end)
[INFO] [stdout] 91 +             .max_by_key(|(_, range )| range.end)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/parser/parser.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |             return Ok(statements);
[INFO] [stdout]     |             --------------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 529 |         return Ok(statements);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/hir/hir.rs:132:27
[INFO] [stdout]     |
[INFO] [stdout] 132 |                 let (val, id) = self.lower_expr(typed_expr)?;
[INFO] [stdout]     |                           ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:192:30
[INFO] [stdout]     |
[INFO] [stdout] 192 |             TypedStmt::Break(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:197:31
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TypedStmt::Return(token, typed_expr) => {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:218:30
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_stmts`
[INFO] [stdout]    --> src/hir/hir.rs:218:37
[INFO] [stdout]     |
[INFO] [stdout] 218 |             TypedStmt::Class(token, typed_stmts) => todo!(),
[INFO] [stdout]     |                                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_stmts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/hir/hir.rs:241:39
[INFO] [stdout]     |
[INFO] [stdout] 241 |             TypedExprKind::Call(name, token, typed_args) => {
[INFO] [stdout]     |                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `typed_expr`
[INFO] [stdout]    --> src/hir/hir.rs:336:32
[INFO] [stdout]     |
[INFO] [stdout] 336 |             TypedExprKind::Set(typed_expr, token, typed_expr1) => todo!(),
[INFO] [stdout]     |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typed_expr`
[INFO] [stdout] 
[WARN] too many lines in the log, truncating it
