[INFO] cloning repository https://github.com/INDA22PlusPlus/dstrombe-compiler
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/INDA22PlusPlus/dstrombe-compiler" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FINDA22PlusPlus%2Fdstrombe-compiler", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FINDA22PlusPlus%2Fdstrombe-compiler'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 610d5fb3559c1d4024b75bbe421b247500ca9c6e
[INFO] checking INDA22PlusPlus/dstrombe-compiler against master#bca37a20bd376ce3fd138e7cdee7fe704e0f8814 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FINDA22PlusPlus%2Fdstrombe-compiler" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/INDA22PlusPlus/dstrombe-compiler
[INFO] finished tweaking git repo https://github.com/INDA22PlusPlus/dstrombe-compiler
[INFO] tweaked toml for git repo https://github.com/INDA22PlusPlus/dstrombe-compiler written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/INDA22PlusPlus/dstrombe-compiler on toolchain bca37a20bd376ce3fd138e7cdee7fe704e0f8814
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/INDA22PlusPlus/dstrombe-compiler already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a128aaba689daa290189d9dc7625f7543b4bde78617874336d8506cdd647010b
[INFO] running `Command { std: "docker" "start" "-a" "a128aaba689daa290189d9dc7625f7543b4bde78617874336d8506cdd647010b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a128aaba689daa290189d9dc7625f7543b4bde78617874336d8506cdd647010b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a128aaba689daa290189d9dc7625f7543b4bde78617874336d8506cdd647010b", kill_on_drop: false }`
[INFO] [stdout] a128aaba689daa290189d9dc7625f7543b4bde78617874336d8506cdd647010b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c363864b38711de8476918588fc09b7cb09798ee304dc1c540e1565878c03d5c
[INFO] running `Command { std: "docker" "start" "-a" "c363864b38711de8476918588fc09b7cb09798ee304dc1c540e1565878c03d5c", kill_on_drop: false }`
[INFO] [stderr]     Checking dstrombe-compiler v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/parser.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]  --> src/parser.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Constant::*`
[INFO] [stdout]  --> src/parser.rs:5:115
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::token::{Token, AssignmentOperator::*, BinaryOperator::*, UnaryOperator::*, Keyword::*, SpecialChar::*, Constant::*, Identi...
[INFO] [stdout]   |                                                                                                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/parser.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                     for (matching_rulepair) in vec_of_rules {
[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] 381 -                     for (matching_rulepair) in vec_of_rules {
[INFO] [stdout] 381 +                     for matching_rulepair  in vec_of_rules {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:388:27
[INFO] [stdout]     |
[INFO] [stdout] 388 |                         if(parsed.is_some()) {
[INFO] [stdout]     |                           ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 388 -                         if(parsed.is_some()) {
[INFO] [stdout] 388 +                         if parsed.is_some()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 |             if(matched_node.is_some()) {
[INFO] [stdout]     |               ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 408 -             if(matched_node.is_some()) {
[INFO] [stdout] 408 +             if matched_node.is_some()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:418:26
[INFO] [stdout]     |
[INFO] [stdout] 418 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -                     match(matched_node) {
[INFO] [stdout] 418 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:432:26
[INFO] [stdout]     |
[INFO] [stdout] 432 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 432 -                     match(matched_node) {
[INFO] [stdout] 432 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:447:26
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 447 -                     match(matched_node) {
[INFO] [stdout] 447 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:588:37
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let is_not_whitespace = (*c != ' ' && *c != '\t' && *c != '\n');
[INFO] [stdout]     |                                     ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 588 -             let is_not_whitespace = (*c != ' ' && *c != '\t' && *c != '\n');
[INFO] [stdout] 588 +             let is_not_whitespace = *c != ' ' && *c != '\t' && *c != '\n' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:592:37
[INFO] [stdout]     |
[INFO] [stdout] 592 |                 end_of_whitespace = (end_of_whitespace || is_not_whitespace);
[INFO] [stdout]     |                                     ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 592 -                 end_of_whitespace = (end_of_whitespace || is_not_whitespace);
[INFO] [stdout] 592 +                 end_of_whitespace = end_of_whitespace || is_not_whitespace ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:602:48
[INFO] [stdout]     |
[INFO] [stdout] 602 |                         advance_to_next_rule = (rule_char_idx == (string.len() - 1));
[INFO] [stdout]     |                                                ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 602 -                         advance_to_next_rule = (rule_char_idx == (string.len() - 1));
[INFO] [stdout] 602 +                         advance_to_next_rule = rule_char_idx == (string.len() - 1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:633:39
[INFO] [stdout]     |
[INFO] [stdout] 633 | ...                   if(rule_char_idx == 0) {
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 633 -                                     if(rule_char_idx == 0) {
[INFO] [stdout] 633 +                                     if rule_char_idx == 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:640:34
[INFO] [stdout]     |
[INFO] [stdout] 640 | ...                   match(chars[curr_idx + 1]) {
[INFO] [stdout]     |                            ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 640 -                             match(chars[curr_idx + 1]) {
[INFO] [stdout] 640 +                             match chars[curr_idx + 1]  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:658:35
[INFO] [stdout]     |
[INFO] [stdout] 658 | ...                   if(rule_char_idx == 0) {
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 658 -                                 if(rule_char_idx == 0) {
[INFO] [stdout] 658 +                                 if rule_char_idx == 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:665:30
[INFO] [stdout]     |
[INFO] [stdout] 665 |                         match(chars[curr_idx + 1]) {
[INFO] [stdout]     |                              ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 665 -                         match(chars[curr_idx + 1]) {
[INFO] [stdout] 665 +                         match chars[curr_idx + 1]  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:677:19
[INFO] [stdout]     |
[INFO] [stdout] 677 |                 if(advance_to_next_rule) {
[INFO] [stdout]     |                   ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 677 -                 if(advance_to_next_rule) {
[INFO] [stdout] 677 +                 if advance_to_next_rule  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:680:24
[INFO] [stdout]     |
[INFO] [stdout] 680 |                     if (rule_word_idx == rules.len()) {
[INFO] [stdout]     |                        ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 680 -                     if (rule_word_idx == rules.len()) {
[INFO] [stdout] 680 +                     if rule_word_idx == rules.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Parser`, `Tokenizer`, `asm_emitter::AsmCtx`, and `token::Token`
[INFO] [stdout]  --> src/test.rs:1:36
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{*, parser::{TokenData, Tokenizer, Parser}, token::Token, asm_emitter::AsmCtx};
[INFO] [stdout]   |                                    ^^^^^^^^^  ^^^^^^   ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/main.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod test;
[INFO] [stdout]   | ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `asm_emitter`
[INFO] [stdout]  --> src/test.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::{asm_emitter};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/main.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod test;
[INFO] [stdout]   | ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssignmentOperator::*`, `BinaryOperator::*`, `Constant::*`, `Identifier::*`, `Keyword::*`, `SpecialChar::*`, and `UnaryOperator::*`
[INFO] [stdout]  --> src/asm_emitter.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...{Token, AssignmentOperator::*, BinaryOperator::*, UnaryOperator::*, Keyword::*, SpecialChar::*, Constant::*, Identifier::*};
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `*` and `Grammar`
[INFO] [stdout]  --> src/asm_emitter.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::parser::{*, GrammarType, Grammar, SyntaxNode};
[INFO] [stdout]   |                     ^               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `asm_emitter::AsmCtx` and `token::Token`
[INFO] [stdout]  --> src/main.rs:5:53
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{parser::{TokenData, Tokenizer, Parser}, token::Token, asm_emitter::AsmCtx};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/parser.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]  --> src/parser.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Constant::*`
[INFO] [stdout]  --> src/parser.rs:5:115
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::token::{Token, AssignmentOperator::*, BinaryOperator::*, UnaryOperator::*, Keyword::*, SpecialChar::*, Constant::*, Identi...
[INFO] [stdout]   |                                                                                                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/parser.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                     for (matching_rulepair) in vec_of_rules {
[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] 381 -                     for (matching_rulepair) in vec_of_rules {
[INFO] [stdout] 381 +                     for matching_rulepair  in vec_of_rules {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:388:27
[INFO] [stdout]     |
[INFO] [stdout] 388 |                         if(parsed.is_some()) {
[INFO] [stdout]     |                           ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 388 -                         if(parsed.is_some()) {
[INFO] [stdout] 388 +                         if parsed.is_some()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 |             if(matched_node.is_some()) {
[INFO] [stdout]     |               ^                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 408 -             if(matched_node.is_some()) {
[INFO] [stdout] 408 +             if matched_node.is_some()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:418:26
[INFO] [stdout]     |
[INFO] [stdout] 418 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 418 -                     match(matched_node) {
[INFO] [stdout] 418 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:432:26
[INFO] [stdout]     |
[INFO] [stdout] 432 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 432 -                     match(matched_node) {
[INFO] [stdout] 432 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:447:26
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     match(matched_node) {
[INFO] [stdout]     |                          ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 447 -                     match(matched_node) {
[INFO] [stdout] 447 +                     match matched_node  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:588:37
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let is_not_whitespace = (*c != ' ' && *c != '\t' && *c != '\n');
[INFO] [stdout]     |                                     ^                                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 588 -             let is_not_whitespace = (*c != ' ' && *c != '\t' && *c != '\n');
[INFO] [stdout] 588 +             let is_not_whitespace = *c != ' ' && *c != '\t' && *c != '\n' ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:592:37
[INFO] [stdout]     |
[INFO] [stdout] 592 |                 end_of_whitespace = (end_of_whitespace || is_not_whitespace);
[INFO] [stdout]     |                                     ^                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 592 -                 end_of_whitespace = (end_of_whitespace || is_not_whitespace);
[INFO] [stdout] 592 +                 end_of_whitespace = end_of_whitespace || is_not_whitespace ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/parser.rs:602:48
[INFO] [stdout]     |
[INFO] [stdout] 602 |                         advance_to_next_rule = (rule_char_idx == (string.len() - 1));
[INFO] [stdout]     |                                                ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 602 -                         advance_to_next_rule = (rule_char_idx == (string.len() - 1));
[INFO] [stdout] 602 +                         advance_to_next_rule = rule_char_idx == (string.len() - 1) ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:633:39
[INFO] [stdout]     |
[INFO] [stdout] 633 | ...                   if(rule_char_idx == 0) {
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 633 -                                     if(rule_char_idx == 0) {
[INFO] [stdout] 633 +                                     if rule_char_idx == 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:640:34
[INFO] [stdout]     |
[INFO] [stdout] 640 | ...                   match(chars[curr_idx + 1]) {
[INFO] [stdout]     |                            ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 640 -                             match(chars[curr_idx + 1]) {
[INFO] [stdout] 640 +                             match chars[curr_idx + 1]  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:658:35
[INFO] [stdout]     |
[INFO] [stdout] 658 | ...                   if(rule_char_idx == 0) {
[INFO] [stdout]     |                         ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 658 -                                 if(rule_char_idx == 0) {
[INFO] [stdout] 658 +                                 if rule_char_idx == 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/parser.rs:665:30
[INFO] [stdout]     |
[INFO] [stdout] 665 |                         match(chars[curr_idx + 1]) {
[INFO] [stdout]     |                              ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 665 -                         match(chars[curr_idx + 1]) {
[INFO] [stdout] 665 +                         match chars[curr_idx + 1]  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:677:19
[INFO] [stdout]     |
[INFO] [stdout] 677 |                 if(advance_to_next_rule) {
[INFO] [stdout]     |                   ^                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 677 -                 if(advance_to_next_rule) {
[INFO] [stdout] 677 +                 if advance_to_next_rule  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parser.rs:680:24
[INFO] [stdout]     |
[INFO] [stdout] 680 |                     if (rule_word_idx == rules.len()) {
[INFO] [stdout]     |                        ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 680 -                     if (rule_word_idx == rules.len()) {
[INFO] [stdout] 680 +                     if rule_word_idx == rules.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `asm_emitter::AsmCtx` and `token::Token`
[INFO] [stdout]  --> src/test.rs:1:56
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{*, parser::{TokenData, Tokenizer, Parser}, token::Token, asm_emitter::AsmCtx};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AssignmentOperator::*`, `BinaryOperator::*`, `Constant::*`, `Identifier::*`, `Keyword::*`, `SpecialChar::*`, and `UnaryOperator::*`
[INFO] [stdout]  --> src/asm_emitter.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | ...{Token, AssignmentOperator::*, BinaryOperator::*, UnaryOperator::*, Keyword::*, SpecialChar::*, Constant::*, Identifier::*};
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `*` and `Grammar`
[INFO] [stdout]  --> src/asm_emitter.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::parser::{*, GrammarType, Grammar, SyntaxNode};
[INFO] [stdout]   |                     ^               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `asm_emitter::AsmCtx` and `token::Token`
[INFO] [stdout]  --> src/main.rs:5:53
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{parser::{TokenData, Tokenizer, Parser}, token::Token, asm_emitter::AsmCtx};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:328:13
[INFO] [stdout]     |
[INFO] [stdout] 328 |         let mut grammar_to_check = grammar.grammar_type;
[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/parser.rs:329:13
[INFO] [stdout]     |
[INFO] [stdout] 329 |         let mut rules : Vec<GrammarRule> = grammar.clone().grammar_pattern; 
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let mut matches = 0; 
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matches`
[INFO] [stdout]    --> src/parser.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let mut matches = 0; 
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 556 |         let mut parse_result = self.parse_ahead(scope_grammar, tokens, 0);
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:572:13
[INFO] [stdout]     |
[INFO] [stdout] 572 |         let mut token_to_parse = &rulepair.0;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:573:13
[INFO] [stdout]     |
[INFO] [stdout] 573 |         let mut rules : Vec<ParseRule> = rulepair.1.to_vec(); 
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:584:13
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut fudge = 0;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `group_buf`
[INFO] [stdout]    --> src/parser.rs:710:13
[INFO] [stdout]     |
[INFO] [stdout] 710 |         let mut group_buf : Vec<char>;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_group_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/parser.rs:713:17
[INFO] [stdout]     |
[INFO] [stdout] 713 |         for (i, c) in chars.into_iter().enumerate() {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/test.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut testtokenizer = parser::Tokenizer {};
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/test.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let tokenizer : Tokenizer = Tokenizer {  };
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/test.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let tokenizer : Tokenizer = Tokenizer {  };
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asm`
[INFO] [stdout]   --> src/test.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let asm = asm_ctx.emit();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_asm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:328:13
[INFO] [stdout]     |
[INFO] [stdout] 328 |         let mut grammar_to_check = grammar.grammar_type;
[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/parser.rs:329:13
[INFO] [stdout]     |
[INFO] [stdout] 329 |         let mut rules : Vec<GrammarRule> = grammar.clone().grammar_pattern; 
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let mut matches = 0; 
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matches`
[INFO] [stdout]    --> src/parser.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let mut matches = 0; 
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_matches`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:556:13
[INFO] [stdout]     |
[INFO] [stdout] 556 |         let mut parse_result = self.parse_ahead(scope_grammar, tokens, 0);
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:572:13
[INFO] [stdout]     |
[INFO] [stdout] 572 |         let mut token_to_parse = &rulepair.0;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:573:13
[INFO] [stdout]     |
[INFO] [stdout] 573 |         let mut rules : Vec<ParseRule> = rulepair.1.to_vec(); 
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parser.rs:584:13
[INFO] [stdout]     |
[INFO] [stdout] 584 |         let mut fudge = 0;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kw`
[INFO] [stdout]    --> src/asm_emitter.rs:224:39
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 token::Token::Keyword(kw) => {
[INFO] [stdout]     |                                       ^^ help: if this is intentional, prefix it with an underscore: `_kw`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/asm_emitter.rs:238:25
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let offset = stack_context.scope_stack.len();
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `group_buf`
[INFO] [stdout]    --> src/parser.rs:710:13
[INFO] [stdout]     |
[INFO] [stdout] 710 |         let mut group_buf : Vec<char>;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_group_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/parser.rs:713:17
[INFO] [stdout]     |
[INFO] [stdout] 713 |         for (i, c) in chars.into_iter().enumerate() {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut testtokenizer = parser::Tokenizer {};
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/main.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let tokenizer : Tokenizer = Tokenizer {  };
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asm`
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let asm = asm_ctx.emit();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_asm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Exactly` is never constructed
[INFO] [stdout]   --> src/parser.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum FreqRule {
[INFO] [stdout]    |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Exactly(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FreqRule` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/parser.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 318 | impl Parser {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 319 |     
[INFO] [stdout] 320 |     pub fn parse() {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LBracket` and `RBracket` are never constructed
[INFO] [stdout]   --> src/token.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum SpecialChar {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 32 |     LBracket,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 33 |     RBracket,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpecialChar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LShift`, `RShift`, `Greater`, `Less`, and `Xor` are never constructed
[INFO] [stdout]   --> src/token.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum BinaryOperator {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     LShift,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 48 |     RShift,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 49 |     
[INFO] [stdout] 50 |     Greater,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 51 |     Less,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     Xor,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinaryOperator` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/test.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut testtokenizer = parser::Tokenizer {};
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `kw`
[INFO] [stdout]    --> src/asm_emitter.rs:224:39
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 token::Token::Keyword(kw) => {
[INFO] [stdout]     |                                       ^^ help: if this is intentional, prefix it with an underscore: `_kw`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/asm_emitter.rs:238:25
[INFO] [stdout]     |
[INFO] [stdout] 238 |                     let offset = stack_context.scope_stack.len();
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut testtokenizer = parser::Tokenizer {};
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokenizer`
[INFO] [stdout]   --> src/main.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |     let tokenizer : Tokenizer = Tokenizer {  };
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokenizer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asm`
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let asm = asm_ctx.emit();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_asm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Exactly` is never constructed
[INFO] [stdout]   --> src/parser.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | enum FreqRule {
[INFO] [stdout]    |      -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Exactly(usize),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FreqRule` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/parser.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 318 | impl Parser {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 319 |     
[INFO] [stdout] 320 |     pub fn parse() {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LBracket` and `RBracket` are never constructed
[INFO] [stdout]   --> src/token.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum SpecialChar {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 32 |     LBracket,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 33 |     RBracket,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpecialChar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LShift`, `RShift`, `Greater`, `Less`, and `Xor` are never constructed
[INFO] [stdout]   --> src/token.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum BinaryOperator {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     LShift,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 48 |     RShift,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 49 |     
[INFO] [stdout] 50 |     Greater,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 51 |     Less,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     Xor,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinaryOperator` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize_example` is never used
[INFO] [stdout]  --> src/test.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn tokenize_example () ->  Vec<TokenData>{
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.48s
[INFO] running `Command { std: "docker" "inspect" "c363864b38711de8476918588fc09b7cb09798ee304dc1c540e1565878c03d5c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c363864b38711de8476918588fc09b7cb09798ee304dc1c540e1565878c03d5c", kill_on_drop: false }`
[INFO] [stdout] c363864b38711de8476918588fc09b7cb09798ee304dc1c540e1565878c03d5c
