[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 master#d98a5da813da67eb189387b8ccfb73cf481275d8+rustflags=-Copt-level=3 for pr-138759
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGadersd%2Fic" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[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-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Gadersd/ic on toolchain d98a5da813da67eb189387b8ccfb73cf481275d8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ceb9497c944e505e48e8b2a4bee0e17abdfe9b9dfe05d9d2426d4aa858bceab5
[INFO] running `Command { std: "docker" "start" "-a" "ceb9497c944e505e48e8b2a4bee0e17abdfe9b9dfe05d9d2426d4aa858bceab5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ceb9497c944e505e48e8b2a4bee0e17abdfe9b9dfe05d9d2426d4aa858bceab5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ceb9497c944e505e48e8b2a4bee0e17abdfe9b9dfe05d9d2426d4aa858bceab5", kill_on_drop: false }`
[INFO] [stdout] ceb9497c944e505e48e8b2a4bee0e17abdfe9b9dfe05d9d2426d4aa858bceab5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d67467eb6d717b2b6661e4eea24ddd373defe1786618c0796c4e7ec1a3ae6b6c
[INFO] running `Command { std: "docker" "start" "-a" "d67467eb6d717b2b6661e4eea24ddd373defe1786618c0796c4e7ec1a3ae6b6c", kill_on_drop: false }`
[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] 
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 417 -         const call: u8 = 0;
[INFO] [stdout] 417 +         const CALL: u8 = 0;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 418 -         const void: u8 = 1;
[INFO] [stdout] 418 +         const VOID: u8 = 1;
[INFO] [stdout]     |
[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]     |               ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 419 -         const erase: u8 = 2;
[INFO] [stdout] 419 +         const ERASE: u8 = 2;
[INFO] [stdout]     |
[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]     |               ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 420 -         const commute: u8 = 3;
[INFO] [stdout] 420 +         const COMMUTE: u8 = 3;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 421 -         const annihilate: u8 = 4;
[INFO] [stdout] 421 +         const ANNIHILATE: u8 = 4;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 422 -         const operator: u8 = 5;
[INFO] [stdout] 422 +         const OPERATOR: u8 = 5;
[INFO] [stdout]     |
[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]     |               ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 423 -         const switch: u8 = 6;
[INFO] [stdout] 423 +         const SWITCH: u8 = 6;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 424 -         const link: u8 = 7; // I think this is impossible
[INFO] [stdout] 424 +         const LINK: u8 = 7; // I think this is impossible
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 426 -         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout] 426 +         const DISPATCH_TABLE: [[u8; 8]; 8] = [
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 849 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 849 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 860 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 860 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 861 -     const min_i24: i32 = -(1 << 23);
[INFO] [stdout] 861 +     const MIN_I24: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 173 -             const max: u32 = 1 << 24 - 1;
[INFO] [stdout] 173 +             const MAX: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 181 -             const max: i32 = 1 << 23 - 1;
[INFO] [stdout] 181 +             const MAX: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 182 -             const min: i32 = -(1 << 23);
[INFO] [stdout] 182 +             const MIN: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 703 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 703 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 714 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 714 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 715 -     const min_i24: i32 = -max_i24;
[INFO] [stdout] 715 +     const MIN_I24: i32 = -max_i24;
[INFO] [stdout]     |
[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 16.45s
[INFO] running `Command { std: "docker" "inspect" "d67467eb6d717b2b6661e4eea24ddd373defe1786618c0796c4e7ec1a3ae6b6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d67467eb6d717b2b6661e4eea24ddd373defe1786618c0796c4e7ec1a3ae6b6c", kill_on_drop: false }`
[INFO] [stdout] d67467eb6d717b2b6661e4eea24ddd373defe1786618c0796c4e7ec1a3ae6b6c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 730902047b3c6bda4c67074ce9e5c49be6d65b165611059eb768d8febd2b82de
[INFO] running `Command { std: "docker" "start" "-a" "730902047b3c6bda4c67074ce9e5c49be6d65b165611059eb768d8febd2b82de", 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] 
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 417 -         const call: u8 = 0;
[INFO] [stdout] 417 +         const CALL: u8 = 0;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 418 -         const void: u8 = 1;
[INFO] [stdout] 418 +         const VOID: u8 = 1;
[INFO] [stdout]     |
[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]     |               ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 419 -         const erase: u8 = 2;
[INFO] [stdout] 419 +         const ERASE: u8 = 2;
[INFO] [stdout]     |
[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]     |               ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 420 -         const commute: u8 = 3;
[INFO] [stdout] 420 +         const COMMUTE: u8 = 3;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 421 -         const annihilate: u8 = 4;
[INFO] [stdout] 421 +         const ANNIHILATE: u8 = 4;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 422 -         const operator: u8 = 5;
[INFO] [stdout] 422 +         const OPERATOR: u8 = 5;
[INFO] [stdout]     |
[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]     |               ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 423 -         const switch: u8 = 6;
[INFO] [stdout] 423 +         const SWITCH: u8 = 6;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 424 -         const link: u8 = 7; // I think this is impossible
[INFO] [stdout] 424 +         const LINK: u8 = 7; // I think this is impossible
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 426 -         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout] 426 +         const DISPATCH_TABLE: [[u8; 8]; 8] = [
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 849 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 849 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 860 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 860 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling ic v0.1.0 (/opt/rustwide/workdir)
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 861 -     const min_i24: i32 = -(1 << 23);
[INFO] [stdout] 861 +     const MIN_I24: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 173 -             const max: u32 = 1 << 24 - 1;
[INFO] [stdout] 173 +             const MAX: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 181 -             const max: i32 = 1 << 23 - 1;
[INFO] [stdout] 181 +             const MAX: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 182 -             const min: i32 = -(1 << 23);
[INFO] [stdout] 182 +             const MIN: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 703 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 703 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 714 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 714 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 715 -     const min_i24: i32 = -max_i24;
[INFO] [stdout] 715 +     const MIN_I24: i32 = -max_i24;
[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: 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: 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] 
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 417 -         const call: u8 = 0;
[INFO] [stdout] 417 +         const CALL: u8 = 0;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 418 -         const void: u8 = 1;
[INFO] [stdout] 418 +         const VOID: u8 = 1;
[INFO] [stdout]     |
[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]     |               ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 419 -         const erase: u8 = 2;
[INFO] [stdout] 419 +         const ERASE: u8 = 2;
[INFO] [stdout]     |
[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]     |               ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 420 -         const commute: u8 = 3;
[INFO] [stdout] 420 +         const COMMUTE: u8 = 3;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 421 -         const annihilate: u8 = 4;
[INFO] [stdout] 421 +         const ANNIHILATE: u8 = 4;
[INFO] [stdout]     |
[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]     |               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 422 -         const operator: u8 = 5;
[INFO] [stdout] 422 +         const OPERATOR: u8 = 5;
[INFO] [stdout]     |
[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]     |               ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 423 -         const switch: u8 = 6;
[INFO] [stdout] 423 +         const SWITCH: u8 = 6;
[INFO] [stdout]     |
[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]     |               ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 424 -         const link: u8 = 7; // I think this is impossible
[INFO] [stdout] 424 +         const LINK: u8 = 7; // I think this is impossible
[INFO] [stdout]     |
[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]     |               ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 426 -         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stdout] 426 +         const DISPATCH_TABLE: [[u8; 8]; 8] = [
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 849 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 849 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 860 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 860 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 861 -     const min_i24: i32 = -(1 << 23);
[INFO] [stdout] 861 +     const MIN_I24: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 173 -             const max: u32 = 1 << 24 - 1;
[INFO] [stdout] 173 +             const MAX: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 181 -             const max: i32 = 1 << 23 - 1;
[INFO] [stdout] 181 +             const MAX: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |                   ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 182 -             const min: i32 = -(1 << 23);
[INFO] [stdout] 182 +             const MIN: i32 = -(1 << 23);
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 703 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stdout] 703 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 714 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stdout] 714 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stdout]     |
[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]     |           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 715 -     const min_i24: i32 = -max_i24;
[INFO] [stdout] 715 +     const MIN_I24: i32 = -max_i24;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 16.21s
[INFO] running `Command { std: "docker" "inspect" "730902047b3c6bda4c67074ce9e5c49be6d65b165611059eb768d8febd2b82de", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "730902047b3c6bda4c67074ce9e5c49be6d65b165611059eb768d8febd2b82de", kill_on_drop: false }`
[INFO] [stdout] 730902047b3c6bda4c67074ce9e5c49be6d65b165611059eb768d8febd2b82de
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 08d1a6ea3d907e09528ec5e23038636c5fece8b81f3b8e037ea9ceb6bfd229b7
[INFO] running `Command { std: "docker" "start" "-a" "08d1a6ea3d907e09528ec5e23038636c5fece8b81f3b8e037ea9ceb6bfd229b7", 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] 
[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]     |               ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_upper_case_globals)]` on by default
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 417 -         const call: u8 = 0;
[INFO] [stderr] 417 +         const CALL: u8 = 0;
[INFO] [stderr]     |
[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]     |               ^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 418 -         const void: u8 = 1;
[INFO] [stderr] 418 +         const VOID: u8 = 1;
[INFO] [stderr]     |
[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]     |               ^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 419 -         const erase: u8 = 2;
[INFO] [stderr] 419 +         const ERASE: u8 = 2;
[INFO] [stderr]     |
[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]     |               ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 420 -         const commute: u8 = 3;
[INFO] [stderr] 420 +         const COMMUTE: u8 = 3;
[INFO] [stderr]     |
[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]     |               ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 421 -         const annihilate: u8 = 4;
[INFO] [stderr] 421 +         const ANNIHILATE: u8 = 4;
[INFO] [stderr]     |
[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]     |               ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 422 -         const operator: u8 = 5;
[INFO] [stderr] 422 +         const OPERATOR: u8 = 5;
[INFO] [stderr]     |
[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]     |               ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 423 -         const switch: u8 = 6;
[INFO] [stderr] 423 +         const SWITCH: u8 = 6;
[INFO] [stderr]     |
[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]     |               ^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 424 -         const link: u8 = 7; // I think this is impossible
[INFO] [stderr] 424 +         const LINK: u8 = 7; // I think this is impossible
[INFO] [stderr]     |
[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]     |               ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 426 -         const dispatch_table: [[u8; 8]; 8] = [
[INFO] [stderr] 426 +         const DISPATCH_TABLE: [[u8; 8]; 8] = [
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 849 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stderr] 849 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 860 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stderr] 860 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 861 -     const min_i24: i32 = -(1 << 23);
[INFO] [stderr] 861 +     const MIN_I24: i32 = -(1 << 23);
[INFO] [stderr]     |
[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]     |                   ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 173 -             const max: u32 = 1 << 24 - 1;
[INFO] [stderr] 173 +             const MAX: u32 = 1 << 24 - 1;
[INFO] [stderr]     |
[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]     |                   ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 181 -             const max: i32 = 1 << 23 - 1;
[INFO] [stderr] 181 +             const MAX: i32 = 1 << 23 - 1;
[INFO] [stderr]     |
[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]     |                   ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 182 -             const min: i32 = -(1 << 23);
[INFO] [stderr] 182 +             const MIN: i32 = -(1 << 23);
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 703 -     const max_u24: u32 = 1 << 24 - 1;
[INFO] [stderr] 703 +     const MAX_U24: u32 = 1 << 24 - 1;
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 714 -     const max_i24: i32 = 1 << 23 - 1;
[INFO] [stderr] 714 +     const MAX_I24: i32 = 1 << 23 - 1;
[INFO] [stderr]     |
[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]     |           ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]     |
[INFO] [stderr] 715 -     const min_i24: i32 = -max_i24;
[INFO] [stderr] 715 +     const MIN_I24: i32 = -max_i24;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: `ic` (lib) generated 90 warnings (run `cargo fix --lib -p ic` to apply 41 suggestions)
[INFO] [stderr] warning: unused variable: `nullary1`
[INFO] [stderr]    --> src/main.rs:163:27
[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: `_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.07s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ic-b53d544839e66208)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test test::tests::test_function_calling ... ok
[INFO] [stdout] test test::tests::test_identity_application ... ok
[INFO] [stdout] test test::tests::test_operator_add ... ok
[INFO] [stdout] test test::tests::test_operator_fp_divide ... ok
[INFO] [stdout] test test::tests::test_operator_and ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_left ... ok
[INFO] [stdout] test test::tests::test_branch ... ok
[INFO] [stdout] test test::tests::test_operator_fp_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_equal ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_right ... ok
[INFO] [stdout] test test::tests::test_summation ... ok
[INFO] [stdout] test test::tests::test_operator_shift_left ... ok
[INFO] [stdout] test test::tests::test_operator_greater_than ... ok
[INFO] [stdout] test unrust::test::tests::test_return ... ok
[INFO] [stdout] test test::tests::test_operator_multiply ... ok
[INFO] [stdout] test test::tests::test_operator_or ... ok
[INFO] [stdout] test test::tests::test_operator_less_than ... ok
[INFO] [stdout] test test::tests::test_operator_sub ... ok
[INFO] [stdout] test test::tests::test_operator_shift_right ... ok
[INFO] [stdout] test test::tests::test_operator_fp_subtract ... ok
[INFO] [stdout] test test::tests::test_operator_not_equal ... ok
[INFO] [stdout] test test::tests::test_operator_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_divide ... ok
[INFO] [stdout] test test::tests::test_operator_xor ... 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:     0x5e3c5694b852 - std::backtrace_rs::backtrace::libunwind::trace::hd39b1f53d3cf9745
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5e3c5694b852 - std::backtrace_rs::backtrace::trace_unsynchronized::he91d9a75d4e3972b
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5e3c5694b852 - std::sys::backtrace::_print_fmt::hca46938f8c6e22cf
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x5e3c5694b852 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::ha499add612cccf8e
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x5e3c56972703 - core::fmt::rt::Argument::fmt::hd21145b75a833b7a
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/fmt/rt.rs:173:76
[INFO] [stdout]    5:     0x5e3c56972703 - core::fmt::write::hb10c956f5235c8a4
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/fmt/mod.rs:1465:25
[INFO] [stdout]    6:     0x5e3c56948a23 - std::io::default_write_fmt::hdb7615052be2ba4d
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5e3c56948a23 - std::io::Write::write_fmt::he1bcd251ec6e4153
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/io/mod.rs:1954:13
[INFO] [stdout]    8:     0x5e3c5694b6a2 - std::sys::backtrace::BacktraceLock::print::hb47c770ef659fd10
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    9:     0x5e3c5694cdbc - std::panicking::default_hook::{{closure}}::hdda8afb9d457a22c
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:300:27
[INFO] [stdout]   10:     0x5e3c5694cc12 - std::panicking::default_hook::h7c46b44874fe5c9a
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:324:9
[INFO] [stdout]   11:     0x5e3c56914ba4 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h178a5fcedee41e2f
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/alloc/src/boxed.rs:1985:9
[INFO] [stdout]   12:     0x5e3c56914ba4 - test::test_main_with_exit_callback::{{closure}}::h951a41e0149d6d5d
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5e3c5694d79b - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h13602080f5b63276
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/alloc/src/boxed.rs:1985:9
[INFO] [stdout]   14:     0x5e3c5694d79b - std::panicking::rust_panic_with_hook::ha6cb99ed099eb1c5
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:841:13
[INFO] [stdout]   15:     0x5e3c5694d56a - std::panicking::begin_panic_handler::{{closure}}::he11808bc797ee921
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:706:13
[INFO] [stdout]   16:     0x5e3c5694bd49 - std::sys::backtrace::__rust_end_short_backtrace::h9418807cb7346258
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/backtrace.rs:168:18
[INFO] [stdout]   17:     0x5e3c5694d1fd - __rustc[18fb429eef004894]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:697:5
[INFO] [stdout]   18:     0x5e3c569704c0 - core::panicking::panic_fmt::hd890aeb12c3a3fc3
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/panicking.rs:75:14
[INFO] [stdout]   19:     0x5e3c56970896 - core::result::unwrap_failed::h31c9775ec1a50121
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/result.rs:1761:5
[INFO] [stdout]   20:     0x5e3c568af322 - core::result::Result<T,E>::unwrap::h1b6adfe36ffa71cf
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/result.rs:1167:23
[INFO] [stdout]   21:     0x5e3c568af322 - ic::unrust::test::tests::does_reduce_to::h04c9c5a57b2c77bc
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:47:31
[INFO] [stdout]   22:     0x5e3c568cd43c - ic::unrust::test::tests::test_add::hcf0958038f1125a4
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:29:17
[INFO] [stdout]   23:     0x5e3c568cd43c - ic::unrust::test::tests::test_add::{{closure}}::h80d93eb96b3f03f3
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:25:18
[INFO] [stdout]   24:     0x5e3c568cd43c - core::ops::function::FnOnce::call_once::hd5e3c9b0ab0bbed2
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5e3c5691a32b - core::ops::function::FnOnce::call_once::h2869fb5b0a2b0bdc
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x5e3c5691a32b - test::__rust_begin_short_backtrace::h7dd7142bd62fa711
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:648:18
[INFO] [stdout]   27:     0x5e3c5691951e - test::run_test_in_process::{{closure}}::h43a753f038d36b3f
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:671:74
[INFO] [stdout]   28:     0x5e3c5691951e - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h0ca95dd3e12d1e16
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   29:     0x5e3c5691951e - std::panicking::catch_unwind::do_call::he308587d70ac34ba
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:589:40
[INFO] [stdout]   30:     0x5e3c5691951e - std::panicking::catch_unwind::h30dcba31973e8fb0
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:552:19
[INFO] [stdout]   31:     0x5e3c5691951e - std::panic::catch_unwind::hfb68364e5621fbee
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x5e3c5691951e - test::run_test_in_process::hcdcc2977903b998a
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:671:27
[INFO] [stdout]   33:     0x5e3c5691951e - test::run_test::{{closure}}::h544a6550958c5d14
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:592:43
[INFO] [stdout]   34:     0x5e3c568dd094 - test::run_test::{{closure}}::hb172e48ebe2b92c7
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/test/src/lib.rs:622:41
[INFO] [stdout]   35:     0x5e3c568dd094 - std::sys::backtrace::__rust_begin_short_backtrace::h7e79d8706638bea0
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/backtrace.rs:152:18
[INFO] [stdout]   36:     0x5e3c568e0a6a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hc4a275f1e71b8ab0
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/thread/mod.rs:559:17
[INFO] [stdout]   37:     0x5e3c568e0a6a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h01ed0d242df78cfd
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   38:     0x5e3c568e0a6a - std::panicking::catch_unwind::do_call::h052f373fb905fee0
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:589:40
[INFO] [stdout]   39:     0x5e3c568e0a6a - std::panicking::catch_unwind::hb425d20c8ffb09c8
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panicking.rs:552:19
[INFO] [stdout]   40:     0x5e3c568e0a6a - std::panic::catch_unwind::ha0d5dfbf18fdeda5
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x5e3c568e0a6a - std::thread::Builder::spawn_unchecked_::{{closure}}::hbe79182bd37949c7
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/thread/mod.rs:557:30
[INFO] [stdout]   42:     0x5e3c568e0a6a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc096c4a06972fde5
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x5e3c569507f7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h47377e27fb938a26
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/alloc/src/boxed.rs:1971:9
[INFO] [stdout]   44:     0x5e3c569507f7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h72f1fe5d095abf57
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/alloc/src/boxed.rs:1971:9
[INFO] [stdout]   45:     0x5e3c569507f7 - std::sys::pal::unix::thread::Thread::new::thread_start::h0a4d8e1b9c0d38cf
[INFO] [stdout]                                at /rustc/d98a5da813da67eb189387b8ccfb73cf481275d8/library/std/src/sys/pal/unix/thread.rs:97:17
[INFO] [stdout]   46:     0x734ffbc14aa4 - <unknown>
[INFO] [stdout]   47:     0x734ffbca1a34 - clone
[INFO] [stdout]   48:                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.10s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "08d1a6ea3d907e09528ec5e23038636c5fece8b81f3b8e037ea9ceb6bfd229b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "08d1a6ea3d907e09528ec5e23038636c5fece8b81f3b8e037ea9ceb6bfd229b7", kill_on_drop: false }`
[INFO] [stdout] 08d1a6ea3d907e09528ec5e23038636c5fece8b81f3b8e037ea9ceb6bfd229b7
