[INFO] cloning repository https://github.com/nilq/hugorm
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nilq/hugorm" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnilq%2Fhugorm", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnilq%2Fhugorm'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e93fc25e6f46d56686aafa8c2c6f0cbdffdd6376
[INFO] checking nilq/hugorm/e93fc25e6f46d56686aafa8c2c6f0cbdffdd6376 against try#b152f5575a2ac7126ae0019e4e679abe9399213e for pr-157841
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnilq%2Fhugorm" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/nilq/hugorm
[INFO] finished tweaking git repo https://github.com/nilq/hugorm
[INFO] tweaked toml for git repo https://github.com/nilq/hugorm written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nilq/hugorm on toolchain b152f5575a2ac7126ae0019e4e679abe9399213e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nilq/hugorm 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" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rand_xoshiro v0.4.0
[INFO] [stderr]   Downloaded hashbrown v0.7.2
[INFO] [stderr]   Downloaded zub v0.3.14
[INFO] [stderr]   Downloaded sized-chunks v0.5.3
[INFO] [stderr]   Downloaded dirs-sys v0.3.4
[INFO] [stderr]   Downloaded flamer v0.3.0
[INFO] [stderr]   Downloaded rustyline-derive v0.3.1
[INFO] [stderr]   Downloaded thread-id v3.3.0
[INFO] [stderr]   Downloaded redox_users v0.3.4
[INFO] [stderr]   Downloaded utf8parse v0.2.0
[INFO] [stderr]   Downloaded remove_dir_all v0.5.2
[INFO] [stderr]   Downloaded gag v0.1.10
[INFO] [stderr]   Downloaded ahash v0.3.2
[INFO] [stderr]   Downloaded colored v1.9.3
[INFO] [stderr]   Downloaded rust-argon2 v0.7.0
[INFO] [stderr]   Downloaded unicode-width v0.1.7
[INFO] [stderr]   Downloaded quote v1.0.4
[INFO] [stderr]   Downloaded ppv-lite86 v0.2.6
[INFO] [stderr]   Downloaded proc-macro2 v1.0.12
[INFO] [stderr]   Downloaded memchr v2.3.2
[INFO] [stderr]   Downloaded serde_json v1.0.52
[INFO] [stderr]   Downloaded rustyline v6.1.2
[INFO] [stderr]   Downloaded statrs v0.12.0
[INFO] [stderr]   Downloaded im-rc v14.3.0
[INFO] [stderr]   Downloaded syn v1.0.19
[INFO] [stderr]   Downloaded flame v0.2.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049
[INFO] running `Command { std: "docker" "start" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049" "/opt/rustwide/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049" "/opt/rustwide/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.66
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]    Compiling proc-macro2 v1.0.12
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling serde v1.0.106
[INFO] [stderr]    Compiling ryu v1.0.4
[INFO] [stderr]    Compiling syn v1.0.19
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]     Checking ppv-lite86 v0.2.6
[INFO] [stderr]    Compiling syn v0.15.44
[INFO] [stderr]    Compiling itoa v0.4.5
[INFO] [stderr]    Compiling autocfg v1.0.0
[INFO] [stderr]    Compiling version_check v0.9.1
[INFO] [stderr]    Compiling lazy_static v0.2.11
[INFO] [stderr]     Checking bitmaps v2.1.0
[INFO] [stderr]    Compiling nix v0.17.0
[INFO] [stderr]    Compiling memchr v2.3.2
[INFO] [stderr]     Checking ahash v0.3.2
[INFO] [stderr]     Checking remove_dir_all v0.5.2
[INFO] [stderr]     Checking unicode-width v0.1.7
[INFO] [stderr]     Checking utf8parse v0.2.0
[INFO] [stderr]     Checking unicode-segmentation v1.6.0
[INFO] [stderr]    Compiling im-rc v14.3.0
[INFO] [stderr]    Compiling hashbrown v0.7.2
[INFO] [stderr]     Checking sized-chunks v0.5.3
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stderr]    Compiling quote v1.0.4
[INFO] [stderr]    Compiling thread-id v3.3.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking dirs-sys v0.3.4
[INFO] [stderr]     Checking colored v1.9.3
[INFO] [stderr]     Checking dirs v2.0.2
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand_xoshiro v0.4.0
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking tempfile v3.1.0
[INFO] [stderr]     Checking statrs v0.12.0
[INFO] [stderr]     Checking gag v0.1.10
[INFO] [stderr]     Checking serde_json v1.0.52
[INFO] [stderr]    Compiling serde_derive v1.0.106
[INFO] [stderr]    Compiling rustyline-derive v0.3.1
[INFO] [stderr]     Checking rustyline v6.1.2
[INFO] [stderr]    Compiling flame v0.2.2
[INFO] [stderr]    Compiling flamer v0.3.0
[INFO] [stderr]     Checking zub v0.3.14
[INFO] [stderr]     Checking hugorm v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/hugorm/visitor/symtab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `self`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ExpressionNode::*`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         use self::ExpressionNode::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use zub::ir::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/hugorm/visitor/symtab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `self`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ExpressionNode::*`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         use self::ExpressionNode::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use zub::ir::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<Matcher<'l>>>,
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<dyn Matcher<'l>>>,
[INFO] [stdout]   |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:92:49
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &dyn Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<Matcher<'l>>>,
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<dyn Matcher<'l>>>,
[INFO] [stdout]   |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:92:49
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &dyn Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if let Some(item) = self.items.get(self.index + 1) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if let Some(item) = self.items.get(self.index + 1) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/hugorm/parser/parser.rs:538:21
[INFO] [stdout]     |
[INFO] [stdout] 538 |                     c => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/hugorm/parser/parser.rs:538:21
[INFO] [stdout]     |
[INFO] [stdout] 538 |                     c => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             Use(ref path) => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             Expression(ref expr) => {
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 183 |             Declaration(..) => self.visit_variable(&statement.node, &statement.pos),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 184 |             Assignment(..) => self.visit_ass(&statement.node, &statement.pos),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ ...and 9 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: unreachable pattern
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             Use(ref path) => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             Expression(ref expr) => {
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 183 |             Declaration(..) => self.visit_variable(&statement.node, &statement.pos),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 184 |             Assignment(..) => self.visit_ass(&statement.node, &statement.pos),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ ...and 9 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: variable does not need to be mutable
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:219:21
[INFO] [stdout]     |
[INFO] [stdout] 219 |                 let mut binding = Binding::local(name, self.depth, self.function_depth);
[INFO] [stdout]     |                     ----^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:219:21
[INFO] [stdout]     |
[INFO] [stdout] 219 |                 let mut binding = Binding::local(name, self.depth, self.function_depth);
[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: `fun`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:419:27
[INFO] [stdout]     |
[INFO] [stdout] 419 |             ConstFunction(ref fun) => return Err(response!(
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fun`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:419:27
[INFO] [stdout]     |
[INFO] [stdout] 419 |             ConstFunction(ref fun) => return Err(response!(
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `caller`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:18
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:30
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `caller`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:18
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:30
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |            ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |            ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/lib.rs:55:56
[INFO] [stdout]    |
[INFO] [stdout] 55 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/lib.rs:59:32
[INFO] [stdout]    |
[INFO] [stdout] 59 | ...                   Ok(n) => {
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/lib.rs:55:56
[INFO] [stdout]    |
[INFO] [stdout] 55 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/lib.rs:59:32
[INFO] [stdout]    |
[INFO] [stdout] 59 | ...                   Ok(n) => {
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root`
[INFO] [stdout]   --> src/lib.rs:98:25
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn run_file(path: &str, root: &String) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_root`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/lib.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn run(path: &str, content: &str) {
[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 `run_file` is never used
[INFO] [stdout]   --> src/lib.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn run_file(path: &str, root: &String) {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Response` is never used
[INFO] [stdout]  --> src/hugorm/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Response<T: fmt::Display> {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FilePath` is never constructed
[INFO] [stdout]  --> src/hugorm/source.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FilePath(pub String);
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Source` is never constructed
[INFO] [stdout]   --> src/hugorm/source.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Source {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root`
[INFO] [stdout]   --> src/lib.rs:98:25
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn run_file(path: &str, root: &String) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_root`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `from` are never used
[INFO] [stdout]   --> src/hugorm/source.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Source {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 24 |     pub fn new(path: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from(path: &str, lines: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lexer` is never constructed
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Lexer<'l> {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `default`, and `match_token` are never used
[INFO] [stdout]   --> src/hugorm/lexer/lexer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<'l> Lexer<'l> {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(tokenizer: Tokenizer<'l>, source: &'l Source) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn default(data: Vec<char>, source: &'l Source) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn match_token(&mut self) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Matcher` is never used
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait Matcher<'t> {
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommentMatcher` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct CommentMatcher;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantStringMatcher` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct ConstantStringMatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl ConstantStringMatcher {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 66 |     pub fn new(token_type: TokenType, constants: &'static [&'static str]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantCharMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct ConstantCharMatcher {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl ConstantCharMatcher {
[INFO] [stdout]     | ------------------------ associated function in this implementation
[INFO] [stdout] 107 |     pub fn new(token_type: TokenType, constants: &'static [char]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StringLiteralMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct StringLiteralMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IdentifierMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct IdentifierMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NumberLiteralMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub struct NumberLiteralMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/lib.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn run(path: &str, content: &str) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | pub struct KeyMatcher {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_file` is never used
[INFO] [stdout]   --> src/lib.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn run_file(path: &str, root: &String) {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 348 | impl KeyMatcher {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 349 |     pub fn new(token_type: TokenType, constants: &'static [&'static str]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Response` is never used
[INFO] [stdout]  --> src/hugorm/error.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Response<T: fmt::Display> {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EOLMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:382:12
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub struct EOLMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FilePath` is never constructed
[INFO] [stdout]  --> src/hugorm/source.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FilePath(pub String);
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhitespaceMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 | pub struct WhitespaceMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Source` is never constructed
[INFO] [stdout]   --> src/hugorm/source.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Source {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenType` is never used
[INFO] [stdout]  --> src/hugorm/lexer/token.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum TokenType {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pos` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Pos(pub (usize, String), pub (usize, usize));
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `from` are never used
[INFO] [stdout]   --> src/hugorm/source.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Source {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 24 |     pub fn new(path: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from(path: &str, lines: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_lexeme` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Pos {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 45 |     pub fn get_lexeme(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lexer` is never constructed
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Lexer<'l> {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct Token {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 91 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `default`, and `match_token` are never used
[INFO] [stdout]   --> src/hugorm/lexer/lexer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<'l> Lexer<'l> {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(tokenizer: Tokenizer<'l>, source: &'l Source) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn default(data: Vec<char>, source: &'l Source) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn match_token(&mut self) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snapshot` is never constructed
[INFO] [stdout]  --> src/hugorm/lexer/tokenizer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Snapshot {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Matcher` is never used
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait Matcher<'t> {
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommentMatcher` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct CommentMatcher;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Snapshot {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(index: usize, pos: (usize, usize)) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantStringMatcher` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct ConstantStringMatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tokenizer` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Tokenizer<'t> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/matcher.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl ConstantStringMatcher {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 66 |     pub fn new(token_type: TokenType, constants: &'static [&'static str]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantCharMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub struct ConstantCharMatcher {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl ConstantCharMatcher {
[INFO] [stdout]     | ------------------------ associated function in this implementation
[INFO] [stdout] 107 |     pub fn new(token_type: TokenType, constants: &'static [char]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StringLiteralMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct StringLiteralMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IdentifierMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:255:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | pub struct IdentifierMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NumberLiteralMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub struct NumberLiteralMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KeyMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 343 | pub struct KeyMatcher {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:349:12
[INFO] [stdout]     |
[INFO] [stdout] 348 | impl KeyMatcher {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 349 |     pub fn new(token_type: TokenType, constants: &'static [&'static str]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/lexer/tokenizer.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<'t> Tokenizer<'t> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(items: Vec<char>, source: &'t Source) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn end(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn advance(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn advance_n(&mut self, n: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn peek_range(&self, n: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn peek_n(&self, n: usize) -> Option<char> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn peek(&self) -> Option<char> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn take_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn peek_snapshot(&self) -> Option<&Snapshot> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn rollback_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn commit_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn last_position(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn collect_while(&mut self, func: fn(char) -> bool) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EOLMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:382:12
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub struct EOLMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatementNode` is never used
[INFO] [stdout]  --> src/hugorm/parser/ast.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum StatementNode {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WhitespaceMatcher` is never constructed
[INFO] [stdout]    --> src/hugorm/lexer/matcher.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 | pub struct WhitespaceMatcher;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Statement` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Statement {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenType` is never used
[INFO] [stdout]  --> src/hugorm/lexer/token.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum TokenType {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pos` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Pos(pub (usize, String), pub (usize, usize));
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Statement {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 30 |   pub fn new(node: StatementNode, pos: Pos) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExpressionNode` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum ExpressionNode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Expression` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct Expression {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_lexeme` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Pos {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 45 |     pub fn get_lexeme(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Expression {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 67 |   pub fn new(node: ExpressionNode, pos: Pos) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct Token {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operator` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum Operator {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 91 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_right_ass`, `is_compoundable`, `from_str`, and `as_str` are never used
[INFO] [stdout]    --> src/hugorm/parser/ast.rs:83:10
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl Operator {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  83 |   pub fn is_right_ass(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |   pub fn is_compoundable(operator: &str) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |   pub fn from_str(operator: &str) -> Option<(Operator, u8)> {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |   pub fn as_str(&self) -> &str {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snapshot` is never constructed
[INFO] [stdout]  --> src/hugorm/lexer/tokenizer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Snapshot {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]  --> src/hugorm/parser/parser.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Parser<'p> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Snapshot {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(index: usize, pos: (usize, usize)) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tokenizer` is never constructed
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Tokenizer<'t> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/lexer/tokenizer.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<'t> Tokenizer<'t> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(items: Vec<char>, source: &'t Source) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn end(&self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn advance(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn advance_n(&mut self, n: usize) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn peek_range(&self, n: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn peek_n(&self, n: usize) -> Option<char> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn peek(&self) -> Option<char> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn take_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn peek_snapshot(&self) -> Option<&Snapshot> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn rollback_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn commit_snapshot(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn last_position(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn collect_while(&mut self, func: fn(char) -> bool) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatementNode` is never used
[INFO] [stdout]  --> src/hugorm/parser/ast.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum StatementNode {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Statement` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Statement {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Statement {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 30 |   pub fn new(node: StatementNode, pos: Pos) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExpressionNode` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum ExpressionNode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Expression` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct Expression {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/hugorm/parser/parser.rs:18:12
[INFO] [stdout]      |
[INFO] [stdout]   17 | impl<'p> Parser<'p> {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]   18 |     pub fn new(tokens: Vec<Token>, source: &'p Source) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]   31 |     pub fn parse(&mut self) -> Result<Vec<Statement>, ()> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   41 |     pub fn parse_statement(&mut self) -> Result<Statement, ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  608 |     fn try_parse_compound(&mut self, left: &Expression) -> Result<Option<Statement>, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  649 |     fn parse_body(&mut self) -> Result<Vec<Statement>, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  680 |     fn parse_expression(&mut self) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  690 |     fn parse_atom(&mut self) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  871 |     fn parse_postfix(&mut self, expression: Expression) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  976 |     fn parse_binary(&mut self, left: Expression, min_prec: usize) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1011 |     fn new_line(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     fn next_newline(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1039 |     fn get_indent(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1043 |     fn is_dedent(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1047 |     fn next(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1061 |     fn remaining(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1065 |     fn current_position(&self) -> Pos {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1071 |     fn span_from(&self, left_position: Pos) -> Pos {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |     fn current(&self) -> Token {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1096 |     fn eat(&mut self) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1103 |     fn eat_lexeme(&mut self, lexeme: &str) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1122 |     fn eat_type(&mut self, token_type: &TokenType) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1141 |     fn current_lexeme(&self) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1145 |     fn current_type(&self) -> TokenType {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     fn expect_type(&self, token_type: TokenType) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1164 |     fn expect_lexeme(&self, lexeme: &str) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1265 |     fn parse_block_of<B>(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Expression {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 67 |   pub fn new(node: ExpressionNode, pos: Pos) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operator` is never used
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum Operator {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Frame` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Frame {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_right_ass`, `is_compoundable`, `from_str`, and `as_str` are never used
[INFO] [stdout]    --> src/hugorm/parser/ast.rs:83:10
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl Operator {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  83 |   pub fn is_right_ass(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |   pub fn is_compoundable(operator: &str) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |   pub fn from_str(operator: &str) -> Option<(Operator, u8)> {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |   pub fn as_str(&self) -> &str {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]  --> src/hugorm/parser/parser.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Parser<'p> {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Frame {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn get(&self, name: &String) -> Option<Type> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn insert_interface(&mut self, name: String, interface: Vec<Statement>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_interface(&self, name: String) -> Option<&Vec<Statement>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn debug(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SymTab` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct SymTab {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/visitor/symtab.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl SymTab {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  70 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn fetch(&self, name: &String) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn fetch_str(&self, name: &str) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn current_frame(&self) -> &Frame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn current_frame_mut(&mut self) -> &mut Frame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn put_frame(&mut self, frame: Frame) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn push(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn pop(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn pop_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn fetch_cache(&self, name: &String) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_foreign_module(&self, id: &String) -> Option<&HashMap<String, Type>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn import(&mut self, id: String, origin: HashMap<String, Type>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `VarPos` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type VarPos = Binding;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TypeNode` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum TypeNode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TypeMode` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum TypeMode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Type` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Type {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from`, and `set_offset` are never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Type {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 46 |     pub fn new(node: TypeNode, mode: TypeMode) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn from(node: TypeNode) -> Type {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn set_offset(&mut self, offset: VarPos) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Inside` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum Inside {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Visitor` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Visitor<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/hugorm/visitor/visitor.rs:82:12
[INFO] [stdout]      |
[INFO] [stdout]   81 | impl<'a> Visitor<'a> {
[INFO] [stdout]      | -------------------- associated items in this implementation
[INFO] [stdout]   82 |     pub fn new(source: &'a Source, root: String) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]   95 |     pub fn from(source: &'a Source, symtab: SymTab, root: String) -> Self {
[INFO] [stdout]      |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  108 |     pub fn set_global(&mut self, name: &str, t: TypeNode) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  112 |     pub fn visit(&mut self, ast: &Vec<Statement>) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  124 |     pub fn build(&self) -> Vec<ExprNode> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  128 |     pub fn visit_statement(&mut self, statement: &Statement) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  436 |     fn find_module(&mut self, path: &String, root: &String, statement: &Statement) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  466 |     fn compile_expression(&mut self, expression: &Expression) -> Result<ExprNode, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  677 |     pub fn visit_expression(&mut self, expression: &Expression) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  725 |     pub fn type_expression(&mut self, expression: &Expression) -> Result<Type, ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  927 |     fn visit_variable(&mut self, variable: &StatementNode, pos: &Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  972 |     fn visit_ass(&mut self, ass: &StatementNode, pos: &Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1017 |     fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1021 |     fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1025 |     fn push_scope(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     fn pop_scope(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/hugorm/parser/parser.rs:18:12
[INFO] [stdout]      |
[INFO] [stdout]   17 | impl<'p> Parser<'p> {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]   18 |     pub fn new(tokens: Vec<Token>, source: &'p Source) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]   31 |     pub fn parse(&mut self) -> Result<Vec<Statement>, ()> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   41 |     pub fn parse_statement(&mut self) -> Result<Statement, ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  608 |     fn try_parse_compound(&mut self, left: &Expression) -> Result<Option<Statement>, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  649 |     fn parse_body(&mut self) -> Result<Vec<Statement>, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  680 |     fn parse_expression(&mut self) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  690 |     fn parse_atom(&mut self) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  871 |     fn parse_postfix(&mut self, expression: Expression) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  976 |     fn parse_binary(&mut self, left: Expression, min_prec: usize) -> Result<Expression, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1011 |     fn new_line(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     fn next_newline(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1039 |     fn get_indent(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1043 |     fn is_dedent(&self) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1047 |     fn next(&mut self) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1061 |     fn remaining(&self) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1065 |     fn current_position(&self) -> Pos {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1071 |     fn span_from(&self, left_position: Pos) -> Pos {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1088 |     fn current(&self) -> Token {
[INFO] [stdout]      |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1096 |     fn eat(&mut self) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1103 |     fn eat_lexeme(&mut self, lexeme: &str) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1122 |     fn eat_type(&mut self, token_type: &TokenType) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1141 |     fn current_lexeme(&self) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1145 |     fn current_type(&self) -> TokenType {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     fn expect_type(&self, token_type: TokenType) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1164 |     fn expect_lexeme(&self, lexeme: &str) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1265 |     fn parse_block_of<B>(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `include_math` is never used
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn include_math(visitor: &mut Visitor, vm: &mut VM) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum` is never used
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sum(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Frame` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Frame {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `student` is never used
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Frame {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn get(&self, name: &String) -> Option<Type> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn insert_interface(&mut self, name: String, interface: Vec<Statement>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_interface(&self, name: String) -> Option<&Vec<Statement>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn debug(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SymTab` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct SymTab {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/visitor/symtab.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl SymTab {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  70 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn fetch(&self, name: &String) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn fetch_str(&self, name: &str) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn current_frame(&self) -> &Frame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn current_frame_mut(&mut self) -> &mut Frame {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn put_frame(&mut self, frame: Frame) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn push(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn pop(&mut self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn pop_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn fetch_cache(&self, name: &String) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_foreign_module(&self, id: &String) -> Option<&HashMap<String, Type>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn import(&mut self, id: String, origin: HashMap<String, Type>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `VarPos` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type VarPos = Binding;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TypeNode` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum TypeNode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TypeMode` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum TypeMode {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Type` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Type {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from`, and `set_offset` are never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Type {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 46 |     pub fn new(node: TypeNode, mode: TypeMode) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn from(node: TypeNode) -> Type {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn set_offset(&mut self, offset: VarPos) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Inside` is never used
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum Inside {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Visitor` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Visitor<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/hugorm/visitor/visitor.rs:82:12
[INFO] [stdout]      |
[INFO] [stdout]   81 | impl<'a> Visitor<'a> {
[INFO] [stdout]      | -------------------- associated items in this implementation
[INFO] [stdout]   82 |     pub fn new(source: &'a Source, root: String) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]   95 |     pub fn from(source: &'a Source, symtab: SymTab, root: String) -> Self {
[INFO] [stdout]      |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  108 |     pub fn set_global(&mut self, name: &str, t: TypeNode) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  112 |     pub fn visit(&mut self, ast: &Vec<Statement>) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  124 |     pub fn build(&self) -> Vec<ExprNode> {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  128 |     pub fn visit_statement(&mut self, statement: &Statement) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  436 |     fn find_module(&mut self, path: &String, root: &String, statement: &Statement) -> Result<String, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  466 |     fn compile_expression(&mut self, expression: &Expression) -> Result<ExprNode, ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  677 |     pub fn visit_expression(&mut self, expression: &Expression) -> Result<(), ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  725 |     pub fn type_expression(&mut self, expression: &Expression) -> Result<Type, ()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  927 |     fn visit_variable(&mut self, variable: &StatementNode, pos: &Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  972 |     fn visit_ass(&mut self, ass: &StatementNode, pos: &Pos) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1017 |     fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1021 |     fn assign(&mut self, name: String, t: Type) {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1025 |     fn push_scope(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     fn pop_scope(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `include_math` is never used
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn include_math(visitor: &mut Visitor, vm: &mut VM) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum` is never used
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn sum(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `student` is never used
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/hugorm/visitor/symtab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[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: `std::rc::Rc`
[INFO] [stdout]  --> src/hugorm/visitor/symtab.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `self`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display`, `Formatter`, and `self`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ExpressionNode::*`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         use self::ExpressionNode::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::mem;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use zub::ir::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ExpressionNode::*`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:928:13
[INFO] [stdout]     |
[INFO] [stdout] 928 |         use self::ExpressionNode::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::compiler::*`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use zub::compiler::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use zub::ir::*;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]  --> src/hugorm/prelude/math.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use zub::ir::*;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::metadata`
[INFO] [stdout]   --> src/main.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use std::fs::metadata;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::compiler::*`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use zub::compiler::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zub::ir::*`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use zub::ir::*;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::metadata`
[INFO] [stdout]   --> src/main.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use std::fs::metadata;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<Matcher<'l>>>,
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<dyn Matcher<'l>>>,
[INFO] [stdout]   |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:92:49
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &dyn Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hugorm/lexer/lexer.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<Matcher<'l>>>,
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     matchers: Vec<Rc<dyn Matcher<'l>>>,
[INFO] [stdout]   |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:92:49
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn try_match_token(&mut self, matcher: &dyn Matcher<'t>) -> Result<Option<Token>, ()> {
[INFO] [stdout]    |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::io::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if let Some(item) = self.items.get(self.index + 1) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/hugorm/visitor/visitor.rs:2:42
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{self, Display, Formatter, Write};
[INFO] [stdout]   |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::io::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/hugorm/parser/parser.rs:538:21
[INFO] [stdout]     |
[INFO] [stdout] 538 |                     c => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]   --> src/hugorm/lexer/tokenizer.rs:41:21
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if let Some(item) = self.items.get(self.index + 1) {
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             Use(ref path) => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             Expression(ref expr) => {
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 183 |             Declaration(..) => self.visit_variable(&statement.node, &statement.pos),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 184 |             Assignment(..) => self.visit_ass(&statement.node, &statement.pos),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ ...and 9 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: `c`
[INFO] [stdout]    --> src/hugorm/parser/parser.rs:538:21
[INFO] [stdout]     |
[INFO] [stdout] 538 |                     c => {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:219:21
[INFO] [stdout]     |
[INFO] [stdout] 219 |                 let mut binding = Binding::local(name, self.depth, self.function_depth);
[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: `fun`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:419:27
[INFO] [stdout]     |
[INFO] [stdout] 419 |             ConstFunction(ref fun) => return Err(response!(
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `caller`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:18
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:30
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |            ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/main.rs:74:56
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:78:32
[INFO] [stdout]    |
[INFO] [stdout] 78 | ...                   Ok(n) => {
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             Use(ref path) => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 173 |             Expression(ref expr) => {
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 183 |             Declaration(..) => self.visit_variable(&statement.node, &statement.pos),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 184 |             Assignment(..) => self.visit_ass(&statement.node, &statement.pos),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 425 |             _ => {
[INFO] [stdout]     |             ^ ...and 9 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: function `prompt` is never used
[INFO] [stdout]   --> src/main.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Note` is never constructed
[INFO] [stdout]  --> src/hugorm/error.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Response<T: fmt::Display> {
[INFO] [stdout]   |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Note(T),
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_lexeme` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Pos {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 45 |     pub fn get_lexeme(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Const` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:10:3
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum StatementNode {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |   Const(String, Expression),
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StatementNode` 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 `min_prec` is never read
[INFO] [stdout]   --> src/hugorm/parser/parser.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Parser<'p> {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     min_prec: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `expect_type` and `expect_lexeme` are never used
[INFO] [stdout]     --> src/hugorm/parser/parser.rs:1149:8
[INFO] [stdout]      |
[INFO] [stdout]   17 | impl<'p> Parser<'p> {
[INFO] [stdout]      | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     fn expect_type(&self, token_type: TokenType) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1164 |     fn expect_lexeme(&self, lexeme: &str) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `debug` are never used
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Frame {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn debug(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `foreign_imports` is never read
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct SymTab {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub foreign_imports: HashMap<String, HashMap<String, Type>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SymTab` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/visitor/symtab.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl SymTab {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn fetch_str(&self, name: &str) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn put_frame(&mut self, frame: Frame) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn pop_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_foreign_module(&self, id: &String) -> Option<&HashMap<String, Type>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn import(&mut self, id: String, origin: HashMap<String, Type>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Char` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum TypeNode {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Char,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeNode` 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 `Undeclared` and `Immutable` are never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum TypeMode {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 33 |     Undeclared,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     Immutable,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeMode` 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 `Nothing` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum Inside {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 67 |     Nothing,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Inside` 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: fields `repl` and `root` are never read
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Visitor<'a> {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub repl: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 78 |     pub root: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `assign_str` are never used
[INFO] [stdout]     --> src/hugorm/visitor/visitor.rs:95:12
[INFO] [stdout]      |
[INFO] [stdout]   81 | impl<'a> Visitor<'a> {
[INFO] [stdout]      | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   95 |     pub fn from(source: &'a Source, symtab: SymTab, root: String) -> Self {
[INFO] [stdout]      |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1017 |     fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:219:21
[INFO] [stdout]     |
[INFO] [stdout] 219 |                 let mut binding = Binding::local(name, self.depth, self.function_depth);
[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: `fun`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:419:27
[INFO] [stdout]     |
[INFO] [stdout] 419 |             ConstFunction(ref fun) => return Err(response!(
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fun`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `caller`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:18
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_caller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/hugorm/visitor/visitor.rs:919:30
[INFO] [stdout]     |
[INFO] [stdout] 919 |             Call(ref caller, ref args) => Type::from(TypeNode::Any),
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/hugorm/prelude/math.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn student(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |            ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/main.rs:74:56
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:78:32
[INFO] [stdout]    |
[INFO] [stdout] 78 | ...                   Ok(n) => {
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prompt` is never used
[INFO] [stdout]   --> src/main.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |                     fn prompt(heap: &mut Heap<Object>, args: &[Value]) -> Value {
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Note` is never constructed
[INFO] [stdout]  --> src/hugorm/error.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Response<T: fmt::Display> {
[INFO] [stdout]   |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Note(T),
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_lexeme` is never used
[INFO] [stdout]   --> src/hugorm/lexer/token.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Pos {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 45 |     pub fn get_lexeme(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Const` is never constructed
[INFO] [stdout]   --> src/hugorm/parser/ast.rs:10:3
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum StatementNode {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |   Const(String, Expression),
[INFO] [stdout]    |   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StatementNode` 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 `min_prec` is never read
[INFO] [stdout]   --> src/hugorm/parser/parser.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Parser<'p> {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     min_prec: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `expect_type` and `expect_lexeme` are never used
[INFO] [stdout]     --> src/hugorm/parser/parser.rs:1149:8
[INFO] [stdout]      |
[INFO] [stdout]   17 | impl<'p> Parser<'p> {
[INFO] [stdout]      | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     fn expect_type(&self, token_type: TokenType) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1164 |     fn expect_lexeme(&self, lexeme: &str) -> Result<(), ()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `debug` are never used
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Frame {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn debug(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `foreign_imports` is never read
[INFO] [stdout]   --> src/hugorm/visitor/symtab.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct SymTab {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub foreign_imports: HashMap<String, HashMap<String, Type>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SymTab` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hugorm/visitor/symtab.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl SymTab {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn from(table: HashMap<String, Type>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn fetch_str(&self, name: &str) -> Option<Type> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn put_frame(&mut self, frame: Frame) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn pop_cache(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_foreign_module(&self, id: &String) -> Option<&HashMap<String, Type>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn import(&mut self, id: String, origin: HashMap<String, Type>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Char` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum TypeNode {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Char,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeNode` 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 `Undeclared` and `Immutable` are never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum TypeMode {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 33 |     Undeclared,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     Immutable,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TypeMode` 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 `Nothing` is never constructed
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum Inside {
[INFO] [stdout]    |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 67 |     Nothing,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Inside` 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: fields `repl` and `root` are never read
[INFO] [stdout]   --> src/hugorm/visitor/visitor.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct Visitor<'a> {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub repl: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 78 |     pub root: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `assign_str` are never used
[INFO] [stdout]     --> src/hugorm/visitor/visitor.rs:95:12
[INFO] [stdout]      |
[INFO] [stdout]   81 | impl<'a> Visitor<'a> {
[INFO] [stdout]      | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   95 |     pub fn from(source: &'a Source, symtab: SymTab, root: String) -> Self {
[INFO] [stdout]      |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1017 |     fn assign_str(&mut self, name: &str, t: Type) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.93s
[INFO] running `Command { std: "docker" "inspect" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049", kill_on_drop: false }`
[INFO] [stdout] f8871da720fe1a5a74e026c4af5da1f03453be9f779fdf7b16fc41543c13f049
