[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 try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGadersd%2Fic" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/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-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Gadersd/ic on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a26d1b32f9b2c4e06f2625745b4a4b619d3f273cd75d0edaa5be1f07d0b3d002
[INFO] running `Command { std: "docker" "start" "-a" "a26d1b32f9b2c4e06f2625745b4a4b619d3f273cd75d0edaa5be1f07d0b3d002", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a26d1b32f9b2c4e06f2625745b4a4b619d3f273cd75d0edaa5be1f07d0b3d002", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a26d1b32f9b2c4e06f2625745b4a4b619d3f273cd75d0edaa5be1f07d0b3d002", kill_on_drop: false }`
[INFO] [stdout] a26d1b32f9b2c4e06f2625745b4a4b619d3f273cd75d0edaa5be1f07d0b3d002
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7d50f4e0af663f333751ad4b2d6ff4548c2bafed5e1dc4ce88519bdb08a6e5f8
[INFO] running `Command { std: "docker" "start" "-a" "7d50f4e0af663f333751ad4b2d6ff4548c2bafed5e1dc4ce88519bdb08a6e5f8", 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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: 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)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:9
[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: `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) -> (...
[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:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions,...
[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 | ...ents.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: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: `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 | ..._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 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: 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 `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:9
[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:9
[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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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 3.81s
[INFO] running `Command { std: "docker" "inspect" "7d50f4e0af663f333751ad4b2d6ff4548c2bafed5e1dc4ce88519bdb08a6e5f8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d50f4e0af663f333751ad4b2d6ff4548c2bafed5e1dc4ce88519bdb08a6e5f8", kill_on_drop: false }`
[INFO] [stdout] 7d50f4e0af663f333751ad4b2d6ff4548c2bafed5e1dc4ce88519bdb08a6e5f8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 48401f5325cd9c5e56f9aab122323b3c4a541f0f955c1b1b40aed8ece07af95e
[INFO] running `Command { std: "docker" "start" "-a" "48401f5325cd9c5e56f9aab122323b3c4a541f0f955c1b1b40aed8ece07af95e", 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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: 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)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:9
[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: `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) -> (...
[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:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions,...
[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 | ...ents.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: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: `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 | ..._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 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: 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 `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:9
[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:9
[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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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]    Compiling ic v0.1.0 (/opt/rustwide/workdir)
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_primary` is never used
[INFO] [stdout]  --> src/main.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl PortID {
[INFO] [stdout]   | ----------- method in this implementation
[INFO] [stdout] 8 |     pub fn is_primary(&self) -> bool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connection` is never constructed
[INFO] [stdout]   --> src/main.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Connection {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nullary` is never constructed
[INFO] [stdout]   --> src/main.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Nullary {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Binary` is never constructed
[INFO] [stdout]   --> src/main.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct Binary {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Either` is never used
[INFO] [stdout]   --> src/main.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | enum Either<A, B> {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Combinator` is never used
[INFO] [stdout]   --> src/main.rs:36:6
[INFO] [stdout]    |
[INFO] [stdout] 36 | enum Combinator {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_inner`, `get_inner_mut`, `num_ports`, `get_connection`, and `get_connection_mut` are never used
[INFO] [stdout]    --> src/main.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl Combinator {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout]  48 |     pub fn get_inner(&self) -> Either<&Nullary, &Binary> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn get_inner_mut(&mut self) -> Either<&mut Nullary, &mut Binary> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn num_ports(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_connection(&self, port: u8) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_connection_mut(&mut self, port: u8) -> Option<&mut Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ICRuntime` is never constructed
[INFO] [stdout]    --> src/main.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct ICRuntime {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/main.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl ICRuntime {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 134 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn handle_interaction(&mut self) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn handle_nullary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn handle_nullary_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn handle_different_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn handle_same_binary_interaction(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn add_combinator(&mut self, combinator: Combinator) -> Option<EntityId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     pub fn wire_free_ports(&mut self, port_id1: PortID, port_id2: PortID) -> Option<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn is_port_free(&self, id: PortID) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn get_connection(&self, id: PortID) -> Option<&Connection> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityId` is never constructed
[INFO] [stdout]    --> src/main.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | struct EntityId(usize);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityStore` is never constructed
[INFO] [stdout]    --> src/main.rs:479:8
[INFO] [stdout]     |
[INFO] [stdout] 479 | struct EntityStore<T> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_entity`, `get_entity_mut`, `add_entity`, `remove_entity`, and `is_entity_free` are never used
[INFO] [stdout]    --> src/main.rs:485:12
[INFO] [stdout]     |
[INFO] [stdout] 484 | impl<T> EntityStore<T> {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 485 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub fn get_entity(&self, id: EntityId) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn get_entity_mut(&mut self, id: EntityId) -> Option<&mut T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn add_entity(&mut self, x: T) -> EntityId {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn remove_entity(&mut self, id: EntityId) -> Option<T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     pub fn is_entity_free(&self, id: EntityId) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `inherent_associated_types` is incomplete and may not be safe to use and/or cause compiler crashes
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(inherent_associated_types)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
[INFO] [stdout]   = note: `#[warn(incomplete_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/parser.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lexical::{self, Token};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/parser.rs:784:5
[INFO] [stdout]     |
[INFO] [stdout] 784 | use std::str::FromStr;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Alphanumeric` and `Duplicator`
[INFO] [stdout]  --> src/unrust/affine.rs:2:46
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                                              ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Operator`
[INFO] [stdout]  --> src/unrust/affine.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter`
[INFO] [stdout]  --> src/unrust/core.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::iter;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/global.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/unrust/parse.rs:5:22
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::numeric::{self, Operator};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Book`, `Constructor`, `Duplicator`, `Node`, `Redex`, and `self`
[INFO] [stdout]  --> src/unrust/parse.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::parser::{self, Node, Constructor, Duplicator, Alphanumeric, Redex, Book};
[INFO] [stdout]   |                     ^^^^  ^^^^  ^^^^^^^^^^^  ^^^^^^^^^^                ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::unrust::lexical::*`
[INFO] [stdout]  --> src/unrust/test.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use crate::unrust::lexical::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/allocator.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 273 | /         loop {
[INFO] [stdout] 274 | |             let id_range = self.allocator.read().unwrap().allocate_u64s_from_iter(xs.clone());
[INFO] [stdout] 275 | |             if let Some( (start_id, end_id) ) = id_range {
[INFO] [stdout] 276 | |                 return (EntityId(start_id), EntityId(end_id))
[INFO] [stdout] ...   |
[INFO] [stdout] 281 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 282 |
[INFO] [stdout] 283 |           panic!();
[INFO] [stdout]     |           ^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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: 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)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `k`
[INFO] [stdout]    --> src/lexical.rs:136:9
[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: `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) -> (...
[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:203:59
[INFO] [stdout]     |
[INFO] [stdout] 203 | ...   let elements = elements.into_iter().map(|(name, expr)| CoreExpression::from_expression(expr, namer, add_functions, functions,...
[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 | ...ents.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: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: `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 | ..._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 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: 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 `last_token` is assigned to, but never used
[INFO] [stdout]    --> src/unrust/lexical.rs:229:9
[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:9
[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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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 3.71s
[INFO] running `Command { std: "docker" "inspect" "48401f5325cd9c5e56f9aab122323b3c4a541f0f955c1b1b40aed8ece07af95e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "48401f5325cd9c5e56f9aab122323b3c4a541f0f955c1b1b40aed8ece07af95e", kill_on_drop: false }`
[INFO] [stdout] 48401f5325cd9c5e56f9aab122323b3c4a541f0f955c1b1b40aed8ece07af95e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 84f3cf4b0829c20f772751165350b9cc2de1e493149c153bd704c2345bd96b28
[INFO] running `Command { std: "docker" "start" "-a" "84f3cf4b0829c20f772751165350b9cc2de1e493149c153bd704c2345bd96b28", 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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: 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)]` (part of `#[warn(unused)]`) on by default
[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: unused variable: `k`
[INFO] [stderr]    --> src/lexical.rs:136:9
[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: `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) -> (...
[INFO] [stderr]    |                                                                                                    ----^^^^^
[INFO] [stderr]    |                                                                                                    |
[INFO] [stderr]    |                                                                                                    help: remove this `mut`
[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,...
[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 | ...ents.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: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: `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 | ..._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 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: 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 `last_token` is assigned to, but never used
[INFO] [stderr]    --> src/unrust/lexical.rs:229:9
[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:9
[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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(nonstandard_style)]`) 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 74 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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 (run `cargo fix --bin "ic" -p ic --tests` to apply 8 suggestions)
[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.15s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ic-00bab1872c914e09)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test test::tests::test_branch ... ok
[INFO] [stdout] test test::tests::test_operator_and ... ok
[INFO] [stdout] test test::tests::test_function_calling ... ok
[INFO] [stdout] test test::tests::test_operator_fp_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_left ... ok
[INFO] [stdout] test test::tests::test_identity_application ... ok
[INFO] [stdout] test test::tests::test_operator_divide ... ok
[INFO] [stdout] test test::tests::test_operator_fp_shift_right ... 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_shift_right ... ok
[INFO] [stdout] test test::tests::test_operator_not_equal ... ok
[INFO] [stdout] test test::tests::test_operator_shift_left ... ok
[INFO] [stdout] test test::tests::test_operator_sub ... ok
[INFO] [stdout] test test::tests::test_summation ... ok
[INFO] [stdout] test unrust::test::tests::test_return ... ok
[INFO] [stdout] test test::tests::test_operator_or ... ok
[INFO] [stdout] test test::tests::test_operator_xor ... ok
[INFO] [stdout] test test::tests::test_operator_multiply ... ok
[INFO] [stdout] test unrust::test::tests::test_add ... FAILED
[INFO] [stdout] test test::tests::test_operator_greater_than ... ok
[INFO] [stdout] test test::tests::test_operator_remainder ... ok
[INFO] [stdout] test test::tests::test_operator_fp_subtract ... ok
[INFO] [stdout] test test::tests::test_operator_less_than ... ok
[INFO] [stdout] test test::tests::test_operator_equal ... ok
[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' (82) 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:     0x642f06ac0d62 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x642f06ac0d62 - std[3f03f8b59f91bef1]::backtrace_rs::backtrace::trace_unsynchronized::<std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x642f06ac0d62 - std[3f03f8b59f91bef1]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x642f06ac0d62 - <<std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[585f66e14d78f9ba]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x642f06ad6d5a - <core[585f66e14d78f9ba]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x642f06ad6d5a - core[585f66e14d78f9ba]::fmt::write
[INFO] [stdout]    6:     0x642f06ac5bb6 - std[3f03f8b59f91bef1]::io::default_write_fmt::<alloc[15e7b27aba85d2e2]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x642f06ac5bb6 - <alloc[15e7b27aba85d2e2]::vec::Vec<u8> as std[3f03f8b59f91bef1]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x642f06a9f37f - <std[3f03f8b59f91bef1]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x642f06a9f37f - std[3f03f8b59f91bef1]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x642f06ab8f29 - std[3f03f8b59f91bef1]::panicking::default_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x642f06a548de - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x642f06a548de - test[30224e0cb089acd2]::test_main_with_exit_callback::<test[30224e0cb089acd2]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x642f06ab9192 - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn for<'a, 'b> core[585f66e14d78f9ba]::ops::function::Fn<(&'a std[3f03f8b59f91bef1]::panic::PanicHookInfo<'b>,), Output = ()> + core[585f66e14d78f9ba]::marker::Sync + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::Fn<(&std[3f03f8b59f91bef1]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x642f06ab9192 - std[3f03f8b59f91bef1]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x642f06a9f438 - std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x642f06a94629 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_end_short_backtrace::<std[3f03f8b59f91bef1]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x642f06aa028d - __rustc[caa99d26c7bae192]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x642f06ad746c - core[585f66e14d78f9ba]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x642f06ad71e2 - core[585f66e14d78f9ba]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1867:5
[INFO] [stdout]   20:     0x642f069f68ea - <core[585f66e14d78f9ba]::result::Result<ic[477fc137b8852c3]::unrust::parse::Program<ic[477fc137b8852c3]::unrust::parse::Expression>, ic[477fc137b8852c3]::unrust::parse::ParseError>>::unwrap
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:1233:23
[INFO] [stdout]   21:     0x642f069f68ea - ic[477fc137b8852c3]::unrust::test::tests::does_reduce_to
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:47:31
[INFO] [stdout]   22:     0x642f069f7027 - ic[477fc137b8852c3]::unrust::test::tests::test_add
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:29:17
[INFO] [stdout]   23:     0x642f069f3e17 - ic[477fc137b8852c3]::unrust::test::tests::test_add::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/unrust/test.rs:25:18
[INFO] [stdout]   24:     0x642f06a1e7c6 - <ic[477fc137b8852c3]::unrust::test::tests::test_add::{closure#0} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x642f06a48c8b - <fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x642f06a48c8b - test[30224e0cb089acd2]::__rust_begin_short_backtrace::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, fn() -> core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x642f06a554ea - test[30224e0cb089acd2]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x642f06a554ea - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x642f06a554ea - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x642f06a554ea - std[3f03f8b59f91bef1]::panicking::catch_unwind::<core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>, core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x642f06a554ea - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<test[30224e0cb089acd2]::run_test_in_process::{closure#0}>, core[585f66e14d78f9ba]::result::Result<(), alloc[15e7b27aba85d2e2]::string::String>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x642f06a554ea - test[30224e0cb089acd2]::run_test_in_process
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x642f06a554ea - test[30224e0cb089acd2]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x642f06a4f9b4 - test[30224e0cb089acd2]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x642f06a4f9b4 - std[3f03f8b59f91bef1]::sys::backtrace::__rust_begin_short_backtrace::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x642f06a57fe2 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x642f06a57fe2 - <core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x642f06a57fe2 - std[3f03f8b59f91bef1]::panicking::catch_unwind::do_call::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x642f06a57fe2 - std[3f03f8b59f91bef1]::panicking::catch_unwind::<(), core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x642f06a57fe2 - std[3f03f8b59f91bef1]::panic::catch_unwind::<core[585f66e14d78f9ba]::panic::unwind_safe::AssertUnwindSafe<std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x642f06a57fe2 - std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked::<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x642f06a57fe2 - <std[3f03f8b59f91bef1]::thread::lifecycle::spawn_unchecked<test[30224e0cb089acd2]::run_test::{closure#1}, ()>::{closure#1} as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x642f06ac05ff - <alloc[15e7b27aba85d2e2]::boxed::Box<dyn core[585f66e14d78f9ba]::ops::function::FnOnce<(), Output = ()> + core[585f66e14d78f9ba]::marker::Send> as core[585f66e14d78f9ba]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   44:     0x642f06ac05ff - <std[3f03f8b59f91bef1]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   45:     0x776528259aa4 - <unknown>
[INFO] [stdout]   46:     0x7765282e6a64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     unrust::test::tests::test_add
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 24 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "84f3cf4b0829c20f772751165350b9cc2de1e493149c153bd704c2345bd96b28", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "84f3cf4b0829c20f772751165350b9cc2de1e493149c153bd704c2345bd96b28", kill_on_drop: false }`
[INFO] [stdout] 84f3cf4b0829c20f772751165350b9cc2de1e493149c153bd704c2345bd96b28
