[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#bca37a20bd376ce3fd138e7cdee7fe704e0f8814 for pr-139493-3
[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] 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] validating manifest of git repo https://github.com/jack-t/contracts 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/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" "+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] 5d7e4bbd61db852a1a1d985e308dbb7c16785ce43d34e0949595d16b45cf7ec0
[INFO] running `Command { std: "docker" "start" "-a" "5d7e4bbd61db852a1a1d985e308dbb7c16785ce43d34e0949595d16b45cf7ec0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5d7e4bbd61db852a1a1d985e308dbb7c16785ce43d34e0949595d16b45cf7ec0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5d7e4bbd61db852a1a1d985e308dbb7c16785ce43d34e0949595d16b45cf7ec0", kill_on_drop: false }`
[INFO] [stdout] 5d7e4bbd61db852a1a1d985e308dbb7c16785ce43d34e0949595d16b45cf7ec0
[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] 408b35839f4d1c996e4c233202e0949dfd33885cf4c204fc957991adbb3f4775
[INFO] running `Command { std: "docker" "start" "-a" "408b35839f4d1c996e4c233202e0949dfd33885cf4c204fc957991adbb3f4775", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.45
[INFO] [stderr]     Checking cfg-if v0.1.6
[INFO] [stderr]    Compiling regex v1.1.0
[INFO] [stderr]     Checking lazy_static v1.2.0
[INFO] [stderr]    Compiling memchr v2.1.2
[INFO] [stderr]     Checking regex-syntax v0.6.4
[INFO] [stderr]     Checking thread_local v0.3.6
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) 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/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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) 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/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: 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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] [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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Token` is never used
[INFO] [stdout]  --> src/lex/mod.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Token {
[INFO] [stdout]   |          ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) 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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.03s
[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: enum `Expression` is never used
[INFO] [stdout]  --> src/parse/tree.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum Expression {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Statement` is never used
[INFO] [stdout]   --> src/parse/tree.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Statement {
[INFO] [stdout]    |          ^^^^^^^^^
[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] running `Command { std: "docker" "inspect" "408b35839f4d1c996e4c233202e0949dfd33885cf4c204fc957991adbb3f4775", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "408b35839f4d1c996e4c233202e0949dfd33885cf4c204fc957991adbb3f4775", kill_on_drop: false }`
[INFO] [stdout] 408b35839f4d1c996e4c233202e0949dfd33885cf4c204fc957991adbb3f4775
