[INFO] cloning repository https://github.com/jack-t/contracts
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jack-t/contracts" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjack-t%2Fcontracts", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjack-t%2Fcontracts'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 04dad6684fe0f26bf352a77ed4b7c2fd1846c0ed
[INFO] checking jack-t/contracts against master#01706e1a34c87656fcbfce198608f4cd2ac6461a for pr-135272
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjack-t%2Fcontracts" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jack-t/contracts on toolchain 01706e1a34c87656fcbfce198608f4cd2ac6461a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jack-t/contracts
[INFO] finished tweaking git repo https://github.com/jack-t/contracts
[INFO] tweaked toml for git repo https://github.com/jack-t/contracts written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/jack-t/contracts 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" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "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:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 073f2672ec760c311446a20a0a6dc7341252ade71ae09689ff889ec97b5fa5c4
[INFO] running `Command { std: "docker" "start" "-a" "073f2672ec760c311446a20a0a6dc7341252ade71ae09689ff889ec97b5fa5c4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "073f2672ec760c311446a20a0a6dc7341252ade71ae09689ff889ec97b5fa5c4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "073f2672ec760c311446a20a0a6dc7341252ade71ae09689ff889ec97b5fa5c4", kill_on_drop: false }`
[INFO] [stdout] 073f2672ec760c311446a20a0a6dc7341252ade71ae09689ff889ec97b5fa5c4
[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:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+01706e1a34c87656fcbfce198608f4cd2ac6461a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e66e5b2464b3fac1bcdb62aeab437124c8de73f85c4271429ce4b5cb2b39da6c
[INFO] running `Command { std: "docker" "start" "-a" "e66e5b2464b3fac1bcdb62aeab437124c8de73f85c4271429ce4b5cb2b39da6c", kill_on_drop: false }`
[INFO] [stderr]    Compiling version_check v0.1.5
[INFO] [stderr]    Compiling libc v0.2.45
[INFO] [stderr]     Checking cfg-if v0.1.6
[INFO] [stderr]     Checking lazy_static v1.2.0
[INFO] [stderr]     Checking ucd-util v0.1.3
[INFO] [stderr]    Compiling regex v1.1.0
[INFO] [stderr]     Checking utf8-ranges v1.0.2
[INFO] [stderr]     Checking thread_local v0.3.6
[INFO] [stderr]     Checking regex-syntax v0.6.4
[INFO] [stderr]    Compiling memchr v2.1.2
[INFO] [stderr]     Checking aho-corasick v0.6.9
[INFO] [stderr]     Checking contracts v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `regex`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex;
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/parse/tree.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parse/mod.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 |     if (is_bin_op(tokens.front())) {
[INFO] [stdout]     |        ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -     if (is_bin_op(tokens.front())) {
[INFO] [stdout] 160 +     if is_bin_op(tokens.front()) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parse/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 if (expect_expr) {
[INFO] [stdout]     |                    ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 if (expect_expr) {
[INFO] [stdout] 183 +                 if expect_expr {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result`
[INFO] [stdout]  --> src/run/types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::result;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lex/mod.rs:47:22
[INFO] [stdout]    |
[INFO] [stdout] 47 | type TokenProducer = Fn(&str) -> Option<(Token, usize)>;
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 | type TokenProducer = dyn Fn(&str) -> Option<(Token, usize)>;
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/run/types.rs:12:23
[INFO] [stdout]    |
[INFO] [stdout] 12 |     constraints: Vec<Box<Constraint>>,
[INFO] [stdout]    |                          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 12 |     constraints: Vec<Box<dyn Constraint>>,
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use regex;
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/parse/tree.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parse/mod.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 |     if (is_bin_op(tokens.front())) {
[INFO] [stdout]     |        ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -     if (is_bin_op(tokens.front())) {
[INFO] [stdout] 160 +     if is_bin_op(tokens.front()) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/parse/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |                 if (expect_expr) {
[INFO] [stdout]     |                    ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 183 -                 if (expect_expr) {
[INFO] [stdout] 183 +                 if expect_expr {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::result`
[INFO] [stdout]  --> src/run/types.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::result;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/lex/mod.rs:47:22
[INFO] [stdout]    |
[INFO] [stdout] 47 | type TokenProducer = Fn(&str) -> Option<(Token, usize)>;
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 | type TokenProducer = dyn Fn(&str) -> Option<(Token, usize)>;
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/run/types.rs:12:23
[INFO] [stdout]    |
[INFO] [stdout] 12 |     constraints: Vec<Box<Constraint>>,
[INFO] [stdout]    |                          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 12 |     constraints: Vec<Box<dyn Constraint>>,
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/run/types.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn assign(t: Type) {
[INFO] [stdout]    |               ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/lex/mod.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub enum Token {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] 7  |     Type,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 8  |     Fn,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 9  |     Float,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     Int,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     Char,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 12 |     Array,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 13 |     Struct,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 14 |     Contract,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     Return,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     While,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 17 |     If,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 18 |     Else,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 19 |     Id(String),
[INFO] [stdout]    |     ^^
[INFO] [stdout] 20 |     FloatLiteral(f64),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 21 |     IntLiteral(u64),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 22 |     StringLiteral(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     CharLiteral(char),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 24 |     Plus,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 25 |     Minus,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 26 |     Star,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 27 |     Slash,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 28 |     Percent,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 29 |     Equality,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 30 |     Equals,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 31 |     Inequality,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 32 |     Less,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 33 |     LessOrEqual,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 34 |     Greater,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 35 |     GreaterOrEqual,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     LeftParen,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 37 |     RightParen,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 38 |     Semicolon,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 39 |     Comma,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 40 |     Pipe,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 41 |     LeftBracket,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 42 |     RightBracket,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 43 |     LeftBrace,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 44 |     RightBrace,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Token` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TokenProducer` is never used
[INFO] [stdout]   --> src/lex/mod.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 47 | type TokenProducer = Fn(&str) -> Option<(Token, usize)>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lexer` is never constructed
[INFO] [stdout]   --> src/lex/mod.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct Lexer {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lex`, and `tokenize` are never used
[INFO] [stdout]    --> src/lex/mod.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout] 53  | impl Lexer {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 54  |     pub fn new() -> Lexer {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub fn lex(&self, code: &str) -> VecDeque<Token> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn tokenize(&self, code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_exactly` is never used
[INFO] [stdout]    --> src/lex/mod.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn lex_exactly(lit: &'static str, tok: Token) -> Box<TokenProducer> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_id` is never used
[INFO] [stdout]    --> src/lex/mod.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn lex_id(code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_int_lit` is never used
[INFO] [stdout]    --> src/lex/mod.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn lex_int_lit(code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_float_lit` is never used
[INFO] [stdout]    --> src/lex/mod.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn lex_float_lit(code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_string_lit` is never used
[INFO] [stdout]    --> src/lex/mod.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn lex_string_lit(code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lex_char` is never used
[INFO] [stdout]    --> src/lex/mod.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn lex_char(code: &str) -> Option<(Token, usize)> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]  --> src/parse/mod.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse(mut tokens: VecDeque<Token>) -> Statement {
[INFO] [stdout]   |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_statement` is never used
[INFO] [stdout]   --> src/parse/mod.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn parse_statement(tokens: &mut VecDeque<Token>) -> Statement {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_statement_expr` is never used
[INFO] [stdout]   --> src/parse/mod.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn parse_statement_expr(tokens: &mut VecDeque<Token>) -> Statement {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_block` is never used
[INFO] [stdout]   --> src/parse/mod.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn parse_block(tokens: &mut VecDeque<Token>) -> Statement {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_series` is never used
[INFO] [stdout]   --> src/parse/mod.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn parse_series(tokens: &mut VecDeque<Token>) -> Vec<Statement> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_fn_decl` is never used
[INFO] [stdout]   --> src/parse/mod.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn parse_fn_decl(tokens: &mut VecDeque<Token>) -> Statement {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_if` is never used
[INFO] [stdout]    --> src/parse/mod.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn parse_if(tokens: &mut VecDeque<Token>) -> Statement {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_expression` is never used
[INFO] [stdout]    --> src/parse/mod.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn parse_expression(tokens: &mut VecDeque<Token>) -> Expression {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_assignment` is never used
[INFO] [stdout]    --> src/parse/mod.rs:137:4
[INFO] [stdout]     |
[INFO] [stdout] 137 | fn parse_assignment(tokens: &mut VecDeque<Token>) -> Expression {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rvalue` is never used
[INFO] [stdout]    --> src/parse/mod.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn parse_rvalue(tokens: &mut VecDeque<Token>) -> Expression {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_id_expr` is never used
[INFO] [stdout]    --> src/parse/mod.rs:175:4
[INFO] [stdout]     |
[INFO] [stdout] 175 | fn parse_id_expr(name: String, tokens: &mut VecDeque<Token>) -> Expression {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_var_ref` is never used
[INFO] [stdout]    --> src/parse/mod.rs:214:4
[INFO] [stdout]     |
[INFO] [stdout] 214 | fn build_var_ref(tok: Token) -> Expression {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_bin_op` is never used
[INFO] [stdout]    --> src/parse/mod.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn is_bin_op(tok: Option<&Token>) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_tok_is` is never used
[INFO] [stdout]    --> src/parse/mod.rs:232:4
[INFO] [stdout]     |
[INFO] [stdout] 232 | fn next_tok_is(tokens: &mut VecDeque<Token>, tok: Token) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/parse/tree.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum Expression {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 6  |     Assignment {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     Variable {
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     Int {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Str {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Dec {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Char {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     FunctionCall {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     Binary {
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Expression`, `Conditional`, `Block`, `FuncDecl`, and `NoOp` are never constructed
[INFO] [stdout]   --> src/parse/tree.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Statement {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 38 |     Expression {
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     Conditional {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     Block {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     FuncDecl {
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     NoOp,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Value` is never used
[INFO] [stdout]  --> src/run/types.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | enum Value {
[INFO] [stdout]   |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Type` is never constructed
[INFO] [stdout]   --> src/run/types.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct Type {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `assign` is never used
[INFO] [stdout]   --> src/run/types.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Type {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 17 |     fn assign(t: Type) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeError` is never constructed
[INFO] [stdout]   --> src/run/types.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct TypeError {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> src/run/types.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | type Result<Type> = std::result::Result<Type, TypeError>; // have to fully spec name to avoid circular reference
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Constraint` is never used
[INFO] [stdout]   --> src/run/types.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | trait Constraint {
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parse/mod.rs:262:13
[INFO] [stdout]     |
[INFO] [stdout] 262 |         let mut toks = VecDeque::from(vec![
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/parse/mod.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         let mut toks = VecDeque::from(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/parse/mod.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |         let mut toks = VecDeque::from(vec![Token::Semicolon]);
[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/parse/mod.rs:609:13
[INFO] [stdout]     |
[INFO] [stdout] 609 |         let mut toks = VecDeque::from(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/parse/mod.rs:633:13
[INFO] [stdout]     |
[INFO] [stdout] 633 |         let mut toks = VecDeque::from(vec![
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/run/types.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn assign(t: Type) {
[INFO] [stdout]    |               ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Str`, `Dec`, and `Char` are never constructed
[INFO] [stdout]   --> src/parse/tree.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | pub enum Expression {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     Str {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     Dec {
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Char {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Value` is never used
[INFO] [stdout]  --> src/run/types.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | enum Value {
[INFO] [stdout]   |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Type` is never constructed
[INFO] [stdout]   --> src/run/types.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct Type {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `assign` is never used
[INFO] [stdout]   --> src/run/types.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Type {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 17 |     fn assign(t: Type) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TypeError` is never constructed
[INFO] [stdout]   --> src/run/types.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct TypeError {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> src/run/types.rs:26:6
[INFO] [stdout]    |
[INFO] [stdout] 26 | type Result<Type> = std::result::Result<Type, TypeError>; // have to fully spec name to avoid circular reference
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Constraint` is never used
[INFO] [stdout]   --> src/run/types.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | trait Constraint {
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.76s
[INFO] running `Command { std: "docker" "inspect" "e66e5b2464b3fac1bcdb62aeab437124c8de73f85c4271429ce4b5cb2b39da6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e66e5b2464b3fac1bcdb62aeab437124c8de73f85c4271429ce4b5cb2b39da6c", kill_on_drop: false }`
[INFO] [stdout] e66e5b2464b3fac1bcdb62aeab437124c8de73f85c4271429ce4b5cb2b39da6c
