[INFO] fetching crate fantasy-cpu-emulator-macros 0.2.0...
[INFO] checking fantasy-cpu-emulator-macros-0.2.0 against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577
[INFO] extracting crate fantasy-cpu-emulator-macros 0.2.0 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate fantasy-cpu-emulator-macros 0.2.0
[INFO] finished tweaking crates.io crate fantasy-cpu-emulator-macros 0.2.0
[INFO] tweaked toml for crates.io crate fantasy-cpu-emulator-macros 0.2.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate fantasy-cpu-emulator-macros 0.2.0 on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 4 packages to latest compatible versions
[INFO] [stderr]       Adding syn v1.0.109 (available: v2.0.110)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: only one of `license` or `license-file` is necessary
[INFO] [stderr] `license` should be used if the package license can be expressed with a standard SPDX expression.
[INFO] [stderr] `license-file` should be used if the package uses a non-standard license.
[INFO] [stderr] See https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields for more information.
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f4622375b9701e69f14d3f87492c0455f6d506ea6469fa85ea69d25651cb7c32
[INFO] running `Command { std: "docker" "start" "-a" "f4622375b9701e69f14d3f87492c0455f6d506ea6469fa85ea69d25651cb7c32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f4622375b9701e69f14d3f87492c0455f6d506ea6469fa85ea69d25651cb7c32", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f4622375b9701e69f14d3f87492c0455f6d506ea6469fa85ea69d25651cb7c32", kill_on_drop: false }`
[INFO] [stdout] f4622375b9701e69f14d3f87492c0455f6d506ea6469fa85ea69d25651cb7c32
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Dunmustuse_in_always_ok" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9503e8aeb500e1fa85be69884642a27a0cf0f378df57706cf576288a27d35b58
[INFO] running `Command { std: "docker" "start" "-a" "9503e8aeb500e1fa85be69884642a27a0cf0f378df57706cf576288a27d35b58", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: only one of `license` or `license-file` is necessary
[INFO] [stderr] `license` should be used if the package license can be expressed with a standard SPDX expression.
[INFO] [stderr] `license-file` should be used if the package uses a non-standard license.
[INFO] [stderr] See https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields for more information.
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking quote v1.0.42
[INFO] [stderr]     Checking fantasy-cpu-emulator-macros v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `quote::ToTokens`
[INFO] [stdout]  --> src/lib.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use quote::ToTokens;
[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 imports: `Attribute`, `PathSegment`, and `parse`
[INFO] [stdout]  --> src/lib.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use syn::{parse, Attribute, PathSegment, Result, Token};
[INFO] [stdout]   |           ^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Expr`, `Type`, and `Visibility`
[INFO] [stdout]   --> src/lib.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | use syn::{Expr, Ident, Type, Visibility};
[INFO] [stdout]    |           ^^^^         ^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/lib.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 72 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]    |          ^                                     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 72 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/lib.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 |       if (input.peek(Token![=])) {
[INFO] [stdout]    |          ^                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 77 -       if (input.peek(Token![=])) {
[INFO] [stdout] 77 +       if input.peek(Token![=])  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:105:10
[INFO] [stdout]     |
[INFO] [stdout] 105 |     while(input.peek(syn::Ident)) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 105 -     while(input.peek(syn::Ident)) {
[INFO] [stdout] 105 +     while input.peek(syn::Ident)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:274:10
[INFO] [stdout]     |
[INFO] [stdout] 274 |     while(!input.peek(Token![,])) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     while(!input.peek(Token![,])) {
[INFO] [stdout] 274 +     while !input.peek(Token![,])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:317:10
[INFO] [stdout]     |
[INFO] [stdout] 317 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |          ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 317 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 317 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:338:14
[INFO] [stdout]     |
[INFO] [stdout] 338 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 338 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 338 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:364:14
[INFO] [stdout]     |
[INFO] [stdout] 364 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 364 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 364 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:376:14
[INFO] [stdout]     |
[INFO] [stdout] 376 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 376 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 376 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:403:10
[INFO] [stdout]     |
[INFO] [stdout] 403 |     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout]     |          ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 403 -     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout] 403 +     while input.peek(H2) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:417:16
[INFO] [stdout]     |
[INFO] [stdout] 417 |           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 417 -           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout] 417 +           while input.peek(Token![-]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:442:16
[INFO] [stdout]     |
[INFO] [stdout] 442 |           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |                ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 442 -           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 442 +           while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:606:48
[INFO] [stdout]     |
[INFO] [stdout] 606 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 610 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 606 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 607 |                 {
[INFO] [stdout] 608 |                   #ty2::from_ne_bytes(#unsigned_container::to_ne_bytes(#shifted_and_masked_safe))
[INFO] [stdout] 609 |                 }
[INFO] [stdout] 610 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:628:48
[INFO] [stdout]     |
[INFO] [stdout] 628 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 646 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 628 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 629 |                 {
[INFO] [stdout] ...
[INFO] [stdout] 645 |                 }
[INFO] [stdout] 646 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:690:28
[INFO] [stdout]     |
[INFO] [stdout] 690 |     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout]     |                            ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 690 -     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout] 690 +     let guard: syn::Expr = syn::parse_quote! { (((input as u128) & #ands) == #cmp) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:692:29
[INFO] [stdout]     |
[INFO] [stdout] 692 |     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout]     |                             ^                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 692 -     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout] 692 +     let result: syn::Expr = syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/lib.rs:387:5
[INFO] [stdout]     |
[INFO] [stdout] 333 | /     match input.parse::<syn::Ident>()?.to_string().as_ref() {
[INFO] [stdout] 334 | |       "scratch" | "Scratch"   => {
[INFO] [stdout] 335 | |         let mut word_size: Option<u64> = None;
[INFO] [stdout] 336 | |         let mut address_size: Option<u64> = None;
[INFO] [stdout] ...   |
[INFO] [stdout] 385 | |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 386 | |     };
[INFO] [stdout]     | |_____- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 387 |       panic!("Failed to parse memory.");
[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 import: `quote::ToTokens`
[INFO] [stdout]  --> src/lib.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use quote::ToTokens;
[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 imports: `Attribute`, `PathSegment`, and `parse`
[INFO] [stdout]  --> src/lib.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use syn::{parse, Attribute, PathSegment, Result, Token};
[INFO] [stdout]   |           ^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Expr`, `Type`, and `Visibility`
[INFO] [stdout]   --> src/lib.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | use syn::{Expr, Ident, Type, Visibility};
[INFO] [stdout]    |           ^^^^         ^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/lib.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 72 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]    |          ^                                     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 72 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/lib.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 |       if (input.peek(Token![=])) {
[INFO] [stdout]    |          ^                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 77 -       if (input.peek(Token![=])) {
[INFO] [stdout] 77 +       if input.peek(Token![=])  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:105:10
[INFO] [stdout]     |
[INFO] [stdout] 105 |     while(input.peek(syn::Ident)) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 105 -     while(input.peek(syn::Ident)) {
[INFO] [stdout] 105 +     while input.peek(syn::Ident)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:274:10
[INFO] [stdout]     |
[INFO] [stdout] 274 |     while(!input.peek(Token![,])) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     while(!input.peek(Token![,])) {
[INFO] [stdout] 274 +     while !input.peek(Token![,])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:317:10
[INFO] [stdout]     |
[INFO] [stdout] 317 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |          ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 317 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 317 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:338:14
[INFO] [stdout]     |
[INFO] [stdout] 338 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 338 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 338 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:364:14
[INFO] [stdout]     |
[INFO] [stdout] 364 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 364 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 364 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:376:14
[INFO] [stdout]     |
[INFO] [stdout] 376 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 376 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 376 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:403:10
[INFO] [stdout]     |
[INFO] [stdout] 403 |     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout]     |          ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 403 -     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout] 403 +     while input.peek(H2) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:417:16
[INFO] [stdout]     |
[INFO] [stdout] 417 |           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 417 -           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout] 417 +           while input.peek(Token![-]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:442:16
[INFO] [stdout]     |
[INFO] [stdout] 442 |           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |                ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 442 -           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 442 +           while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:606:48
[INFO] [stdout]     |
[INFO] [stdout] 606 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 610 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 606 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 607 |                 {
[INFO] [stdout] 608 |                   #ty2::from_ne_bytes(#unsigned_container::to_ne_bytes(#shifted_and_masked_safe))
[INFO] [stdout] 609 |                 }
[INFO] [stdout] 610 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:628:48
[INFO] [stdout]     |
[INFO] [stdout] 628 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 646 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 628 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 629 |                 {
[INFO] [stdout] ...
[INFO] [stdout] 645 |                 }
[INFO] [stdout] 646 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:690:28
[INFO] [stdout]     |
[INFO] [stdout] 690 |     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout]     |                            ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 690 -     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout] 690 +     let guard: syn::Expr = syn::parse_quote! { (((input as u128) & #ands) == #cmp) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:692:29
[INFO] [stdout]     |
[INFO] [stdout] 692 |     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout]     |                             ^                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 692 -     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout] 692 +     let result: syn::Expr = syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Parser`
[INFO] [stdout]   --> src/lib.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::parse::{Parse, ParseStream, Parser};
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::spanned::Spanned`
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::spanned::Spanned;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx_len`
[INFO] [stdout]    --> src/lib.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let idx_len = 64; // Find a better way to do this
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idx_len`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qself`
[INFO] [stdout]    --> src/lib.rs:174:35
[INFO] [stdout]     |
[INFO] [stdout] 174 |     syn::Type::Path(syn::TypePath{qself, path}) => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `qself: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bracket_token`
[INFO] [stdout]    --> src/lib.rs:181:37
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^ help: try ignoring the field: `bracket_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `semi_token`
[INFO] [stdout]    --> src/lib.rs:181:58
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: try ignoring the field: `semi_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/lib.rs:387:5
[INFO] [stdout]     |
[INFO] [stdout] 333 | /     match input.parse::<syn::Ident>()?.to_string().as_ref() {
[INFO] [stdout] 334 | |       "scratch" | "Scratch"   => {
[INFO] [stdout] 335 | |         let mut word_size: Option<u64> = None;
[INFO] [stdout] 336 | |         let mut address_size: Option<u64> = None;
[INFO] [stdout] ...   |
[INFO] [stdout] 385 | |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 386 | |     };
[INFO] [stdout]     | |_____- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 387 |       panic!("Failed to parse memory.");
[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 import: `Parser`
[INFO] [stdout]   --> src/lib.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::parse::{Parse, ParseStream, Parser};
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::spanned::Spanned`
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::spanned::Spanned;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lib.rs:814:77
[INFO] [stdout]     |
[INFO] [stdout] 814 |   let decl_types: Vec<syn::ItemType> = rationalised_types.into_iter().map(|(k, v)| v).collect();
[INFO] [stdout]     |                                                                             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_arms`
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_generated_types`
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_generated_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attrs`
[INFO] [stdout]    --> src/lib.rs:552:35
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `attrs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `colon_token`
[INFO] [stdout]    --> src/lib.rs:552:48
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^ help: try ignoring the field: `colon_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction_width`
[INFO] [stdout]    --> src/lib.rs:658:15
[INFO] [stdout]     |
[INFO] [stdout] 658 |           let instruction_width = chip_info.instruction_width;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chip_name`
[INFO] [stdout]    --> src/lib.rs:691:9
[INFO] [stdout]     |
[INFO] [stdout] 691 |     let chip_name = quote::format_ident!("{}", chip_info.name.clone());
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chip_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_size`
[INFO] [stdout]    --> src/lib.rs:703:77
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx_len`
[INFO] [stdout]    --> src/lib.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let idx_len = 64; // Find a better way to do this
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idx_len`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qself`
[INFO] [stdout]    --> src/lib.rs:174:35
[INFO] [stdout]     |
[INFO] [stdout] 174 |     syn::Type::Path(syn::TypePath{qself, path}) => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `qself: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bracket_token`
[INFO] [stdout]    --> src/lib.rs:181:37
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^ help: try ignoring the field: `bracket_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `semi_token`
[INFO] [stdout]    --> src/lib.rs:181:58
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: try ignoring the field: `semi_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkTypeR` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn mkTypeR(name: &str) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type_r`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn mkType(name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^ help: convert the identifier to snake case: `mk_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType2` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn mkType2(segment1: String, name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `IDX` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:161:9
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let IDX = mkTypeR("usize");
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let I8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `i8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     let I16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |     let I32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     let I64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let I128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `i128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let U8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let U16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let U32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let U64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let U128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `u128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:178:24
[INFO] [stdout]     |
[INFO] [stdout] 178 |         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 178 -         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 178 +         y    => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:188:29
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 188 -                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 188 +                 y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:192:29
[INFO] [stdout]     |
[INFO] [stdout] 192 |             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 192 -             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout] 192 +             y     => panic!("I don't understand {}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:198:25
[INFO] [stdout]     |
[INFO] [stdout] 198 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 198 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 198 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:205:25
[INFO] [stdout]     |
[INFO] [stdout] 205 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 205 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 205 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:235:25
[INFO] [stdout]     |
[INFO] [stdout] 235 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 235 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 235 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:262:25
[INFO] [stdout]     |
[INFO] [stdout] 262 |         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 262 -         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout] 262 +         x     => panic!("I don't understand {:?}", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/lib.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 331 |     input.parse::<kw::is>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 331 |     let _ = input.parse::<kw::is>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:350:38
[INFO] [stdout]     |
[INFO] [stdout] 350 |                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 350 -                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout] 350 +                     x      => panic!("Expected size, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:353:29
[INFO] [stdout]     |
[INFO] [stdout] 353 |                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 353 -                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout] 353 +                 x => panic!("Expected word or address, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:357:25
[INFO] [stdout]     |
[INFO] [stdout] 357 |             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 357 -             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout] 357 +             x => panic!("Expected bit, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:385:19
[INFO] [stdout]     |
[INFO] [stdout] 385 |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 385 -       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 385 +       x => panic!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:411:20
[INFO] [stdout]     |
[INFO] [stdout] 411 |             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 411 -             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout] 411 +             panic!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkField` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:455:4
[INFO] [stdout]     |
[INFO] [stdout] 455 | fn mkField(name: String, ty: syn::Type) -> syn::Field {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkFieldPat` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:458:4
[INFO] [stdout]     |
[INFO] [stdout] 458 | fn mkFieldPat(name: String, binding: String) -> syn::FieldPat {
[INFO] [stdout]     |    ^^^^^^^^^^ help: convert the identifier to snake case: `mk_field_pat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:556:45
[INFO] [stdout]     |
[INFO] [stdout] 556 |             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 556 -             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout] 556 +             x                     => panic!("Got {:?}, expected a Path.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/lib.rs:559:55
[INFO] [stdout]     |
[INFO] [stdout] 559 |           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           while let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           if let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `word_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:41
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `word_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `address_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:63
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `words:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:91
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                                           ^^^^^^^^^^^^ help: use shorthand field pattern: `words`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:48
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `real:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:74
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^ help: use shorthand field pattern: `real`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:30
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:48
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `input:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:74
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^ help: use shorthand field pattern: `input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lib.rs:814:77
[INFO] [stdout]     |
[INFO] [stdout] 814 |   let decl_types: Vec<syn::ItemType> = rationalised_types.into_iter().map(|(k, v)| v).collect();
[INFO] [stdout]     |                                                                             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_arms`
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_generated_types`
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_generated_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attrs`
[INFO] [stdout]    --> src/lib.rs:552:35
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `attrs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `colon_token`
[INFO] [stdout]    --> src/lib.rs:552:48
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^ help: try ignoring the field: `colon_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction_width`
[INFO] [stdout]    --> src/lib.rs:658:15
[INFO] [stdout]     |
[INFO] [stdout] 658 |           let instruction_width = chip_info.instruction_width;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chip_name`
[INFO] [stdout]    --> src/lib.rs:691:9
[INFO] [stdout]     |
[INFO] [stdout] 691 |     let chip_name = quote::format_ident!("{}", chip_info.name.clone());
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chip_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_size`
[INFO] [stdout]    --> src/lib.rs:703:77
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkTypeR` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn mkTypeR(name: &str) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type_r`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn mkType(name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^ help: convert the identifier to snake case: `mk_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType2` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn mkType2(segment1: String, name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `IDX` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:161:9
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let IDX = mkTypeR("usize");
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let I8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `i8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     let I16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |     let I32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     let I64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let I128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `i128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let U8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let U16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let U32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let U64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let U128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `u128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:178:24
[INFO] [stdout]     |
[INFO] [stdout] 178 |         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 178 -         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 178 +         y    => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:188:29
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 188 -                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 188 +                 y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:192:29
[INFO] [stdout]     |
[INFO] [stdout] 192 |             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 192 -             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout] 192 +             y     => panic!("I don't understand {}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:198:25
[INFO] [stdout]     |
[INFO] [stdout] 198 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 198 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 198 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:205:25
[INFO] [stdout]     |
[INFO] [stdout] 205 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 205 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 205 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:235:25
[INFO] [stdout]     |
[INFO] [stdout] 235 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 235 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 235 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:262:25
[INFO] [stdout]     |
[INFO] [stdout] 262 |         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 262 -         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout] 262 +         x     => panic!("I don't understand {:?}", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/lib.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 331 |     input.parse::<kw::is>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 331 |     let _ = input.parse::<kw::is>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:350:38
[INFO] [stdout]     |
[INFO] [stdout] 350 |                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 350 -                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout] 350 +                     x      => panic!("Expected size, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:353:29
[INFO] [stdout]     |
[INFO] [stdout] 353 |                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 353 -                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout] 353 +                 x => panic!("Expected word or address, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:357:25
[INFO] [stdout]     |
[INFO] [stdout] 357 |             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 357 -             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout] 357 +             x => panic!("Expected bit, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:385:19
[INFO] [stdout]     |
[INFO] [stdout] 385 |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 385 -       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 385 +       x => panic!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:411:20
[INFO] [stdout]     |
[INFO] [stdout] 411 |             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 411 -             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout] 411 +             panic!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkField` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:455:4
[INFO] [stdout]     |
[INFO] [stdout] 455 | fn mkField(name: String, ty: syn::Type) -> syn::Field {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkFieldPat` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:458:4
[INFO] [stdout]     |
[INFO] [stdout] 458 | fn mkFieldPat(name: String, binding: String) -> syn::FieldPat {
[INFO] [stdout]     |    ^^^^^^^^^^ help: convert the identifier to snake case: `mk_field_pat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:556:45
[INFO] [stdout]     |
[INFO] [stdout] 556 |             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 556 -             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout] 556 +             x                     => panic!("Got {:?}, expected a Path.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/lib.rs:559:55
[INFO] [stdout]     |
[INFO] [stdout] 559 |           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           while let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           if let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `word_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:41
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `word_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `address_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:63
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `words:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:91
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                                           ^^^^^^^^^^^^ help: use shorthand field pattern: `words`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:48
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `real:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:74
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^ help: use shorthand field pattern: `real`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:30
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:48
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `input:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:74
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^ help: use shorthand field pattern: `input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `quote::ToTokens`
[INFO] [stdout]  --> src/lib.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use quote::ToTokens;
[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 imports: `Attribute`, `PathSegment`, and `parse`
[INFO] [stdout]  --> src/lib.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use syn::{parse, Attribute, PathSegment, Result, Token};
[INFO] [stdout]   |           ^^^^^  ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Expr`, `Type`, and `Visibility`
[INFO] [stdout]   --> src/lib.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | use syn::{Expr, Ident, Type, Visibility};
[INFO] [stdout]    |           ^^^^         ^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/lib.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 72 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]    |          ^                                     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 72 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/lib.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 |       if (input.peek(Token![=])) {
[INFO] [stdout]    |          ^                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 77 -       if (input.peek(Token![=])) {
[INFO] [stdout] 77 +       if input.peek(Token![=])  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:105:10
[INFO] [stdout]     |
[INFO] [stdout] 105 |     while(input.peek(syn::Ident)) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 105 -     while(input.peek(syn::Ident)) {
[INFO] [stdout] 105 +     while input.peek(syn::Ident)  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:274:10
[INFO] [stdout]     |
[INFO] [stdout] 274 |     while(!input.peek(Token![,])) {
[INFO] [stdout]     |          ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     while(!input.peek(Token![,])) {
[INFO] [stdout] 274 +     while !input.peek(Token![,])  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:317:10
[INFO] [stdout]     |
[INFO] [stdout] 317 |     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |          ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 317 -     while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 317 +     while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:338:14
[INFO] [stdout]     |
[INFO] [stdout] 338 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 338 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 338 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:364:14
[INFO] [stdout]     |
[INFO] [stdout] 364 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 364 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 364 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:376:14
[INFO] [stdout]     |
[INFO] [stdout] 376 |         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout]     |              ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 376 -         while(input.peek(Token![*]) && !input.is_empty()) {
[INFO] [stdout] 376 +         while input.peek(Token![*]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:403:10
[INFO] [stdout]     |
[INFO] [stdout] 403 |     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout]     |          ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 403 -     while(input.peek(H2) && !input.is_empty()) {
[INFO] [stdout] 403 +     while input.peek(H2) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:417:16
[INFO] [stdout]     |
[INFO] [stdout] 417 |           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout]     |                ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 417 -           while(input.peek(Token![-]) && !input.is_empty()) {
[INFO] [stdout] 417 +           while input.peek(Token![-]) && !input.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/lib.rs:442:16
[INFO] [stdout]     |
[INFO] [stdout] 442 |           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout]     |                ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 442 -           while(!(input.peek(H2) || input.is_empty())) {
[INFO] [stdout] 442 +           while !(input.peek(H2) || input.is_empty())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:606:48
[INFO] [stdout]     |
[INFO] [stdout] 606 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 610 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 606 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 607 |                 {
[INFO] [stdout] 608 |                   #ty2::from_ne_bytes(#unsigned_container::to_ne_bytes(#shifted_and_masked_safe))
[INFO] [stdout] 609 |                 }
[INFO] [stdout] 610 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:628:48
[INFO] [stdout]     |
[INFO] [stdout] 628 |               let variable_getter: syn::Expr = (syn::parse_quote! {
[INFO] [stdout]     |                                                ^
[INFO] [stdout] ...
[INFO] [stdout] 646 |               });
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 628 ~               let variable_getter: syn::Expr = syn::parse_quote! {
[INFO] [stdout] 629 |                 {
[INFO] [stdout] ...
[INFO] [stdout] 645 |                 }
[INFO] [stdout] 646 ~               } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:690:28
[INFO] [stdout]     |
[INFO] [stdout] 690 |     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout]     |                            ^                                                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 690 -     let guard: syn::Expr = (syn::parse_quote! { (((input as u128) & #ands) == #cmp) });
[INFO] [stdout] 690 +     let guard: syn::Expr = syn::parse_quote! { (((input as u128) & #ands) == #cmp) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/lib.rs:692:29
[INFO] [stdout]     |
[INFO] [stdout] 692 |     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout]     |                             ^                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 692 -     let result: syn::Expr = (syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) });
[INFO] [stdout] 692 +     let result: syn::Expr = syn::parse_quote! { super::Instruction::#name(#name { #(#fields),* }) } ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/lib.rs:387:5
[INFO] [stdout]     |
[INFO] [stdout] 333 | /     match input.parse::<syn::Ident>()?.to_string().as_ref() {
[INFO] [stdout] 334 | |       "scratch" | "Scratch"   => {
[INFO] [stdout] 335 | |         let mut word_size: Option<u64> = None;
[INFO] [stdout] 336 | |         let mut address_size: Option<u64> = None;
[INFO] [stdout] ...   |
[INFO] [stdout] 385 | |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 386 | |     };
[INFO] [stdout]     | |_____- any code following this `match` expression is unreachable, as all arms diverge
[INFO] [stdout] 387 |       panic!("Failed to parse memory.");
[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 import: `Parser`
[INFO] [stdout]   --> src/lib.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | use syn::parse::{Parse, ParseStream, Parser};
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn::spanned::Spanned`
[INFO] [stdout]   --> src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use syn::spanned::Spanned;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx_len`
[INFO] [stdout]    --> src/lib.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let idx_len = 64; // Find a better way to do this
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idx_len`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `qself`
[INFO] [stdout]    --> src/lib.rs:174:35
[INFO] [stdout]     |
[INFO] [stdout] 174 |     syn::Type::Path(syn::TypePath{qself, path}) => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `qself: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bracket_token`
[INFO] [stdout]    --> src/lib.rs:181:37
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^ help: try ignoring the field: `bracket_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `semi_token`
[INFO] [stdout]    --> src/lib.rs:181:58
[INFO] [stdout]     |
[INFO] [stdout] 181 |     syn::Type::Array(syn::TypeArray{bracket_token, elem, semi_token, len}) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: try ignoring the field: `semi_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `k`
[INFO] [stdout]    --> src/lib.rs:814:77
[INFO] [stdout]     |
[INFO] [stdout] 814 |   let decl_types: Vec<syn::ItemType> = rationalised_types.into_iter().map(|(k, v)| v).collect();
[INFO] [stdout]     |                                                                             ^ help: if this is intentional, prefix it with an underscore: `_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_arms`
[INFO] [stdout]    --> src/lib.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 |   let mut pipelines_with_arms: HashMap<String, Vec<syn::Arm>> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_arms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipelines_with_generated_types`
[INFO] [stdout]    --> src/lib.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 |   let mut pipelines_with_generated_types: HashMap<String, (syn::ItemType, syn::ItemEnum, Vec<(String, syn::ItemStruct)>)> = HashMap::new();
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipelines_with_generated_types`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attrs`
[INFO] [stdout]    --> src/lib.rs:552:35
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                   ^^^^^ help: try ignoring the field: `attrs: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `colon_token`
[INFO] [stdout]    --> src/lib.rs:552:48
[INFO] [stdout]     |
[INFO] [stdout] 552 |         PatBit::Var(syn::ExprType{attrs, expr, colon_token, ty})   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^ help: try ignoring the field: `colon_token: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction_width`
[INFO] [stdout]    --> src/lib.rs:658:15
[INFO] [stdout]     |
[INFO] [stdout] 658 |           let instruction_width = chip_info.instruction_width;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chip_name`
[INFO] [stdout]    --> src/lib.rs:691:9
[INFO] [stdout]     |
[INFO] [stdout] 691 |     let chip_name = quote::format_ident!("{}", chip_info.name.clone());
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chip_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address_size`
[INFO] [stdout]    --> src/lib.rs:703:77
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkTypeR` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn mkTypeR(name: &str) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type_r`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn mkType(name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^ help: convert the identifier to snake case: `mk_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkType2` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn mkType2(segment1: String, name: String) -> syn::Type {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_type2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `IDX` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:161:9
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let IDX = mkTypeR("usize");
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let I8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `i8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     let I16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 164 |     let I32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     let I64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `i64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `I128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let I128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `i128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U8` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let U8:    syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case (notice the capitalization): `u8`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U16` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let U16:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u16`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U32` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let U32:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U64` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let U64:   syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case (notice the capitalization): `u64`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `U128` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     let U128:  syn::Type = syn::Type::Path(syn::TypePath{qself: None, path: syn::Path{leading_colon: None, segments: vec!(syn::punctuated...
[INFO] [stdout]     |         ^^^^ help: convert the identifier to snake case (notice the capitalization): `u128`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:178:24
[INFO] [stdout]     |
[INFO] [stdout] 178 |         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 178 -         y    => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 178 +         y    => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:188:29
[INFO] [stdout]     |
[INFO] [stdout] 188 |                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 188 -                 y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 188 +                 y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:192:29
[INFO] [stdout]     |
[INFO] [stdout] 192 |             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 192 -             y     => panic!(format!("I don't understand {}", y)),
[INFO] [stdout] 192 +             y     => panic!("I don't understand {}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:198:25
[INFO] [stdout]     |
[INFO] [stdout] 198 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 198 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 198 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:205:25
[INFO] [stdout]     |
[INFO] [stdout] 205 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 205 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 205 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:235:25
[INFO] [stdout]     |
[INFO] [stdout] 235 |             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 235 -             y => panic!(format!("I don't understand {:?}", y)),
[INFO] [stdout] 235 +             y => panic!("I don't understand {:?}", y),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:262:25
[INFO] [stdout]     |
[INFO] [stdout] 262 |         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 262 -         x     => panic!(format!("I don't understand {:?}", x)),
[INFO] [stdout] 262 +         x     => panic!("I don't understand {:?}", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/lib.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 331 |     input.parse::<kw::is>();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 331 |     let _ = input.parse::<kw::is>();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:350:38
[INFO] [stdout]     |
[INFO] [stdout] 350 |                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 350 -                     x      => panic!(format!("Expected size, got {}.", x)),
[INFO] [stdout] 350 +                     x      => panic!("Expected size, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:353:29
[INFO] [stdout]     |
[INFO] [stdout] 353 |                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 353 -                 x => panic!(format!("Expected word or address, got {}.", x)),
[INFO] [stdout] 353 +                 x => panic!("Expected word or address, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:357:25
[INFO] [stdout]     |
[INFO] [stdout] 357 |             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 357 -             x => panic!(format!("Expected bit, got {}.", x)),
[INFO] [stdout] 357 +             x => panic!("Expected bit, got {}.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:385:19
[INFO] [stdout]     |
[INFO] [stdout] 385 |       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 385 -       x => panic!(format!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x)),
[INFO] [stdout] 385 +       x => panic!("Expected memory type: scratch or Scratch or register or Register, got {} instead.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:411:20
[INFO] [stdout]     |
[INFO] [stdout] 411 |             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 411 -             panic!(format!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued));
[INFO] [stdout] 411 +             panic!("Expected Dis/Assembler section, got Dis/{} instead.", section_continued);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkField` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:455:4
[INFO] [stdout]     |
[INFO] [stdout] 455 | fn mkField(name: String, ty: syn::Type) -> syn::Field {
[INFO] [stdout]     |    ^^^^^^^ help: convert the identifier to snake case: `mk_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mkFieldPat` should have a snake case name
[INFO] [stdout]    --> src/lib.rs:458:4
[INFO] [stdout]     |
[INFO] [stdout] 458 | fn mkFieldPat(name: String, binding: String) -> syn::FieldPat {
[INFO] [stdout]     |    ^^^^^^^^^^ help: convert the identifier to snake case: `mk_field_pat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/lib.rs:556:45
[INFO] [stdout]     |
[INFO] [stdout] 556 |             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 556 -             x                     => panic!(format!("Got {:?}, expected a Path.", x)),
[INFO] [stdout] 556 +             x                     => panic!("Got {:?}, expected a Path.", x),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> src/lib.rs:559:55
[INFO] [stdout]     |
[INFO] [stdout] 559 |           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           while let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 559 -           for (decl_name, backing_type, decl_type) in maybe_decl.clone() {
[INFO] [stdout] 559 +           if let Some((decl_name, backing_type, decl_type)) = maybe_decl.clone() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `word_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:41
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `word_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_shorthand_field_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `address_size:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:63
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `address_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `words:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:703:91
[INFO] [stdout]     |
[INFO] [stdout] 703 |       MemoryType::Scratch(ScratchMemory{word_size: word_size, address_size: address_size, words: words}) => {
[INFO] [stdout]     |                                                                                           ^^^^^^^^^^^^ help: use shorthand field pattern: `words`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:30
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:48
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `real:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:733:74
[INFO] [stdout]     |
[INFO] [stdout] 733 |       Pipe::Use            { fn_name: fn_name, module_name: module_name, real: real } => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^ help: use shorthand field pattern: `real`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `fn_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:30
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `fn_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `module_name:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:48
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^ help: use shorthand field pattern: `module_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `input:` in this pattern is redundant
[INFO] [stdout]    --> src/lib.rs:736:74
[INFO] [stdout]     |
[INFO] [stdout] 736 |       Pipe::PerInstruction { fn_name: fn_name, module_name: module_name, input: input, output: out }   => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^ help: use shorthand field pattern: `input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `a` should have an upper camel case name
[INFO] [stdout]    --> tests/chip.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 169 |     a,
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `A`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `b` should have an upper camel case name
[INFO] [stdout]    --> tests/chip.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     b,
[INFO] [stdout]     |     ^ help: convert the identifier to upper camel case: `B`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> tests/chip.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 |   pub fn fetch(input: U10) -> U36 {
[INFO] [stdout]    |                ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> tests/chip.rs:22:26
[INFO] [stdout]    |
[INFO] [stdout] 22 |   pub fn write_out_state(input: StateBundle) -> () {
[INFO] [stdout]    |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `forward_by`
[INFO] [stdout]   --> tests/chip.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 |   pub fn tick(forward_by: u64, mem: Memories::t, pipeline_outputs: (Option<U36>, Option<Instruction>, Option<Pipeline::MemoryToArchitectu...
[INFO] [stdout]    |               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_forward_by`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mem`
[INFO] [stdout]   --> tests/chip.rs:24:32
[INFO] [stdout]    |
[INFO] [stdout] 24 |   pub fn tick(forward_by: u64, mem: Memories::t, pipeline_outputs: (Option<U36>, Option<Instruction>, Option<Pipeline::MemoryToArchitectu...
[INFO] [stdout]    |                                ^^^ help: if this is intentional, prefix it with an underscore: `_mem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pipeline_outputs`
[INFO] [stdout]   --> tests/chip.rs:24:50
[INFO] [stdout]    |
[INFO] [stdout] 24 | ... mem: Memories::t, pipeline_outputs: (Option<U36>, Option<Instruction>, Option<Pipeline::MemoryToArchitecturalRegisters::Instruction>,...
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pipeline_outputs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Fetch` should have a snake case name
[INFO] [stdout]   --> tests/chip.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 41 |   - fetch in Fetch = super::super::fetch
[INFO] [stdout]    |              ^^^^^ help: convert the identifier to snake case (notice the capitalization): `fetch`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Decode` should have a snake case name
[INFO] [stdout]   --> tests/chip.rs:42:15
[INFO] [stdout]    |
[INFO] [stdout] 42 |   - decode in Decode = super::super::Instructions::decode
[INFO] [stdout]    |               ^^^^^^ help: convert the identifier to snake case: `decode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `MemoryToArchitecturalRegisters` should have a snake case name
[INFO] [stdout]   --> tests/chip.rs:43:41
[INFO] [stdout]    |
[INFO] [stdout] 43 |   - memory_to_architecture_registers in MemoryToArchitecturalRegisters: super::super::Instruction -> Instruction
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `memory_to_architectural_registers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Compute` should have a snake case name
[INFO] [stdout]   --> tests/chip.rs:44:16
[INFO] [stdout]    |
[INFO] [stdout] 44 |   - compute in Compute: super::MemoryToArchitecturalRegisters::Instruction -> super::super::StateBundle
[INFO] [stdout]    |                ^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `compute`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `WriteOutState` should have a snake case name
[INFO] [stdout]   --> tests/chip.rs:45:24
[INFO] [stdout]    |
[INFO] [stdout] 45 |   - write_out_state in WriteOutState = super::super::write_out_state
[INFO] [stdout]    |                        ^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_out_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<u128, Infallible>
[INFO] [stdout]   --> tests/chip.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / define_chip! {
[INFO] [stdout]  5 | |   # test_potato
[INFO] [stdout]  6 | |
[INFO] [stdout]  7 | |   ## Misc
[INFO] [stdout] ...  |
[INFO] [stdout] 56 | |   Nopi,   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1, "Signed Nop."
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout]    = note: this error originates in the macro `define_chip` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<u8, Infallible>
[INFO] [stdout]   --> tests/chip.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / define_chip! {
[INFO] [stdout]  5 | |   # test_potato
[INFO] [stdout]  6 | |
[INFO] [stdout]  7 | |   ## Misc
[INFO] [stdout] ...  |
[INFO] [stdout] 56 | |   Nopi,   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1, "Signed Nop."
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `define_chip` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<u16, Infallible>
[INFO] [stdout]   --> tests/chip.rs:4:1
[INFO] [stdout]    |
[INFO] [stdout]  4 | / define_chip! {
[INFO] [stdout]  5 | |   # test_potato
[INFO] [stdout]  6 | |
[INFO] [stdout]  7 | |   ## Misc
[INFO] [stdout] ...  |
[INFO] [stdout] 56 | |   Nopi,   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1, "Signed Nop."
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `define_chip` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `Decode` should have a snake case name
[INFO] [stdout]    --> tests/chip.rs:189:17
[INFO] [stdout]     |
[INFO] [stdout] 189 |     - decode in Decode = super::super::Instructions::decode
[INFO] [stdout]     |                 ^^^^^^ help: convert the identifier to snake case: `decode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `fantasy-cpu-emulator-macros` (test "chip") due to 3 previous errors; 13 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "9503e8aeb500e1fa85be69884642a27a0cf0f378df57706cf576288a27d35b58", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9503e8aeb500e1fa85be69884642a27a0cf0f378df57706cf576288a27d35b58", kill_on_drop: false }`
[INFO] [stdout] 9503e8aeb500e1fa85be69884642a27a0cf0f378df57706cf576288a27d35b58
