[INFO] cloning repository https://github.com/Gadersd/ic
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Gadersd/ic" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGadersd%2Fic", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGadersd%2Fic'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 56916fdce6b6931b72e0d5d9a28d9001cb9949ea
[INFO] testing Gadersd/ic against nightly-2025-01-18 for randomize-layout-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGadersd%2Fic" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Gadersd/ic on toolchain nightly-2025-01-18
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly-2025-01-18" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Gadersd/ic
[INFO] finished tweaking git repo https://github.com/Gadersd/ic
[INFO] tweaked toml for git repo https://github.com/Gadersd/ic written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/Gadersd/ic 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" "+nightly-2025-01-18" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d29d86962ec3d4fc017148673d80518dcddccd6570ed5bb2a5313540462ae9ea
[INFO] running `Command { std: "docker" "start" "-a" "d29d86962ec3d4fc017148673d80518dcddccd6570ed5bb2a5313540462ae9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d29d86962ec3d4fc017148673d80518dcddccd6570ed5bb2a5313540462ae9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d29d86962ec3d4fc017148673d80518dcddccd6570ed5bb2a5313540462ae9ea", kill_on_drop: false }`
[INFO] [stdout] d29d86962ec3d4fc017148673d80518dcddccd6570ed5bb2a5313540462ae9ea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7555798df368dfaf33008178088dc2ef635656b66766cfa34ec96f1a482e8edd
[INFO] running `Command { std: "docker" "start" "-a" "7555798df368dfaf33008178088dc2ef635656b66766cfa34ec96f1a482e8edd", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.158
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling ic v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: the feature `inherent_associated_types` is incomplete and may not be safe to use and/or cause compiler crashes
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(inherent_associated_types)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
[INFO] [stdout]   = note: `#[warn(incomplete_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lexical::{self, Token};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/parser.rs:784:5
[INFO] [stdout]     |
[INFO] [stdout] 784 | use std::str::FromStr;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alphanumeric` and `Duplicator`
[INFO] [stdout]  --> src/unrust/affine.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                                              ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Operator`
[INFO] [stdout]  --> src/unrust/affine.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter`
[INFO] [stdout]  --> src/unrust/core.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::iter;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/global.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/parse.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Book`, `Constructor`, `Duplicator`, `Node`, `Redex`, and `self`
[INFO] [stdout]  --> src/unrust/parse.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                     ^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^                ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/allocator.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 273 | /         loop {
[INFO] [stdout] 274 | |             let id_range = self.allocator.read().unwrap().allocate_u64s_from_iter(xs.clone());
[INFO] [stdout] 275 | |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout] 276 | |                 return (EntityId(start_id), EntityId(end_id))
[INFO] [stdout] ...   |
[INFO] [stdout] 281 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |           panic!();
[INFO] [stdout]     |           ^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:491:14
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:491:21
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redex`
[INFO] [stdout]    --> src/runtime.rs:517:31
[INFO] [stdout]     |
[INFO] [stdout] 517 |     fn reduce_void(&mut self, redex: Pair) -> Option<()> {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_redex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_binary`
[INFO] [stdout]    --> src/runtime.rs:529:13
[INFO] [stdout]     |
[INFO] [stdout] 529 |         let tag_binary = port_binary.get_tag();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/runtime.rs:603:13
[INFO] [stdout]     |
[INFO] [stdout] 603 |         let tag = port_1.get_tag(); // tags should be the same
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:640:14
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:640:21
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:642:14
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:642:25
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:687:14
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:687:21
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:689:14
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:689:25
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:196:27
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_id`
[INFO] [stdout]    --> src/allocator.rs:196:37
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:142:66
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:146:66
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexical.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]   --> src/numeric.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/numeric.rs:219:80
[INFO] [stdout]     |
[INFO] [stdout] 219 |             Numeric::Sym(op) => 22u32 | (( Operator::iter().enumerate().find(|(i, o)| op == o).unwrap().0 as u32) << 5 ), 
[INFO] [stdout]     |                                                                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/affine.rs:67:100
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn make_function_affine(function: Function<CoreExpression>, function_names: &BTreeSet<String>, mut namer: &mut UniqueNamer) -> (Funct...
[INFO] [stdout]    |                                                                                                    ----^^^^^
[INFO] [stdout]    |                                                                                                    |
[INFO] [stdout]    |                                                                                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 let elements: Vec<_> = elements.into_iter().map(|(name, expr)| 
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/unrust/core.rs:199:77
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...   let variant_idx = g_enum.elements.iter().enumerate().find(|(i, (name, _))| name == &enum_.struct_.name).map(|(i, _)| i).unwrap();
[INFO] [stdout]     |                                                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions, struc...
[INFO] [stdout]     |                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/unrust/core.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |     elems.sort_by_key(|(n, t)| order.iter().enumerate().find(|(_, no)| no == &n).map(|(i, _)| i).unwrap());
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let mut namer = UniqueNamer {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:92:20
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn to_core(mut self) -> GlobalProgram<CoreExpression> {
[INFO] [stdout]    |                    ----^^^^
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undefined_vars`
[INFO] [stdout]   --> src/unrust/check.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let (program, _, undefined_vars) = program.map_vars(
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_undefined_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/unrust/check.rs:189:27
[INFO] [stdout]     |
[INFO] [stdout] 189 |         NativeNumber::F24(x) => Ok(())
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/parse.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut functions = HashMap::new();
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/unrust/parse.rs:79:23
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let (program, s) = Self::parse(text_cursor)?;
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/unrust/parse.rs:620:74
[INFO] [stdout]     |
[INFO] [stdout] 620 |         let native_num = NativeNumber::try_from(num.s.as_str()).map_err(|e| ParseError::new(s.index, "Unable to parse number".into()))?;
[INFO] [stdout]     |                                                                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:776:13
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let mut statements = Vec::with_capacity(self.statements.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:853:13
[INFO] [stdout]     |
[INFO] [stdout] 853 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:945:13
[INFO] [stdout]     |
[INFO] [stdout] 945 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1033:13
[INFO] [stdout]      |
[INFO] [stdout] 1033 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field`
[INFO] [stdout]     --> src/unrust/parse.rs:1191:58
[INFO] [stdout]      |
[INFO] [stdout] 1191 |     pub fn get_variant_field_index(&self, variant: &str, field: &str) -> Option<usize> {
[INFO] [stdout]      |                                                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1226:13
[INFO] [stdout]      |
[INFO] [stdout] 1226 |         let mut else_ifs = Vec::with_capacity(self.else_ifs.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1330:13
[INFO] [stdout]      |
[INFO] [stdout] 1330 |         let mut arguments = Vec::with_capacity(self.arguments.len());
[INFO] [stdout]      |             ----^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/unrust/parse.rs:1468:53
[INFO] [stdout]      |
[INFO] [stdout] 1468 |                     let val = text.parse().map_err(|e| ParseError::new(s.index, "Unable to parse alphanumeric".into()))?;
[INFO] [stdout]      |                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1489:13
[INFO] [stdout]      |
[INFO] [stdout] 1489 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1579:13
[INFO] [stdout]      |
[INFO] [stdout] 1579 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |     let mut last_token = None;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_last_token` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/unrust/lexical.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_token` is never read
[INFO] [stdout]    --> src/unrust/lexical.rs:260:9
[INFO] [stdout]     |
[INFO] [stdout] 260 |         last_token = Some(token.clone());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/unrust/lexical.rs:238:66
[INFO] [stdout]     |
[INFO] [stdout] 238 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/lexical.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_dup` is never used
[INFO] [stdout]    --> src/parser.rs:622:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | impl Duplicator {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 622 |     fn has_dup(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_value` is never used
[INFO] [stdout]    --> src/parser.rs:744:8
[INFO] [stdout]     |
[INFO] [stdout] 722 | impl Numeric {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 744 |     fn to_value(&self) -> Value {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `operator_iter` is never used
[INFO] [stdout]   --> src/unrust/lexical.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn operator_iter() -> impl Iterator<Item=Token> + Clone {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:417:15
[INFO] [stdout]     |
[INFO] [stdout] 417 |         const call: u8 = 0;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:418:15
[INFO] [stdout]     |
[INFO] [stdout] 418 |         const void: u8 = 1;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:419:15
[INFO] [stdout]     |
[INFO] [stdout] 419 |         const erase: u8 = 2;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:420:15
[INFO] [stdout]     |
[INFO] [stdout] 420 |         const commute: u8 = 3;
[INFO] [stdout]     |               ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:421:15
[INFO] [stdout]     |
[INFO] [stdout] 421 |         const annihilate: u8 = 4;
[INFO] [stdout]     |               ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:422:15
[INFO] [stdout]     |
[INFO] [stdout] 422 |         const operator: u8 = 5;
[INFO] [stdout]     |               ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:423:15
[INFO] [stdout]     |
[INFO] [stdout] 423 |         const switch: u8 = 6;
[INFO] [stdout]     |               ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:424:15
[INFO] [stdout]     |
[INFO] [stdout] 424 |         const link: u8 = 7; // I think this is impossible
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `dispatch_table` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:426:15
[INFO] [stdout]     |
[INFO] [stdout] 426 |         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout]     |               ^^^^^^^^^^^^^^ help: convert the identifier to upper case: `DISPATCH_TABLE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:443:13
[INFO] [stdout]     |
[INFO] [stdout] 443 |             call => self.reduce_call(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             void => self.reduce_void(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:445:13
[INFO] [stdout]     |
[INFO] [stdout] 445 |             erase => self.reduce_erase(redex)?, 
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:446:13
[INFO] [stdout]     |
[INFO] [stdout] 446 |             commute => self.reduce_commute(redex)?, 
[INFO] [stdout]     |             ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:447:13
[INFO] [stdout]     |
[INFO] [stdout] 447 |             annihilate => self.reduce_annihilate(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:448:13
[INFO] [stdout]     |
[INFO] [stdout] 448 |             operator => self.reduce_operator(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:449:13
[INFO] [stdout]     |
[INFO] [stdout] 449 |             switch => self.reduce_switch(redex)?, 
[INFO] [stdout]     |             ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             link => self.link(port_1, port_2)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:849:11
[INFO] [stdout]     |
[INFO] [stdout] 849 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:860:11
[INFO] [stdout]     |
[INFO] [stdout] 860 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:861:11
[INFO] [stdout]     |
[INFO] [stdout] 861 |     const min_i24: i32 = -(1 << 23);
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             const max: u32 = 1 << 24 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/unrust/check.rs:174:16
[INFO] [stdout]     |
[INFO] [stdout] 174 |             if x >= 0 && x <= max {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 |             const max: i32 = 1 << 23 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:182:19
[INFO] [stdout]     |
[INFO] [stdout] 182 |             const min: i32 = -(1 << 23);
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MIN`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:703:11
[INFO] [stdout]     |
[INFO] [stdout] 703 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:714:11
[INFO] [stdout]     |
[INFO] [stdout] 714 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:715:11
[INFO] [stdout]     |
[INFO] [stdout] 715 |     const min_i24: i32 = -max_i24;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary1`
[INFO] [stdout]    --> src/main.rs:163:27
[INFO] [stdout]     |
[INFO] [stdout] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary2`
[INFO] [stdout]    --> src/main.rs:163:51
[INFO] [stdout]     |
[INFO] [stdout] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary`
[INFO] [stdout]    --> src/main.rs:164:27
[INFO] [stdout]     |
[INFO] [stdout] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary`
[INFO] [stdout]    --> src/main.rs:164:51
[INFO] [stdout]     |
[INFO] [stdout] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary`
[INFO] [stdout]    --> src/main.rs:165:28
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary`
[INFO] [stdout]    --> src/main.rs:165:50
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stdout]     |                                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary1`
[INFO] [stdout]    --> src/main.rs:166:28
[INFO] [stdout]     |
[INFO] [stdout] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary2`
[INFO] [stdout]    --> src/main.rs:166:52
[INFO] [stdout]     |
[INFO] [stdout] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stdout]     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortID` is never constructed
[INFO] [stdout]  --> src/main.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct PortID {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_primary` is never used
[INFO] [stdout]  --> src/main.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl PortID {
[INFO] [stdout]   | ----------- method in this implementation
[INFO] [stdout] 8 |     pub fn is_primary(&self) -> bool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connection` is never constructed
[INFO] [stdout]   --> src/main.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Connection {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nullary` is never constructed
[INFO] [stdout]   --> src/main.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Nullary {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Binary` is never constructed
[INFO] [stdout]   --> src/main.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct Binary {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Either` is never used
[INFO] [stdout]   --> src/main.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum Either<A, B> {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Combinator` is never used
[INFO] [stdout]   --> src/main.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum Combinator {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_inner`, `get_inner_mut`, `num_ports`, `get_connection`, and `get_connection_mut` are never used
[INFO] [stdout]    --> src/main.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout] 47  | impl Combinator {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 48  |     pub fn get_inner(&self) -> Either<&Nullary, &Binary> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub fn get_inner_mut(&mut self) -> Either<&mut Nullary, &mut Binary> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn num_ports(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn get_connection(&self, port: u8) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_connection_mut(&mut self, port: u8) -> Option<&mut Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ICRuntime` is never constructed
[INFO] [stdout]    --> src/main.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct ICRuntime {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl ICRuntime {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 134 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn handle_interaction(&mut self) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn handle_nullary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn handle_nullary_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn handle_different_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn handle_same_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn add_combinator(&mut self, combinator: Combinator) -> Option<EntityId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub fn wire_free_ports(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn is_port_free(&self, id: PortID) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn get_connection(&self, id: PortID) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityId` is never constructed
[INFO] [stdout]    --> src/main.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | struct EntityId(usize);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityStore` is never constructed
[INFO] [stdout]    --> src/main.rs:479:8
[INFO] [stdout]     |
[INFO] [stdout] 479 | struct EntityStore<T> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_entity`, `get_entity_mut`, `add_entity`, `remove_entity`, and `is_entity_free` are never used
[INFO] [stdout]    --> src/main.rs:485:12
[INFO] [stdout]     |
[INFO] [stdout] 484 | impl<T> EntityStore<T> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 485 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub fn get_entity(&self, id: EntityId) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn get_entity_mut(&mut self, id: EntityId) -> Option<&mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn add_entity(&mut self, x: T) -> EntityId {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn remove_entity(&mut self, id: EntityId) -> Option<T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     pub fn is_entity_free(&self, id: EntityId) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.04s
[INFO] running `Command { std: "docker" "inspect" "7555798df368dfaf33008178088dc2ef635656b66766cfa34ec96f1a482e8edd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7555798df368dfaf33008178088dc2ef635656b66766cfa34ec96f1a482e8edd", kill_on_drop: false }`
[INFO] [stdout] 7555798df368dfaf33008178088dc2ef635656b66766cfa34ec96f1a482e8edd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4ee29e44d3164590df24e0e9eb704aef73bb66156d125c369670046a6562389d
[INFO] running `Command { std: "docker" "start" "-a" "4ee29e44d3164590df24e0e9eb704aef73bb66156d125c369670046a6562389d", kill_on_drop: false }`
[INFO] [stdout] warning: the feature `inherent_associated_types` is incomplete and may not be safe to use and/or cause compiler crashes
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(inherent_associated_types)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
[INFO] [stdout]   = note: `#[warn(incomplete_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lexical::{self, Token};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/parser.rs:784:5
[INFO] [stdout]     |
[INFO] [stdout] 784 | use std::str::FromStr;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alphanumeric` and `Duplicator`
[INFO] [stdout]  --> src/unrust/affine.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                                              ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Operator`
[INFO] [stdout]  --> src/unrust/affine.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter`
[INFO] [stdout]  --> src/unrust/core.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::iter;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/global.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/parse.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Book`, `Constructor`, `Duplicator`, `Node`, `Redex`, and `self`
[INFO] [stdout]  --> src/unrust/parse.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                     ^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^                ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/allocator.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 273 | /         loop {
[INFO] [stdout] 274 | |             let id_range = self.allocator.read().unwrap().allocate_u64s_from_iter(xs.clone());
[INFO] [stdout] 275 | |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout] 276 | |                 return (EntityId(start_id), EntityId(end_id))
[INFO] [stdout] ...   |
[INFO] [stdout] 281 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |           panic!();
[INFO] [stdout]     |           ^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:491:14
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:491:21
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redex`
[INFO] [stdout]    --> src/runtime.rs:517:31
[INFO] [stdout]     |
[INFO] [stdout] 517 |     fn reduce_void(&mut self, redex: Pair) -> Option<()> {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_redex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_binary`
[INFO] [stdout]    --> src/runtime.rs:529:13
[INFO] [stdout]     |
[INFO] [stdout] 529 |         let tag_binary = port_binary.get_tag();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/runtime.rs:603:13
[INFO] [stdout]     |
[INFO] [stdout] 603 |         let tag = port_1.get_tag(); // tags should be the same
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:640:14
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:640:21
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:642:14
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:642:25
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:687:14
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:687:21
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:689:14
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:689:25
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:196:27
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_id`
[INFO] [stdout]    --> src/allocator.rs:196:37
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:142:66
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:146:66
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexical.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]   --> src/numeric.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/numeric.rs:219:80
[INFO] [stdout]     |
[INFO] [stdout] 219 |             Numeric::Sym(op) => 22u32 | (( Operator::iter().enumerate().find(|(i, o)| op == o).unwrap().0 as u32) << 5 ), 
[INFO] [stdout]     |                                                                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/affine.rs:67:100
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn make_function_affine(function: Function<CoreExpression>, function_names: &BTreeSet<String>, mut namer: &mut UniqueNamer) -> (Funct...
[INFO] [stdout]    |                                                                                                    ----^^^^^
[INFO] [stdout]    |                                                                                                    |
[INFO] [stdout]    |                                                                                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 let elements: Vec<_> = elements.into_iter().map(|(name, expr)| 
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/unrust/core.rs:199:77
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...   let variant_idx = g_enum.elements.iter().enumerate().find(|(i, (name, _))| name == &enum_.struct_.name).map(|(i, _)| i).unwrap();
[INFO] [stdout]     |                                                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions, struc...
[INFO] [stdout]     |                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/unrust/core.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |     elems.sort_by_key(|(n, t)| order.iter().enumerate().find(|(_, no)| no == &n).map(|(i, _)| i).unwrap());
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let mut namer = UniqueNamer {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:92:20
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn to_core(mut self) -> GlobalProgram<CoreExpression> {
[INFO] [stdout]    |                    ----^^^^
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undefined_vars`
[INFO] [stdout]   --> src/unrust/check.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let (program, _, undefined_vars) = program.map_vars(
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_undefined_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/unrust/check.rs:189:27
[INFO] [stdout]     |
[INFO] [stdout] 189 |         NativeNumber::F24(x) => Ok(())
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/parse.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut functions = HashMap::new();
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/unrust/parse.rs:79:23
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let (program, s) = Self::parse(text_cursor)?;
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/unrust/parse.rs:620:74
[INFO] [stdout]     |
[INFO] [stdout] 620 |         let native_num = NativeNumber::try_from(num.s.as_str()).map_err(|e| ParseError::new(s.index, "Unable to parse number".into()))?;
[INFO] [stdout]     |                                                                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:776:13
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let mut statements = Vec::with_capacity(self.statements.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:853:13
[INFO] [stdout]     |
[INFO] [stdout] 853 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:945:13
[INFO] [stdout]     |
[INFO] [stdout] 945 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1033:13
[INFO] [stdout]      |
[INFO] [stdout] 1033 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field`
[INFO] [stdout]     --> src/unrust/parse.rs:1191:58
[INFO] [stdout]      |
[INFO] [stdout] 1191 |     pub fn get_variant_field_index(&self, variant: &str, field: &str) -> Option<usize> {
[INFO] [stdout]      |                                                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1226:13
[INFO] [stdout]      |
[INFO] [stdout] 1226 |         let mut else_ifs = Vec::with_capacity(self.else_ifs.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1330:13
[INFO] [stdout]      |
[INFO] [stdout] 1330 |         let mut arguments = Vec::with_capacity(self.arguments.len());
[INFO] [stdout]      |             ----^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/unrust/parse.rs:1468:53
[INFO] [stdout]      |
[INFO] [stdout] 1468 |                     let val = text.parse().map_err(|e| ParseError::new(s.index, "Unable to parse alphanumeric".into()))?;
[INFO] [stdout]      |                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1489:13
[INFO] [stdout]      |
[INFO] [stdout] 1489 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1579:13
[INFO] [stdout]      |
[INFO] [stdout] 1579 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |     let mut last_token = None;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_last_token` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/unrust/lexical.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_token` is never read
[INFO] [stdout]    --> src/unrust/lexical.rs:260:9
[INFO] [stdout]     |
[INFO] [stdout] 260 |         last_token = Some(token.clone());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/unrust/lexical.rs:238:66
[INFO] [stdout]     |
[INFO] [stdout] 238 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/lexical.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_dup` is never used
[INFO] [stdout]    --> src/parser.rs:622:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | impl Duplicator {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 622 |     fn has_dup(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_value` is never used
[INFO] [stdout]    --> src/parser.rs:744:8
[INFO] [stdout]     |
[INFO] [stdout] 722 | impl Numeric {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 744 |     fn to_value(&self) -> Value {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `operator_iter` is never used
[INFO] [stdout]   --> src/unrust/lexical.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn operator_iter() -> impl Iterator<Item=Token> + Clone {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:417:15
[INFO] [stdout]     |
[INFO] [stdout] 417 |         const call: u8 = 0;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:418:15
[INFO] [stdout]     |
[INFO] [stdout] 418 |         const void: u8 = 1;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling ic v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:419:15
[INFO] [stdout]     |
[INFO] [stdout] 419 |         const erase: u8 = 2;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:420:15
[INFO] [stdout]     |
[INFO] [stdout] 420 |         const commute: u8 = 3;
[INFO] [stdout]     |               ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:421:15
[INFO] [stdout]     |
[INFO] [stdout] 421 |         const annihilate: u8 = 4;
[INFO] [stdout]     |               ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:422:15
[INFO] [stdout]     |
[INFO] [stdout] 422 |         const operator: u8 = 5;
[INFO] [stdout]     |               ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:423:15
[INFO] [stdout]     |
[INFO] [stdout] 423 |         const switch: u8 = 6;
[INFO] [stdout]     |               ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:424:15
[INFO] [stdout]     |
[INFO] [stdout] 424 |         const link: u8 = 7; // I think this is impossible
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `dispatch_table` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:426:15
[INFO] [stdout]     |
[INFO] [stdout] 426 |         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout]     |               ^^^^^^^^^^^^^^ help: convert the identifier to upper case: `DISPATCH_TABLE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:443:13
[INFO] [stdout]     |
[INFO] [stdout] 443 |             call => self.reduce_call(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             void => self.reduce_void(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:445:13
[INFO] [stdout]     |
[INFO] [stdout] 445 |             erase => self.reduce_erase(redex)?, 
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:446:13
[INFO] [stdout]     |
[INFO] [stdout] 446 |             commute => self.reduce_commute(redex)?, 
[INFO] [stdout]     |             ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:447:13
[INFO] [stdout]     |
[INFO] [stdout] 447 |             annihilate => self.reduce_annihilate(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:448:13
[INFO] [stdout]     |
[INFO] [stdout] 448 |             operator => self.reduce_operator(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:449:13
[INFO] [stdout]     |
[INFO] [stdout] 449 |             switch => self.reduce_switch(redex)?, 
[INFO] [stdout]     |             ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             link => self.link(port_1, port_2)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:849:11
[INFO] [stdout]     |
[INFO] [stdout] 849 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:860:11
[INFO] [stdout]     |
[INFO] [stdout] 860 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:861:11
[INFO] [stdout]     |
[INFO] [stdout] 861 |     const min_i24: i32 = -(1 << 23);
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             const max: u32 = 1 << 24 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/unrust/check.rs:174:16
[INFO] [stdout]     |
[INFO] [stdout] 174 |             if x >= 0 && x <= max {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 |             const max: i32 = 1 << 23 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:182:19
[INFO] [stdout]     |
[INFO] [stdout] 182 |             const min: i32 = -(1 << 23);
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MIN`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:703:11
[INFO] [stdout]     |
[INFO] [stdout] 703 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:714:11
[INFO] [stdout]     |
[INFO] [stdout] 714 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:715:11
[INFO] [stdout]     |
[INFO] [stdout] 715 |     const min_i24: i32 = -max_i24;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary1`
[INFO] [stdout]    --> src/main.rs:163:27
[INFO] [stdout]     |
[INFO] [stdout] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary2`
[INFO] [stdout]    --> src/main.rs:163:51
[INFO] [stdout]     |
[INFO] [stdout] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary`
[INFO] [stdout]    --> src/main.rs:164:27
[INFO] [stdout]     |
[INFO] [stdout] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary`
[INFO] [stdout]    --> src/main.rs:164:51
[INFO] [stdout]     |
[INFO] [stdout] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stdout]     |                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary`
[INFO] [stdout]    --> src/main.rs:165:28
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stdout]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nullary`
[INFO] [stdout]    --> src/main.rs:165:50
[INFO] [stdout]     |
[INFO] [stdout] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stdout]     |                                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary1`
[INFO] [stdout]    --> src/main.rs:166:28
[INFO] [stdout]     |
[INFO] [stdout] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `binary2`
[INFO] [stdout]    --> src/main.rs:166:52
[INFO] [stdout]     |
[INFO] [stdout] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stdout]     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortID` is never constructed
[INFO] [stdout]  --> src/main.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct PortID {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_primary` is never used
[INFO] [stdout]  --> src/main.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl PortID {
[INFO] [stdout]   | ----------- method in this implementation
[INFO] [stdout] 8 |     pub fn is_primary(&self) -> bool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connection` is never constructed
[INFO] [stdout]   --> src/main.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Connection {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nullary` is never constructed
[INFO] [stdout]   --> src/main.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Nullary {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Binary` is never constructed
[INFO] [stdout]   --> src/main.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct Binary {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Either` is never used
[INFO] [stdout]   --> src/main.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum Either<A, B> {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Combinator` is never used
[INFO] [stdout]   --> src/main.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum Combinator {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_inner`, `get_inner_mut`, `num_ports`, `get_connection`, and `get_connection_mut` are never used
[INFO] [stdout]    --> src/main.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout] 47  | impl Combinator {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 48  |     pub fn get_inner(&self) -> Either<&Nullary, &Binary> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     pub fn get_inner_mut(&mut self) -> Either<&mut Nullary, &mut Binary> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74  |     pub fn num_ports(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn get_connection(&self, port: u8) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_connection_mut(&mut self, port: u8) -> Option<&mut Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ICRuntime` is never constructed
[INFO] [stdout]    --> src/main.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct ICRuntime {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl ICRuntime {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 134 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn handle_interaction(&mut self) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn handle_nullary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn handle_nullary_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn handle_different_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn handle_same_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn add_combinator(&mut self, combinator: Combinator) -> Option<EntityId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub fn wire_free_ports(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn is_port_free(&self, id: PortID) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn get_connection(&self, id: PortID) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityId` is never constructed
[INFO] [stdout]    --> src/main.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | struct EntityId(usize);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityStore` is never constructed
[INFO] [stdout]    --> src/main.rs:479:8
[INFO] [stdout]     |
[INFO] [stdout] 479 | struct EntityStore<T> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_entity`, `get_entity_mut`, `add_entity`, `remove_entity`, and `is_entity_free` are never used
[INFO] [stdout]    --> src/main.rs:485:12
[INFO] [stdout]     |
[INFO] [stdout] 484 | impl<T> EntityStore<T> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 485 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub fn get_entity(&self, id: EntityId) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn get_entity_mut(&mut self, id: EntityId) -> Option<&mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn add_entity(&mut self, x: T) -> EntityId {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn remove_entity(&mut self, id: EntityId) -> Option<T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     pub fn is_entity_free(&self, id: EntityId) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `inherent_associated_types` is incomplete and may not be safe to use and/or cause compiler crashes
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(inherent_associated_types)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
[INFO] [stdout]   = note: `#[warn(incomplete_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lexical::{self, Token};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/parser.rs:784:5
[INFO] [stdout]     |
[INFO] [stdout] 784 | use std::str::FromStr;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alphanumeric` and `Duplicator`
[INFO] [stdout]  --> src/unrust/affine.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                                              ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Operator`
[INFO] [stdout]  --> src/unrust/affine.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter`
[INFO] [stdout]  --> src/unrust/core.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::iter;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/global.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/parse.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Book`, `Constructor`, `Duplicator`, `Node`, `Redex`, and `self`
[INFO] [stdout]  --> src/unrust/parse.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                     ^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^                ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unrust::lexical::*`
[INFO] [stdout]  --> src/unrust/test.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use crate::unrust::lexical::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/allocator.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 273 | /         loop {
[INFO] [stdout] 274 | |             let id_range = self.allocator.read().unwrap().allocate_u64s_from_iter(xs.clone());
[INFO] [stdout] 275 | |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout] 276 | |                 return (EntityId(start_id), EntityId(end_id))
[INFO] [stdout] ...   |
[INFO] [stdout] 281 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |           panic!();
[INFO] [stdout]     |           ^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:491:14
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:491:21
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `redex`
[INFO] [stdout]    --> src/runtime.rs:517:31
[INFO] [stdout]     |
[INFO] [stdout] 517 |     fn reduce_void(&mut self, redex: Pair) -> Option<()> {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_redex`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_binary`
[INFO] [stdout]    --> src/runtime.rs:529:13
[INFO] [stdout]     |
[INFO] [stdout] 529 |         let tag_binary = port_binary.get_tag();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_binary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag`
[INFO] [stdout]    --> src/runtime.rs:603:13
[INFO] [stdout]     |
[INFO] [stdout] 603 |         let tag = port_1.get_tag(); // tags should be the same
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:640:14
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:640:21
[INFO] [stdout]     |
[INFO] [stdout] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:642:14
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:642:25
[INFO] [stdout]     |
[INFO] [stdout] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_1`
[INFO] [stdout]    --> src/runtime.rs:687:14
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]    --> src/runtime.rs:687:21
[INFO] [stdout]     |
[INFO] [stdout] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_1`
[INFO] [stdout]    --> src/runtime.rs:689:14
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_2`
[INFO] [stdout]    --> src/runtime.rs:689:25
[INFO] [stdout]     |
[INFO] [stdout] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_id`
[INFO] [stdout]    --> src/allocator.rs:196:27
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_id`
[INFO] [stdout]    --> src/allocator.rs:196:37
[INFO] [stdout]     |
[INFO] [stdout] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:142:66
[INFO] [stdout]     |
[INFO] [stdout] 142 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/lexical.rs:146:66
[INFO] [stdout]     |
[INFO] [stdout] 146 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexical.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tag_2`
[INFO] [stdout]   --> src/numeric.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/numeric.rs:219:80
[INFO] [stdout]     |
[INFO] [stdout] 219 |             Numeric::Sym(op) => 22u32 | (( Operator::iter().enumerate().find(|(i, o)| op == o).unwrap().0 as u32) << 5 ), 
[INFO] [stdout]     |                                                                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/affine.rs:67:100
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn make_function_affine(function: Function<CoreExpression>, function_names: &BTreeSet<String>, mut namer: &mut UniqueNamer) -> (Funct...
[INFO] [stdout]    |                                                                                                    ----^^^^^
[INFO] [stdout]    |                                                                                                    |
[INFO] [stdout]    |                                                                                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:156:67
[INFO] [stdout]     |
[INFO] [stdout] 156 |                 let elements: Vec<_> = elements.into_iter().map(|(name, expr)| 
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/unrust/core.rs:199:77
[INFO] [stdout]     |
[INFO] [stdout] 199 | ...   let variant_idx = g_enum.elements.iter().enumerate().find(|(i, (name, _))| name == &enum_.struct_.name).map(|(i, _)| i).unwrap();
[INFO] [stdout]     |                                                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/unrust/core.rs:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions, struc...
[INFO] [stdout]     |                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/unrust/core.rs:379:28
[INFO] [stdout]     |
[INFO] [stdout] 379 |     elems.sort_by_key(|(n, t)| order.iter().enumerate().find(|(_, no)| no == &n).map(|(i, _)| i).unwrap());
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let mut namer = UniqueNamer {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/global.rs:92:20
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn to_core(mut self) -> GlobalProgram<CoreExpression> {
[INFO] [stdout]    |                    ----^^^^
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undefined_vars`
[INFO] [stdout]   --> src/unrust/check.rs:64:26
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let (program, _, undefined_vars) = program.map_vars(
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_undefined_vars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/unrust/check.rs:189:27
[INFO] [stdout]     |
[INFO] [stdout] 189 |         NativeNumber::F24(x) => Ok(())
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/unrust/parse.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let mut functions = HashMap::new();
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/unrust/parse.rs:79:23
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let (program, s) = Self::parse(text_cursor)?;
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/unrust/parse.rs:620:74
[INFO] [stdout]     |
[INFO] [stdout] 620 |         let native_num = NativeNumber::try_from(num.s.as_str()).map_err(|e| ParseError::new(s.index, "Unable to parse number".into()))?;
[INFO] [stdout]     |                                                                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:776:13
[INFO] [stdout]     |
[INFO] [stdout] 776 |         let mut statements = Vec::with_capacity(self.statements.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:853:13
[INFO] [stdout]     |
[INFO] [stdout] 853 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/parse.rs:945:13
[INFO] [stdout]     |
[INFO] [stdout] 945 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1033:13
[INFO] [stdout]      |
[INFO] [stdout] 1033 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `field`
[INFO] [stdout]     --> src/unrust/parse.rs:1191:58
[INFO] [stdout]      |
[INFO] [stdout] 1191 |     pub fn get_variant_field_index(&self, variant: &str, field: &str) -> Option<usize> {
[INFO] [stdout]      |                                                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1226:13
[INFO] [stdout]      |
[INFO] [stdout] 1226 |         let mut else_ifs = Vec::with_capacity(self.else_ifs.len());
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1330:13
[INFO] [stdout]      |
[INFO] [stdout] 1330 |         let mut arguments = Vec::with_capacity(self.arguments.len());
[INFO] [stdout]      |             ----^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/unrust/parse.rs:1468:53
[INFO] [stdout]      |
[INFO] [stdout] 1468 |                     let val = text.parse().map_err(|e| ParseError::new(s.index, "Unable to parse alphanumeric".into()))?;
[INFO] [stdout]      |                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1489:13
[INFO] [stdout]      |
[INFO] [stdout] 1489 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/unrust/parse.rs:1579:13
[INFO] [stdout]      |
[INFO] [stdout] 1579 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |     let mut last_token = None;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_last_token` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/unrust/lexical.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_token` is never read
[INFO] [stdout]    --> src/unrust/lexical.rs:260:9
[INFO] [stdout]     |
[INFO] [stdout] 260 |         last_token = Some(token.clone());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/unrust/lexical.rs:238:66
[INFO] [stdout]     |
[INFO] [stdout] 238 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stdout]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/unrust/lexical.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let mut k = 0;
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_dup` is never used
[INFO] [stdout]    --> src/parser.rs:622:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | impl Duplicator {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 622 |     fn has_dup(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_value` is never used
[INFO] [stdout]    --> src/parser.rs:744:8
[INFO] [stdout]     |
[INFO] [stdout] 722 | impl Numeric {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 744 |     fn to_value(&self) -> Value {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `operator_iter` is never used
[INFO] [stdout]   --> src/unrust/lexical.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     fn operator_iter() -> impl Iterator<Item=Token> + Clone {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:417:15
[INFO] [stdout]     |
[INFO] [stdout] 417 |         const call: u8 = 0;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:418:15
[INFO] [stdout]     |
[INFO] [stdout] 418 |         const void: u8 = 1;
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:419:15
[INFO] [stdout]     |
[INFO] [stdout] 419 |         const erase: u8 = 2;
[INFO] [stdout]     |               ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:420:15
[INFO] [stdout]     |
[INFO] [stdout] 420 |         const commute: u8 = 3;
[INFO] [stdout]     |               ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:421:15
[INFO] [stdout]     |
[INFO] [stdout] 421 |         const annihilate: u8 = 4;
[INFO] [stdout]     |               ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:422:15
[INFO] [stdout]     |
[INFO] [stdout] 422 |         const operator: u8 = 5;
[INFO] [stdout]     |               ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:423:15
[INFO] [stdout]     |
[INFO] [stdout] 423 |         const switch: u8 = 6;
[INFO] [stdout]     |               ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:424:15
[INFO] [stdout]     |
[INFO] [stdout] 424 |         const link: u8 = 7; // I think this is impossible
[INFO] [stdout]     |               ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `dispatch_table` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:426:15
[INFO] [stdout]     |
[INFO] [stdout] 426 |         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout]     |               ^^^^^^^^^^^^^^ help: convert the identifier to upper case: `DISPATCH_TABLE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `call` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:443:13
[INFO] [stdout]     |
[INFO] [stdout] 443 |             call => self.reduce_call(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `void` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:444:13
[INFO] [stdout]     |
[INFO] [stdout] 444 |             void => self.reduce_void(redex)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `erase` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:445:13
[INFO] [stdout]     |
[INFO] [stdout] 445 |             erase => self.reduce_erase(redex)?, 
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `commute` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:446:13
[INFO] [stdout]     |
[INFO] [stdout] 446 |             commute => self.reduce_commute(redex)?, 
[INFO] [stdout]     |             ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `annihilate` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:447:13
[INFO] [stdout]     |
[INFO] [stdout] 447 |             annihilate => self.reduce_annihilate(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `operator` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:448:13
[INFO] [stdout]     |
[INFO] [stdout] 448 |             operator => self.reduce_operator(redex)?, 
[INFO] [stdout]     |             ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `switch` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:449:13
[INFO] [stdout]     |
[INFO] [stdout] 449 |             switch => self.reduce_switch(redex)?, 
[INFO] [stdout]     |             ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `link` should have an upper case name
[INFO] [stdout]    --> src/runtime.rs:450:13
[INFO] [stdout]     |
[INFO] [stdout] 450 |             link => self.link(port_1, port_2)?, 
[INFO] [stdout]     |             ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:849:11
[INFO] [stdout]     |
[INFO] [stdout] 849 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:860:11
[INFO] [stdout]     |
[INFO] [stdout] 860 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/parser.rs:861:11
[INFO] [stdout]     |
[INFO] [stdout] 861 |     const min_i24: i32 = -(1 << 23);
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:173:19
[INFO] [stdout]     |
[INFO] [stdout] 173 |             const max: u32 = 1 << 24 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/unrust/check.rs:174:16
[INFO] [stdout]     |
[INFO] [stdout] 174 |             if x >= 0 && x <= max {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:181:19
[INFO] [stdout]     |
[INFO] [stdout] 181 |             const max: i32 = 1 << 23 - 1;
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min` should have an upper case name
[INFO] [stdout]    --> src/unrust/check.rs:182:19
[INFO] [stdout]     |
[INFO] [stdout] 182 |             const min: i32 = -(1 << 23);
[INFO] [stdout]     |                   ^^^ help: convert the identifier to upper case: `MIN`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_u24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:703:11
[INFO] [stdout]     |
[INFO] [stdout] 703 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `max_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:714:11
[INFO] [stdout]     |
[INFO] [stdout] 714 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `min_i24` should have an upper case name
[INFO] [stdout]    --> src/unrust/parse.rs:715:11
[INFO] [stdout]     |
[INFO] [stdout] 715 |     const min_i24: i32 = -max_i24;
[INFO] [stdout]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.69s
[INFO] running `Command { std: "docker" "inspect" "4ee29e44d3164590df24e0e9eb704aef73bb66156d125c369670046a6562389d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4ee29e44d3164590df24e0e9eb704aef73bb66156d125c369670046a6562389d", kill_on_drop: false }`
[INFO] [stdout] 4ee29e44d3164590df24e0e9eb704aef73bb66156d125c369670046a6562389d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e7c16566d67681cc430e9bcffc58f6ef29ad4d1da541d71496ebe168e59de8a3
[INFO] running `Command { std: "docker" "start" "-a" "e7c16566d67681cc430e9bcffc58f6ef29ad4d1da541d71496ebe168e59de8a3", kill_on_drop: false }`
[INFO] [stderr] warning: the feature `inherent_associated_types` is incomplete and may not be safe to use and/or cause compiler crashes
[INFO] [stderr]  --> src/lib.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | #![feature(inherent_associated_types)]
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
[INFO] [stderr]   = note: `#[warn(incomplete_features)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self`
[INFO] [stderr]  --> src/parser.rs:1:22
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::lexical::{self, Token};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]    --> src/parser.rs:784:5
[INFO] [stderr]     |
[INFO] [stderr] 784 | use std::str::FromStr;
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Alphanumeric` and `Duplicator`
[INFO] [stderr]  --> src/unrust/affine.rs:2:46
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stderr]   |                                              ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Operator`
[INFO] [stderr]  --> src/unrust/affine.rs:3:28
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::numeric::{self, Operator};
[INFO] [stderr]   |                            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::iter`
[INFO] [stderr]  --> src/unrust/core.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::iter;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self`
[INFO] [stderr]  --> src/unrust/global.rs:2:22
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::numeric::{self, Operator};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self`
[INFO] [stderr]  --> src/unrust/parse.rs:5:22
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::numeric::{self, Operator};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Book`, `Constructor`, `Duplicator`, `Node`, `Redex`, and `self`
[INFO] [stderr]  --> src/unrust/parse.rs:6:21
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stderr]   |                     ^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^                ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable statement
[INFO] [stderr]    --> src/allocator.rs:283:9
[INFO] [stderr]     |
[INFO] [stderr] 273 | /         loop {
[INFO] [stderr] 274 | |             let id_range = self.allocator.read().unwrap().allocate_u64s_from_iter(xs.clone());
[INFO] [stderr] 275 | |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stderr] 276 | |                 return (EntityId(start_id), EntityId(end_id))
[INFO] [stderr] ...   |
[INFO] [stderr] 281 | |         }
[INFO] [stderr]     | |_________- any code following this expression is unreachable
[INFO] [stderr] 282 |
[INFO] [stderr] 283 |           panic!();
[INFO] [stderr]     |           ^^^^^^^^ unreachable statement
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_code)]` on by default
[INFO] [stderr]     = note: this warning originates in the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_1`
[INFO] [stderr]    --> src/runtime.rs:491:14
[INFO] [stderr]     |
[INFO] [stderr] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_2`
[INFO] [stderr]    --> src/runtime.rs:491:21
[INFO] [stderr]     |
[INFO] [stderr] 491 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `redex`
[INFO] [stderr]    --> src/runtime.rs:517:31
[INFO] [stderr]     |
[INFO] [stderr] 517 |     fn reduce_void(&mut self, redex: Pair) -> Option<()> {
[INFO] [stderr]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_redex`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_binary`
[INFO] [stderr]    --> src/runtime.rs:529:13
[INFO] [stderr]     |
[INFO] [stderr] 529 |         let tag_binary = port_binary.get_tag();
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_binary`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag`
[INFO] [stderr]    --> src/runtime.rs:603:13
[INFO] [stderr]     |
[INFO] [stderr] 603 |         let tag = port_1.get_tag(); // tags should be the same
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_tag`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_1`
[INFO] [stderr]    --> src/runtime.rs:640:14
[INFO] [stderr]     |
[INFO] [stderr] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_2`
[INFO] [stderr]    --> src/runtime.rs:640:21
[INFO] [stderr]     |
[INFO] [stderr] 640 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address_1`
[INFO] [stderr]    --> src/runtime.rs:642:14
[INFO] [stderr]     |
[INFO] [stderr] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stderr]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address_2`
[INFO] [stderr]    --> src/runtime.rs:642:25
[INFO] [stderr]     |
[INFO] [stderr] 642 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stderr]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_1`
[INFO] [stderr]    --> src/runtime.rs:687:14
[INFO] [stderr]     |
[INFO] [stderr] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_2`
[INFO] [stderr]    --> src/runtime.rs:687:21
[INFO] [stderr]     |
[INFO] [stderr] 687 |         let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]     |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address_1`
[INFO] [stderr]    --> src/runtime.rs:689:14
[INFO] [stderr]     |
[INFO] [stderr] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stderr]     |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address_2`
[INFO] [stderr]    --> src/runtime.rs:689:25
[INFO] [stderr]     |
[INFO] [stderr] 689 |         let (address_1, address_2) = (port_1.get_value(), port_2.get_value());
[INFO] [stderr]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `start_id`
[INFO] [stderr]    --> src/allocator.rs:151:27
[INFO] [stderr]     |
[INFO] [stderr] 151 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stderr]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `start_id`
[INFO] [stderr]    --> src/allocator.rs:196:27
[INFO] [stderr]     |
[INFO] [stderr] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stderr]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_id`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end_id`
[INFO] [stderr]    --> src/allocator.rs:196:37
[INFO] [stderr]     |
[INFO] [stderr] 196 |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stderr]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_end_id`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `k`
[INFO] [stderr]    --> src/lexical.rs:136:13
[INFO] [stderr]     |
[INFO] [stderr] 136 |     let mut k = 0;
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]    --> src/lexical.rs:142:66
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stderr]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]    --> src/lexical.rs:146:66
[INFO] [stderr]     |
[INFO] [stderr] 146 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stderr]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lexical.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |     let mut k = 0;
[INFO] [stderr]     |         ----^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tag_2`
[INFO] [stderr]   --> src/numeric.rs:10:17
[INFO] [stderr]    |
[INFO] [stderr] 10 |     let (tag_1, tag_2) = (port_1.get_tag(), port_2.get_tag());
[INFO] [stderr]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_tag_2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/numeric.rs:219:80
[INFO] [stderr]     |
[INFO] [stderr] 219 |             Numeric::Sym(op) => 22u32 | (( Operator::iter().enumerate().find(|(i, o)| op == o).unwrap().0 as u32) << 5 ), 
[INFO] [stderr]     |                                                                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/unrust/affine.rs:67:100
[INFO] [stderr]    |
[INFO] [stderr] 67 |     fn make_function_affine(function: Function<CoreExpression>, function_names: &BTreeSet<String>, mut namer: &mut UniqueNamer) -> (Funct...
[INFO] [stderr]    |                                                                                                    ----^^^^^
[INFO] [stderr]    |                                                                                                    |
[INFO] [stderr]    |                                                                                                    help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]    --> src/unrust/core.rs:156:67
[INFO] [stderr]     |
[INFO] [stderr] 156 |                 let elements: Vec<_> = elements.into_iter().map(|(name, expr)| 
[INFO] [stderr]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/unrust/core.rs:199:77
[INFO] [stderr]     |
[INFO] [stderr] 199 | ...   let variant_idx = g_enum.elements.iter().enumerate().find(|(i, (name, _))| name == &enum_.struct_.name).map(|(i, _)| i).unwrap();
[INFO] [stderr]     |                                                                   ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]    --> src/unrust/core.rs:203:59
[INFO] [stderr]     |
[INFO] [stderr] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions, struc...
[INFO] [stderr]     |                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `t`
[INFO] [stderr]    --> src/unrust/core.rs:379:28
[INFO] [stderr]     |
[INFO] [stderr] 379 |     elems.sort_by_key(|(n, t)| order.iter().enumerate().find(|(_, no)| no == &n).map(|(i, _)| i).unwrap());
[INFO] [stderr]     |                            ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/unrust/global.rs:55:13
[INFO] [stderr]    |
[INFO] [stderr] 55 |         let mut namer = UniqueNamer {
[INFO] [stderr]    |             ----^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/unrust/global.rs:92:20
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub fn to_core(mut self) -> GlobalProgram<CoreExpression> {
[INFO] [stderr]    |                    ----^^^^
[INFO] [stderr]    |                    |
[INFO] [stderr]    |                    help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `undefined_vars`
[INFO] [stderr]   --> src/unrust/check.rs:64:26
[INFO] [stderr]    |
[INFO] [stderr] 64 |         let (program, _, undefined_vars) = program.map_vars(
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_undefined_vars`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `x`
[INFO] [stderr]    --> src/unrust/check.rs:189:27
[INFO] [stderr]     |
[INFO] [stderr] 189 |         NativeNumber::F24(x) => Ok(())
[INFO] [stderr]     |                           ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/unrust/parse.rs:51:13
[INFO] [stderr]    |
[INFO] [stderr] 51 |         let mut functions = HashMap::new();
[INFO] [stderr]    |             ----^^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]   --> src/unrust/parse.rs:79:23
[INFO] [stderr]    |
[INFO] [stderr] 79 |         let (program, s) = Self::parse(text_cursor)?;
[INFO] [stderr]    |                       ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/unrust/parse.rs:162:13
[INFO] [stderr]     |
[INFO] [stderr] 162 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]    --> src/unrust/parse.rs:620:74
[INFO] [stderr]     |
[INFO] [stderr] 620 |         let native_num = NativeNumber::try_from(num.s.as_str()).map_err(|e| ParseError::new(s.index, "Unable to parse number".into()))?;
[INFO] [stderr]     |                                                                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/unrust/parse.rs:776:13
[INFO] [stderr]     |
[INFO] [stderr] 776 |         let mut statements = Vec::with_capacity(self.statements.len());
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/unrust/parse.rs:853:13
[INFO] [stderr]     |
[INFO] [stderr] 853 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/unrust/parse.rs:945:13
[INFO] [stderr]     |
[INFO] [stderr] 945 |         let mut parameters = Vec::with_capacity(self.parameters.len());
[INFO] [stderr]     |             ----^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/unrust/parse.rs:1033:13
[INFO] [stderr]      |
[INFO] [stderr] 1033 |         let mut elements = Vec::with_capacity(self.elements.len());
[INFO] [stderr]      |             ----^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `field`
[INFO] [stderr]     --> src/unrust/parse.rs:1191:58
[INFO] [stderr]      |
[INFO] [stderr] 1191 |     pub fn get_variant_field_index(&self, variant: &str, field: &str) -> Option<usize> {
[INFO] [stderr]      |                                                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_field`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/unrust/parse.rs:1226:13
[INFO] [stderr]      |
[INFO] [stderr] 1226 |         let mut else_ifs = Vec::with_capacity(self.else_ifs.len());
[INFO] [stderr]      |             ----^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/unrust/parse.rs:1330:13
[INFO] [stderr]      |
[INFO] [stderr] 1330 |         let mut arguments = Vec::with_capacity(self.arguments.len());
[INFO] [stderr]      |             ----^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]     --> src/unrust/parse.rs:1468:53
[INFO] [stderr]      |
[INFO] [stderr] 1468 |                     let val = text.parse().map_err(|e| ParseError::new(s.index, "Unable to parse alphanumeric".into()))?;
[INFO] [stderr]      |                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/unrust/parse.rs:1489:13
[INFO] [stderr]      |
[INFO] [stderr] 1489 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stderr]      |             ----^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/unrust/parse.rs:1579:13
[INFO] [stderr]      |
[INFO] [stderr] 1579 |         let mut cases = Vec::with_capacity(self.cases.len());
[INFO] [stderr]      |             ----^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `last_token` is assigned to, but never used
[INFO] [stderr]    --> src/unrust/lexical.rs:229:13
[INFO] [stderr]     |
[INFO] [stderr] 229 |     let mut last_token = None;
[INFO] [stderr]     |             ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_last_token` instead
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `k`
[INFO] [stderr]    --> src/unrust/lexical.rs:231:13
[INFO] [stderr]     |
[INFO] [stderr] 231 |     let mut k = 0;
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `last_token` is never read
[INFO] [stderr]    --> src/unrust/lexical.rs:260:9
[INFO] [stderr]     |
[INFO] [stderr] 260 |         last_token = Some(token.clone());
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]    --> src/unrust/lexical.rs:238:66
[INFO] [stderr]     |
[INFO] [stderr] 238 |                 parse_fixed_token(&s[i..], token.as_str()).map(|(s, e)| (token, e))
[INFO] [stderr]     |                                                                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/unrust/lexical.rs:231:9
[INFO] [stderr]     |
[INFO] [stderr] 231 |     let mut k = 0;
[INFO] [stderr]     |         ----^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: method `has_dup` is never used
[INFO] [stderr]    --> src/parser.rs:622:8
[INFO] [stderr]     |
[INFO] [stderr] 621 | impl Duplicator {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] 622 |     fn has_dup(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_value` is never used
[INFO] [stderr]    --> src/parser.rs:744:8
[INFO] [stderr]     |
[INFO] [stderr] 722 | impl Numeric {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 744 |     fn to_value(&self) -> Value {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `operator_iter` is never used
[INFO] [stderr]   --> src/unrust/lexical.rs:89:8
[INFO] [stderr]    |
[INFO] [stderr] 32 | impl Token {
[INFO] [stderr]    | ---------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 89 |     fn operator_iter() -> impl Iterator<Item=Token> + Clone {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `call` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:417:15
[INFO] [stderr]     |
[INFO] [stderr] 417 |         const call: u8 = 0;
[INFO] [stderr]     |               ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `void` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:418:15
[INFO] [stderr]     |
[INFO] [stderr] 418 |         const void: u8 = 1;
[INFO] [stderr]     |               ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `erase` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:419:15
[INFO] [stderr]     |
[INFO] [stderr] 419 |         const erase: u8 = 2;
[INFO] [stderr]     |               ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `commute` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:420:15
[INFO] [stderr]     |
[INFO] [stderr] 420 |         const commute: u8 = 3;
[INFO] [stderr]     |               ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `annihilate` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:421:15
[INFO] [stderr]     |
[INFO] [stderr] 421 |         const annihilate: u8 = 4;
[INFO] [stderr]     |               ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `operator` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:422:15
[INFO] [stderr]     |
[INFO] [stderr] 422 |         const operator: u8 = 5;
[INFO] [stderr]     |               ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `switch` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:423:15
[INFO] [stderr]     |
[INFO] [stderr] 423 |         const switch: u8 = 6;
[INFO] [stderr]     |               ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `link` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:424:15
[INFO] [stderr]     |
[INFO] [stderr] 424 |         const link: u8 = 7; // I think this is impossible
[INFO] [stderr]     |               ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `dispatch_table` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:426:15
[INFO] [stderr]     |
[INFO] [stderr] 426 |         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stderr]     |               ^^^^^^^^^^^^^^ help: convert the identifier to upper case: `DISPATCH_TABLE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `call` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:443:13
[INFO] [stderr]     |
[INFO] [stderr] 443 |             call => self.reduce_call(redex)?, 
[INFO] [stderr]     |             ^^^^ help: convert the identifier to upper case: `CALL`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `void` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:444:13
[INFO] [stderr]     |
[INFO] [stderr] 444 |             void => self.reduce_void(redex)?, 
[INFO] [stderr]     |             ^^^^ help: convert the identifier to upper case: `VOID`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `erase` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:445:13
[INFO] [stderr]     |
[INFO] [stderr] 445 |             erase => self.reduce_erase(redex)?, 
[INFO] [stderr]     |             ^^^^^ help: convert the identifier to upper case: `ERASE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `commute` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:446:13
[INFO] [stderr]     |
[INFO] [stderr] 446 |             commute => self.reduce_commute(redex)?, 
[INFO] [stderr]     |             ^^^^^^^ help: convert the identifier to upper case: `COMMUTE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `annihilate` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:447:13
[INFO] [stderr]     |
[INFO] [stderr] 447 |             annihilate => self.reduce_annihilate(redex)?, 
[INFO] [stderr]     |             ^^^^^^^^^^ help: convert the identifier to upper case: `ANNIHILATE`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `operator` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:448:13
[INFO] [stderr]     |
[INFO] [stderr] 448 |             operator => self.reduce_operator(redex)?, 
[INFO] [stderr]     |             ^^^^^^^^ help: convert the identifier to upper case: `OPERATOR`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `switch` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:449:13
[INFO] [stderr]     |
[INFO] [stderr] 449 |             switch => self.reduce_switch(redex)?, 
[INFO] [stderr]     |             ^^^^^^ help: convert the identifier to upper case: `SWITCH`
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `link` should have an upper case name
[INFO] [stderr]    --> src/runtime.rs:450:13
[INFO] [stderr]     |
[INFO] [stderr] 450 |             link => self.link(port_1, port_2)?, 
[INFO] [stderr]     |             ^^^^ help: convert the identifier to upper case: `LINK`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max_u24` should have an upper case name
[INFO] [stderr]    --> src/parser.rs:849:11
[INFO] [stderr]     |
[INFO] [stderr] 849 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max_i24` should have an upper case name
[INFO] [stderr]    --> src/parser.rs:860:11
[INFO] [stderr]     |
[INFO] [stderr] 860 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `min_i24` should have an upper case name
[INFO] [stderr]    --> src/parser.rs:861:11
[INFO] [stderr]     |
[INFO] [stderr] 861 |     const min_i24: i32 = -(1 << 23);
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max` should have an upper case name
[INFO] [stderr]    --> src/unrust/check.rs:173:19
[INFO] [stderr]     |
[INFO] [stderr] 173 |             const max: u32 = 1 << 24 - 1;
[INFO] [stderr]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]    --> src/unrust/check.rs:174:16
[INFO] [stderr]     |
[INFO] [stderr] 174 |             if x >= 0 && x <= max {
[INFO] [stderr]     |                ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max` should have an upper case name
[INFO] [stderr]    --> src/unrust/check.rs:181:19
[INFO] [stderr]     |
[INFO] [stderr] 181 |             const max: i32 = 1 << 23 - 1;
[INFO] [stderr]     |                   ^^^ help: convert the identifier to upper case: `MAX`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `min` should have an upper case name
[INFO] [stderr]    --> src/unrust/check.rs:182:19
[INFO] [stderr]     |
[INFO] [stderr] 182 |             const min: i32 = -(1 << 23);
[INFO] [stderr]     |                   ^^^ help: convert the identifier to upper case: `MIN`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max_u24` should have an upper case name
[INFO] [stderr]    --> src/unrust/parse.rs:703:11
[INFO] [stderr]     |
[INFO] [stderr] 703 |     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_U24`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `max_i24` should have an upper case name
[INFO] [stderr]    --> src/unrust/parse.rs:714:11
[INFO] [stderr]     |
[INFO] [stderr] 714 |     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MAX_I24`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `min_i24` should have an upper case name
[INFO] [stderr]    --> src/unrust/parse.rs:715:11
[INFO] [stderr]     |
[INFO] [stderr] 715 |     const min_i24: i32 = -max_i24;
[INFO] [stderr]     |           ^^^^^^^ help: convert the identifier to upper case: `MIN_I24`
[INFO] [stderr] 
[INFO] [stderr] warning: `ic` (lib) generated 90 warnings (run `cargo fix --lib -p ic` to apply 23 suggestions)
[INFO] [stderr] warning: unused variable: `nullary1`
[INFO] [stderr]    --> src/main.rs:163:27
[INFO] [stderr]     |
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stderr] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stderr]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary1`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `nullary2`
[INFO] [stderr]    --> src/main.rs:163:51
[INFO] [stderr]     |
[INFO] [stderr] 163 |             (Either::Left(nullary1), Either::Left(nullary2)) => {self.handle_nullary_interaction(port_id1, port_id2);}, 
[INFO] [stderr]     |                                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `nullary`
[INFO] [stderr]    --> src/main.rs:164:27
[INFO] [stderr]     |
[INFO] [stderr] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stderr]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `binary`
[INFO] [stderr]    --> src/main.rs:164:51
[INFO] [stderr]     |
[INFO] [stderr] 164 |             (Either::Left(nullary), Either::Right(binary)) => {self.handle_nullary_binary_interaction(port_id1, port_id2);}, 
[INFO] [stderr]     |                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `binary`
[INFO] [stderr]    --> src/main.rs:165:28
[INFO] [stderr]     |
[INFO] [stderr] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stderr]     |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `nullary`
[INFO] [stderr]    --> src/main.rs:165:50
[INFO] [stderr]     |
[INFO] [stderr] 165 |             (Either::Right(binary), Either::Left(nullary)) => {self.handle_nullary_binary_interaction(port_id2, port_id1);}, 
[INFO] [stderr]     |                                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nullary`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `binary1`
[INFO] [stderr]    --> src/main.rs:166:28
[INFO] [stderr]     |
[INFO] [stderr] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stderr]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `binary2`
[INFO] [stderr]    --> src/main.rs:166:52
[INFO] [stderr]     |
[INFO] [stderr] 166 |             (Either::Right(binary1), Either::Right(binary2)) => {
[INFO] [stderr]     |                                                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_binary2`
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PortID` is never constructed
[INFO] [stderr]  --> src/main.rs:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 | struct PortID {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_primary` is never used
[INFO] [stderr]  --> src/main.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | impl PortID {
[INFO] [stderr]   | ----------- method in this implementation
[INFO] [stderr] 8 |     pub fn is_primary(&self) -> bool {
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Connection` is never constructed
[INFO] [stderr]   --> src/main.rs:14:8
[INFO] [stderr]    |
[INFO] [stderr] 14 | struct Connection {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Nullary` is never constructed
[INFO] [stderr]   --> src/main.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | struct Nullary {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Binary` is never constructed
[INFO] [stderr]   --> src/main.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | struct Binary {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Either` is never used
[INFO] [stderr]   --> src/main.rs:30:6
[INFO] [stderr]    |
[INFO] [stderr] 30 | enum Either<A, B> {
[INFO] [stderr]    |      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Combinator` is never used
[INFO] [stderr]   --> src/main.rs:36:6
[INFO] [stderr]    |
[INFO] [stderr] 36 | enum Combinator {
[INFO] [stderr]    |      ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_inner`, `get_inner_mut`, `num_ports`, `get_connection`, and `get_connection_mut` are never used
[INFO] [stderr]    --> src/main.rs:48:12
[INFO] [stderr]     |
[INFO] [stderr] 47  | impl Combinator {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] 48  |     pub fn get_inner(&self) -> Either<&Nullary, &Binary> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61  |     pub fn get_inner_mut(&mut self) -> Either<&mut Nullary, &mut Binary> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 74  |     pub fn num_ports(&self) -> u8 {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 81  |     pub fn get_connection(&self, port: u8) -> Option<&Connection> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 104 |     pub fn get_connection_mut(&mut self, port: u8) -> Option<&mut Connection> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ICRuntime` is never constructed
[INFO] [stderr]    --> src/main.rs:128:8
[INFO] [stderr]     |
[INFO] [stderr] 128 | struct ICRuntime {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/main.rs:134:12
[INFO] [stderr]     |
[INFO] [stderr] 133 | impl ICRuntime {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr] 134 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     fn handle_interaction(&mut self) -> Option<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 180 |     fn handle_nullary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 202 |     fn handle_nullary_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 246 |     fn handle_different_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 361 |     fn handle_same_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 391 |     pub fn add_combinator(&mut self, combinator: Combinator) -> Option<EntityId> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 432 |     pub fn wire_free_ports(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 457 |     pub fn is_port_free(&self, id: PortID) -> Option<bool> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 464 |     pub fn get_connection(&self, id: PortID) -> Option<&Connection> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EntityId` is never constructed
[INFO] [stderr]    --> src/main.rs:477:8
[INFO] [stderr]     |
[INFO] [stderr] 477 | struct EntityId(usize);
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `EntityStore` is never constructed
[INFO] [stderr]    --> src/main.rs:479:8
[INFO] [stderr]     |
[INFO] [stderr] 479 | struct EntityStore<T> {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `get_entity`, `get_entity_mut`, `add_entity`, `remove_entity`, and `is_entity_free` are never used
[INFO] [stderr]    --> src/main.rs:485:12
[INFO] [stderr]     |
[INFO] [stderr] 484 | impl<T> EntityStore<T> {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] 485 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 492 |     pub fn get_entity(&self, id: EntityId) -> Option<&T> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 496 |     pub fn get_entity_mut(&mut self, id: EntityId) -> Option<&mut T> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 500 |     pub fn add_entity(&mut self, x: T) -> EntityId {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 511 |     pub fn remove_entity(&mut self, id: EntityId) -> Option<T> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 521 |     pub fn is_entity_free(&self, id: EntityId) -> Option<bool> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `ic` (bin "ic" test) generated 21 warnings
[INFO] [stderr] warning: unused import: `crate::unrust::lexical::*`
[INFO] [stderr]  --> src/unrust/test.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     use crate::unrust::lexical::*;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `ic` (lib test) generated 91 warnings (90 duplicates) (run `cargo fix --lib -p ic --tests` to apply 1 suggestion)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ic-0d87d8f7e1c49179)
[INFO] [stdout] test test::tests::test_operator_and ... ok
[INFO] [stdout] test test::tests::test_operator_fp_divide ... ok
[INFO] [stdout] test test::tests::test_operator_add ... ok
[INFO] [stdout] test test::tests::test_identity_application ... ok
[INFO] [stdout] test test::tests::test_branch ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_left ... ok
[INFO] [stdout] test test::tests::test_operator_shift_left ... ok
[INFO] [stdout] test test::tests::test_operator_or ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_right ... ok
[INFO] [stdout] test test::tests::test_operator_sub ... ok
[INFO] [stdout] test test::tests::test_operator_multiply ... ok
[INFO] [stdout] test test::tests::test_operator_shift_right ... ok
[INFO] [stdout] test test::tests::test_operator_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_less_than ... ok
[INFO] [stdout] test test::tests::test_operator_greater_than ... ok
[INFO] [stdout] test test::tests::test_operator_fp_subtract ... ok
[INFO] [stdout] test test::tests::test_function_calling ... ok
[INFO] [stdout] test test::tests::test_operator_xor ... ok
[INFO] [stdout] test test::tests::test_operator_divide ... ok
[INFO] [stdout] test test::tests::test_summation ... ok
[INFO] [stdout] test test::tests::test_operator_fp_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_not_equal ... ok
[INFO] [stdout] test unrust::test::tests::test_return ... ok
[INFO] [stdout] test test::tests::test_operator_equal ... ok
[INFO] [stdout] test unrust::test::tests::test_add ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- unrust::test::tests::test_add stdout ----
[INFO] [stdout] tokens [Reference, Alphanumeric("main"), Equal, Alphanumeric("7")]
[INFO] [stdout] Expected program: Program { main: Book { name: Alphanumeric { s: "main" }, net: Net { tree: Numeric(Number(Number { n: Alphanumeric { s: "7" }, native_num: U24(7) })), redexes: [] } }, others: [] }
[INFO] [stdout] Tokens: [Fn, Alphanumeric("main"), LeftParenthesis, RightParenthesis, LeftBrace, Alphanumeric("2"), Operator(Add), Alphanumeric("5"), RightBrace]
[INFO] [stdout] FUCK!!!!
[INFO] [stdout] 
[INFO] [stdout] thread 'unrust::test::tests::test_add' panicked at src/unrust/test.rs:47:31:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: ParseError { index: 7, msg: "Expected right brace" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61abc08884da - std::backtrace_rs::backtrace::libunwind::trace::hb059275cfc8d6126
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x61abc08884da - std::backtrace_rs::backtrace::trace_unsynchronized::h2da071e4327ce3ee
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x61abc08884da - std::sys::backtrace::_print_fmt::h842a1474e6f8d23f
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x61abc08884da - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h71a62eb3b9696b12
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x61abc08b1ab3 - core::fmt::rt::Argument::fmt::hdb6b616786b41dc1
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x61abc08b1ab3 - core::fmt::write::h2cc1698af7e2d686
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/fmt/mod.rs:1440:21
[INFO] [stdout]    6:     0x61abc0885023 - std::io::Write::write_fmt::hab1b4cd059a79022
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/io/mod.rs:1887:15
[INFO] [stdout]    7:     0x61abc0888322 - std::sys::backtrace::BacktraceLock::print::h147fe35b4ea13b08
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x61abc08898ff - std::panicking::default_hook::{{closure}}::hbd44223dbdc0d208
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:298:22
[INFO] [stdout]    9:     0x61abc0889718 - std::panicking::default_hook::h20f81eb0576efcec
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:322:9
[INFO] [stdout]   10:     0x61abc08523c3 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hdb53814c496a4d34
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/alloc/src/boxed.rs:2027:9
[INFO] [stdout]   11:     0x61abc08523c3 - test::test_main::{{closure}}::hc0a4963c59427c24
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:134:21
[INFO] [stdout]   12:     0x61abc088a3f3 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h591b2225413a77e9
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/alloc/src/boxed.rs:2027:9
[INFO] [stdout]   13:     0x61abc088a3f3 - std::panicking::rust_panic_with_hook::h625eea43051b2edc
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:839:13
[INFO] [stdout]   14:     0x61abc088a0aa - std::panicking::begin_panic_handler::{{closure}}::h4f9159cfbc3f6bd3
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:704:13
[INFO] [stdout]   15:     0x61abc08889d9 - std::sys::backtrace::__rust_end_short_backtrace::h0390abce48353151
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/backtrace.rs:168:18
[INFO] [stdout]   16:     0x61abc0889d3d - rust_begin_unwind
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:695:5
[INFO] [stdout]   17:     0x61abc08af6b0 - core::panicking::panic_fmt::h9e7c637e9e5f29c9
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/panicking.rs:75:14
[INFO] [stdout]   18:     0x61abc08afb56 - core::result::unwrap_failed::h7979f09313fe1849
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/result.rs:1704:5
[INFO] [stdout]   19:     0x61abc07d1613 - core::result::Result<T,E>::unwrap::he7e3d5856b5ab906
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/result.rs:1109:23
[INFO] [stdout]   20:     0x61abc07d1613 - ic::unrust::test::tests::does_reduce_to::haac2af7a683034ba
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:47:23
[INFO] [stdout]   21:     0x61abc07d3717 - ic::unrust::test::tests::test_add::hc6245daf3e361e1e
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:29:17
[INFO] [stdout]   22:     0x61abc07d36b7 - ic::unrust::test::tests::test_add::{{closure}}::h68a53b8c0fcae88c
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:25:18
[INFO] [stdout]   23:     0x61abc07ea056 - core::ops::function::FnOnce::call_once::h353ca836349a05cd
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x61abc0857b1b - core::ops::function::FnOnce::call_once::he27718dfdd183f43
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x61abc0857b1b - test::__rust_begin_short_backtrace::h4e84902998457a5d
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:632:18
[INFO] [stdout]   26:     0x61abc0856a53 - test::run_test_in_process::{{closure}}::h7176fd18fc1feca0
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:655:60
[INFO] [stdout]   27:     0x61abc0856a53 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hf79cff2a624d8cf7
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   28:     0x61abc0856a53 - std::panicking::try::do_call::h3da0561d9ab99c25
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:587:40
[INFO] [stdout]   29:     0x61abc0856a53 - std::panicking::try::h41c9fa508bc61df6
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:550:19
[INFO] [stdout]   30:     0x61abc0856a53 - std::panic::catch_unwind::h6b3ff07bb5afad93
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panic.rs:358:14
[INFO] [stdout]   31:     0x61abc0856a53 - test::run_test_in_process::hc7253dd11b39b9f4
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:655:27
[INFO] [stdout]   32:     0x61abc0856a53 - test::run_test::{{closure}}::hfb2007f8649c30bb
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:576:43
[INFO] [stdout]   33:     0x61abc0819b35 - test::run_test::{{closure}}::h56a17aa7a282a9f4
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/test/src/lib.rs:606:41
[INFO] [stdout]   34:     0x61abc0819b35 - std::sys::backtrace::__rust_begin_short_backtrace::hd2d2d2fb8e8c6aac
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/backtrace.rs:152:18
[INFO] [stdout]   35:     0x61abc081d41a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h4faa3f9db6133423
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/thread/mod.rs:559:17
[INFO] [stdout]   36:     0x61abc081d41a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hf2e855a36a4ea846
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   37:     0x61abc081d41a - std::panicking::try::do_call::h2f73af3616c35465
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:587:40
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] [stdout]   38:     0x61abc081d41a - std::panicking::try::hd1660ce9efadef5a
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panicking.rs:550:19
[INFO] [stdout]   39:     0x61abc081d41a - std::panic::catch_unwind::h5ee8d7823b8ca744
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/panic.rs:358:14
[INFO] [stdout]   40:     0x61abc081d41a - std::thread::Builder::spawn_unchecked_::{{closure}}::h53c3a1894dce8407
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/thread/mod.rs:557:30
[INFO] [stdout]   41:     0x61abc081d41a - core::ops::function::FnOnce::call_once{{vtable.shim}}::h048ce291ad4f62bf
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x61abc088e42b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::ha52bedf99a3b4981
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/alloc/src/boxed.rs:2013:9
[INFO] [stdout]   43:     0x61abc088e42b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h567748934d80ccf8
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/alloc/src/boxed.rs:2013:9
[INFO] [stdout]   44:     0x61abc088e42b - std::sys::pal::unix::thread::Thread::new::thread_start::h2d970728ae887adc
[INFO] [stdout]                                at /rustc/6067b36314ab5eb2eb47cecc464545ba58e1ad24/library/std/src/sys/pal/unix/thread.rs:106:17
[INFO] [stdout]   45:     0x771e7e150ac3 - <unknown>
[INFO] [stdout]   46:     0x771e7e1e1a04 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     unrust::test::tests::test_add
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 24 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "e7c16566d67681cc430e9bcffc58f6ef29ad4d1da541d71496ebe168e59de8a3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e7c16566d67681cc430e9bcffc58f6ef29ad4d1da541d71496ebe168e59de8a3", kill_on_drop: false }`
[INFO] [stdout] e7c16566d67681cc430e9bcffc58f6ef29ad4d1da541d71496ebe168e59de8a3
