[INFO] cloning repository https://github.com/valikminak/lox
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/valikminak/lox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalikminak%2Flox", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalikminak%2Flox'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c0f6439ffb0c9559cf4b9c39a22471f0ee55323c
[INFO] testing valikminak/lox against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvalikminak%2Flox" "/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/valikminak/lox
[INFO] finished tweaking git repo https://github.com/valikminak/lox
[INFO] tweaked toml for git repo https://github.com/valikminak/lox written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/valikminak/lox on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/valikminak/lox 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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 54fa7a71a4d3520270aa1062d6ed4d17cabf6be6ffdb8055208bf848dab34774
[INFO] running `Command { std: "docker" "start" "-a" "54fa7a71a4d3520270aa1062d6ed4d17cabf6be6ffdb8055208bf848dab34774", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "54fa7a71a4d3520270aa1062d6ed4d17cabf6be6ffdb8055208bf848dab34774", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "54fa7a71a4d3520270aa1062d6ed4d17cabf6be6ffdb8055208bf848dab34774", kill_on_drop: false }`
[INFO] [stdout] 54fa7a71a4d3520270aa1062d6ed4d17cabf6be6ffdb8055208bf848dab34774
[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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7af6a2b58573e542fd4414554bdfacfcd7893c39f22c5624ee3292392425c9ea
[INFO] running `Command { std: "docker" "start" "-a" "7af6a2b58573e542fd4414554bdfacfcd7893c39f22c5624ee3292392425c9ea", kill_on_drop: false }`
[INFO] [stderr]    Compiling lox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Operator::*`
[INFO] [stdout]   --> src/evaluate.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         use Operator::*;
[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: `crate::tokenize::ScanError`
[INFO] [stdout]   --> src/main.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 50 |             use crate::tokenize::ScanError;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/evaluate.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut environ = Environment::new(None);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]    --> src/tokenize2.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let (n, ch) = chars.next()?;
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[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/tokenize2.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let mut line = 1;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/main.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |         Error::Tokenize(e) => {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interp`
[INFO] [stdout]    --> src/main.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn run_interp(interp: &mut evaluate::Interpreter, source: reader::Source) -> Result<(), Error> {
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_interp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokens`
[INFO] [stdout]    --> src/main.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let tokens = tokenize2::tokenize(source);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Output` is never used
[INFO] [stdout]   --> src/evaluate.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub type Output = ();
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `top_level` is never read
[INFO] [stdout]   --> src/evaluate.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Interpreter {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 47 |     top_level: Rc<Environment>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `evaluate` is never used
[INFO] [stdout]   --> src/evaluate.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl Interpreter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn evaluate(&mut self,  ast: AST) -> Result<Output, Error> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]   --> src/evaluate.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn evaluate(ast: AST) -> Result<Output, Error> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_statements` is never used
[INFO] [stdout]   --> src/evaluate.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn execute_statements(statements: &Vec<Stmt>, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_statement` is never used
[INFO] [stdout]   --> src/evaluate.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn execute_statement(stmt: &Stmt, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_expression` is never used
[INFO] [stdout]   --> src/evaluate.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn evaluate_expression(expr: &Expr, environ: &Rc<Environment>) -> Result<LoxValue, Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]   --> src/parser.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Parser {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/parser.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl Parser {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  41 |     pub fn new(tokens: Tokens) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     fn accept(&mut self, toktype: TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn accepts<const N: usize>(&mut self, toktypes: [TokenType; N]) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     fn consume(&mut self, toktype: TokenType, msg: &str) -> Result<(), Error> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn syntax_error(&self, msg: &str) -> Error {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     fn last_token(&self) -> &Token {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn last_lexeme(&self) -> &String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     fn at_end(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     fn parse_top(&mut self) -> Result<AST, Error> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn parse_statements(&mut self) -> Result<Vec<Stmt>, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn parse_var_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn parse_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     fn parse_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn parse_print_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn parse_expression_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn parse_expression(&mut self) -> Result<Expr, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn parse_assignment(&mut self) -> Result<Expr, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn parse_binary(&mut self) -> Result<Expr, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn parse_unary(&mut self) -> Result<Expr, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     fn parse_primary(&mut self) -> Result<Expr, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]    --> src/parser.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn parse(tokens: Tokens) -> Result<AST, Error> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]  --> src/reader.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | impl Source {
[INFO] [stdout]   | ----------- associated function in this implementation
[INFO] [stdout] 6 |     pub fn from(s: impl Into<String>) -> Source {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tokens` is never constructed
[INFO] [stdout]   --> src/tokenize.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct Tokens {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `UnexpectedCharacter` and `UnterminatedString` are never constructed
[INFO] [stdout]   --> src/tokenize.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub enum ScanError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 93 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     UnterminatedString { line: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tokenize.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct Error (Vec<ScanError>);
[INFO] [stdout]    |            -----  ^^^^^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]    --> src/tokenize.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | struct Scanner {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tokenize.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 115 |     fn new(source: &str) -> Scanner {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn error(&mut self, err: ScanError) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     fn is_at_end(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     fn scan_tokens(mut self) -> Result<Tokens, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn advance(&mut self) -> char {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn matches(&mut self, expected: char) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn lexeme(&self) -> String {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn add_token(&mut self, toktype: TokenType) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     fn peek(&self) -> char {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn add_token_with_literal(&mut self, toktype: TokenType, literal: Literal) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn scan_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     fn string(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     fn number(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     fn identifier(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize` is never used
[INFO] [stdout]    --> src/tokenize.rs:317:8
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn tokenize(source: Source) -> Result<Tokens, Error> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AST` is never constructed
[INFO] [stdout]  --> src/ast.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AST {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `EString`, `EBool`, `ENil`, `EVariable`, and `EAssign` are never constructed
[INFO] [stdout]   --> src/ast.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum Expr {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 54 |     EString {value: String},
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 55 |     EBool {value: bool},
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 56 |     ENil,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     EVariable {name: String},
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 62 |     EAssign {name: String, value: Box<Expr>}
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `string`, `bool`, `nil`, `variable`, and `assign` are never used
[INFO] [stdout]    --> src/ast.rs:71:12
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl Expr {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn string(value: impl Into<String>) -> Expr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn bool(value: bool) -> Expr {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn nil() -> Expr {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn variable(name: impl Into<String>) -> Expr {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn assign(name: impl Into<String>, value: Expr) -> Expr {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Stmt` is never used
[INFO] [stdout]    --> src/ast.rs:108:10
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub enum Stmt {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `print`, `expression`, and `vardecl` are never used
[INFO] [stdout]    --> src/ast.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl Stmt {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] 117 |     pub fn print(expr: Expr) -> Stmt {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn expression(expr: Expr) -> Stmt {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn vardecl(name: impl Into<String>, initializer: Option<Expr>) -> Stmt {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `parent` and `vars` are never read
[INFO] [stdout]  --> src/environ.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Environment<V: Clone> {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 6 |     parent: Option<Rc<Environment<V>>>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 7 |     vars: RefCell<HashMap<String, V>>,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `declare`, `lookup`, and `assign` are never used
[INFO] [stdout]   --> src/environ.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<V: Clone> Environment<V> {
[INFO] [stdout]    | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn declare(&self, name: &str, value: V) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn lookup(&self, name: &str) -> Option<V> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn assign(&self, name: &str, value: V) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/tokenize2.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum TokenType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     TSlash,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     TAnd,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 38 |     TClass,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 39 |     TElse,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 40 |     TFalse,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 41 |     TFun,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 42 |     TFor,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 43 |     TIf,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 44 |     TNil,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 45 |     TOr,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 46 |     TPrint,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     TReturn,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 48 |     TSuper,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 49 |     TThis,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 50 |     TTrue,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 51 |     TVar,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 52 |     TWhile,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tokens` is never read
[INFO] [stdout]   --> src/tokenize2.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct Tokens {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 79 |     pub tokens: Vec<Token>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Tokens` 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 `UnexpectedCharacter` and `UnterminatedString` are never constructed
[INFO] [stdout]   --> src/tokenize2.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub enum ScanError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 84 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     UnterminatedString { line: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tokenize2.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct Error(Vec<ScanError>);
[INFO] [stdout]    |            ----- ^^^^^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `iter` is never used
[INFO] [stdout]   --> src/tokenize2.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | impl Error {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 93 |     pub fn iter(&self) -> std::slice::Iter<'_, ScanError> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.91s
[INFO] running `Command { std: "docker" "inspect" "7af6a2b58573e542fd4414554bdfacfcd7893c39f22c5624ee3292392425c9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7af6a2b58573e542fd4414554bdfacfcd7893c39f22c5624ee3292392425c9ea", kill_on_drop: false }`
[INFO] [stdout] 7af6a2b58573e542fd4414554bdfacfcd7893c39f22c5624ee3292392425c9ea
[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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c879a5c7fc92eedc1d79bfa46bf85b09e91b4dc48fba55cb8b629b58716f6735
[INFO] running `Command { std: "docker" "start" "-a" "c879a5c7fc92eedc1d79bfa46bf85b09e91b4dc48fba55cb8b629b58716f6735", kill_on_drop: false }`
[INFO] [stderr]    Compiling lox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Operator::*`
[INFO] [stdout]   --> src/evaluate.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         use Operator::*;
[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: `super::*`
[INFO] [stdout]    --> src/evaluate.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 171 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/parser.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tokenize::ScanError`
[INFO] [stdout]   --> src/main.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 50 |             use crate::tokenize::ScanError;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/evaluate.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let mut environ = Environment::new(None);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]    --> src/tokenize2.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |     let (n, ch) = chars.next()?;
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[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/tokenize2.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let mut line = 1;
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/main.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |         Error::Tokenize(e) => {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interp`
[INFO] [stdout]    --> src/main.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn run_interp(interp: &mut evaluate::Interpreter, source: reader::Source) -> Result<(), Error> {
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_interp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tokens`
[INFO] [stdout]    --> src/main.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let tokens = tokenize2::tokenize(source);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Output` is never used
[INFO] [stdout]   --> src/evaluate.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub type Output = ();
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `top_level` is never read
[INFO] [stdout]   --> src/evaluate.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Interpreter {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 47 |     top_level: Rc<Environment>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `evaluate` is never used
[INFO] [stdout]   --> src/evaluate.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl Interpreter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn evaluate(&mut self,  ast: AST) -> Result<Output, Error> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]   --> src/evaluate.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn evaluate(ast: AST) -> Result<Output, Error> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_statements` is never used
[INFO] [stdout]   --> src/evaluate.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn execute_statements(statements: &Vec<Stmt>, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_statement` is never used
[INFO] [stdout]   --> src/evaluate.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn execute_statement(stmt: &Stmt, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_expression` is never used
[INFO] [stdout]   --> src/evaluate.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn evaluate_expression(expr: &Expr, environ: &Rc<Environment>) -> Result<LoxValue, Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser.rs:97:8
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  97 |     fn parse_top(&mut self) -> Result<AST, Error> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn parse_statements(&mut self) -> Result<Vec<Stmt>, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn parse_var_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn parse_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     fn parse_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn parse_print_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn parse_expression_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]    --> src/parser.rs:224:8
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub fn parse(tokens: Tokens) -> Result<AST, Error> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_string` is never used
[INFO] [stdout]   --> src/reader.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn parse_string(s: &str) -> AST {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `line` and `ch` are never read
[INFO] [stdout]   --> src/tokenize.rs:93:27
[INFO] [stdout]    |
[INFO] [stdout] 93 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stdout]    |     -------------------   ^^^^         ^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UnterminatedString` is never constructed
[INFO] [stdout]   --> src/tokenize.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub enum ScanError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 93 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stdout] 94 |     UnterminatedString { line: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tokenize.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct Error (Vec<ScanError>);
[INFO] [stdout]    |            -----  ^^^^^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `error` is never used
[INFO] [stdout]    --> src/tokenize.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl Scanner {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn error(&mut self, err: ScanError) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AST` is never constructed
[INFO] [stdout]  --> src/ast.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct AST {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Stmt` is never used
[INFO] [stdout]    --> src/ast.rs:108:10
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub enum Stmt {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `print`, `expression`, and `vardecl` are never used
[INFO] [stdout]    --> src/ast.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl Stmt {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] 117 |     pub fn print(expr: Expr) -> Stmt {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn expression(expr: Expr) -> Stmt {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn vardecl(name: impl Into<String>, initializer: Option<Expr>) -> Stmt {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `parent` and `vars` are never read
[INFO] [stdout]  --> src/environ.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Environment<V: Clone> {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 6 |     parent: Option<Rc<Environment<V>>>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 7 |     vars: RefCell<HashMap<String, V>>,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `declare`, `lookup`, and `assign` are never used
[INFO] [stdout]   --> src/environ.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<V: Clone> Environment<V> {
[INFO] [stdout]    | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn declare(&self, name: &str, value: V) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn lookup(&self, name: &str) -> Option<V> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn assign(&self, name: &str, value: V) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `TSlash` is never constructed
[INFO] [stdout]   --> src/tokenize2.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum TokenType {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     TSlash,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` 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 `UnexpectedCharacter` and `UnterminatedString` are never constructed
[INFO] [stdout]   --> src/tokenize2.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub enum ScanError {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 84 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     UnterminatedString { line: usize },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/tokenize2.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct Error(Vec<ScanError>);
[INFO] [stdout]    |            ----- ^^^^^^^^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `iter` is never used
[INFO] [stdout]   --> src/tokenize2.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | impl Error {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 93 |     pub fn iter(&self) -> std::slice::Iter<'_, ScanError> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.62s
[INFO] running `Command { std: "docker" "inspect" "c879a5c7fc92eedc1d79bfa46bf85b09e91b4dc48fba55cb8b629b58716f6735", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c879a5c7fc92eedc1d79bfa46bf85b09e91b4dc48fba55cb8b629b58716f6735", kill_on_drop: false }`
[INFO] [stdout] c879a5c7fc92eedc1d79bfa46bf85b09e91b4dc48fba55cb8b629b58716f6735
[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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e4edda2292e0b9f27501057671eb1a53b06b36d358245ca8910bf362133e2863
[INFO] running `Command { std: "docker" "start" "-a" "e4edda2292e0b9f27501057671eb1a53b06b36d358245ca8910bf362133e2863", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Operator::*`
[INFO] [stderr]   --> src/evaluate.rs:28:13
[INFO] [stderr]    |
[INFO] [stderr] 28 |         use Operator::*;
[INFO] [stderr]    |             ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/evaluate.rs:171:9
[INFO] [stderr]     |
[INFO] [stderr] 171 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/parser.rs:232:9
[INFO] [stderr]     |
[INFO] [stderr] 232 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::tokenize::ScanError`
[INFO] [stderr]   --> src/main.rs:50:17
[INFO] [stderr]    |
[INFO] [stderr] 50 |             use crate::tokenize::ScanError;
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/evaluate.rs:63:9
[INFO] [stderr]    |
[INFO] [stderr] 63 |     let mut environ = Environment::new(None);
[INFO] [stderr]    |         ----^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ch`
[INFO] [stderr]    --> src/tokenize2.rs:106:13
[INFO] [stderr]     |
[INFO] [stderr] 106 |     let (n, ch) = chars.next()?;
[INFO] [stderr]     |             ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/tokenize2.rs:121:9
[INFO] [stderr]     |
[INFO] [stderr] 121 |     let mut line = 1;
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `e`
[INFO] [stderr]   --> src/main.rs:49:25
[INFO] [stderr]    |
[INFO] [stderr] 49 |         Error::Tokenize(e) => {
[INFO] [stderr]    |                         ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `interp`
[INFO] [stderr]    --> src/main.rs:111:15
[INFO] [stderr]     |
[INFO] [stderr] 111 | fn run_interp(interp: &mut evaluate::Interpreter, source: reader::Source) -> Result<(), Error> {
[INFO] [stderr]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_interp`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `tokens`
[INFO] [stderr]    --> src/main.rs:112:9
[INFO] [stderr]     |
[INFO] [stderr] 112 |     let tokens = tokenize2::tokenize(source);
[INFO] [stderr]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tokens`
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `Output` is never used
[INFO] [stderr]   --> src/evaluate.rs:14:10
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub type Output = ();
[INFO] [stderr]    |          ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `top_level` is never read
[INFO] [stderr]   --> src/evaluate.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub struct Interpreter {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] 47 |     top_level: Rc<Environment>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `evaluate` is never used
[INFO] [stderr]   --> src/evaluate.rs:55:12
[INFO] [stderr]    |
[INFO] [stderr] 50 | impl Interpreter {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub fn evaluate(&mut self,  ast: AST) -> Result<Output, Error> {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate` is never used
[INFO] [stderr]   --> src/evaluate.rs:61:8
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub fn evaluate(ast: AST) -> Result<Output, Error> {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `execute_statements` is never used
[INFO] [stderr]   --> src/evaluate.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn execute_statements(statements: &Vec<Stmt>, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `execute_statement` is never used
[INFO] [stderr]   --> src/evaluate.rs:76:8
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn execute_statement(stmt: &Stmt, environ: &Rc<Environment>) -> Result<(), Error> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_expression` is never used
[INFO] [stderr]   --> src/evaluate.rs:98:8
[INFO] [stderr]    |
[INFO] [stderr] 98 | pub fn evaluate_expression(expr: &Expr, environ: &Rc<Environment>) -> Result<LoxValue, Error> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/parser.rs:97:8
[INFO] [stderr]     |
[INFO] [stderr]  40 | impl Parser {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  97 |     fn parse_top(&mut self) -> Result<AST, Error> {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     fn parse_statements(&mut self) -> Result<Vec<Stmt>, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     fn parse_var_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 126 |     fn parse_declaration(&mut self) -> Result<Stmt, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 |     fn parse_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     fn parse_print_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 151 |     fn parse_expression_statement(&mut self) -> Result<Stmt, Error> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse` is never used
[INFO] [stderr]    --> src/parser.rs:224:8
[INFO] [stderr]     |
[INFO] [stderr] 224 | pub fn parse(tokens: Tokens) -> Result<AST, Error> {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_string` is never used
[INFO] [stderr]   --> src/reader.rs:36:8
[INFO] [stderr]    |
[INFO] [stderr] 36 |     fn parse_string(s: &str) -> AST {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `line` and `ch` are never read
[INFO] [stderr]   --> src/tokenize.rs:93:27
[INFO] [stderr]    |
[INFO] [stderr] 93 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stderr]    |     -------------------   ^^^^         ^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `UnterminatedString` is never constructed
[INFO] [stderr]   --> src/tokenize.rs:94:5
[INFO] [stderr]    |
[INFO] [stderr] 92 | pub enum ScanError {
[INFO] [stderr]    |          --------- variant in this enum
[INFO] [stderr] 93 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stderr] 94 |     UnterminatedString { line: usize },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/tokenize.rs:97:19
[INFO] [stderr]    |
[INFO] [stderr] 97 | pub struct Error (Vec<ScanError>);
[INFO] [stderr]    |            -----  ^^^^^^^^^^^^^^
[INFO] [stderr]    |            |
[INFO] [stderr]    |            field in this struct
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider removing this field
[INFO] [stderr]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `error` is never used
[INFO] [stderr]    --> src/tokenize.rs:126:8
[INFO] [stderr]     |
[INFO] [stderr] 114 | impl Scanner {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 126 |     fn error(&mut self, err: ScanError) {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AST` is never constructed
[INFO] [stderr]  --> src/ast.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct AST {
[INFO] [stderr]   |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Stmt` is never used
[INFO] [stderr]    --> src/ast.rs:108:10
[INFO] [stderr]     |
[INFO] [stderr] 108 | pub enum Stmt {
[INFO] [stderr]     |          ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `print`, `expression`, and `vardecl` are never used
[INFO] [stderr]    --> src/ast.rs:117:12
[INFO] [stderr]     |
[INFO] [stderr] 116 | impl Stmt {
[INFO] [stderr]     | --------- associated functions in this implementation
[INFO] [stderr] 117 |     pub fn print(expr: Expr) -> Stmt {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn expression(expr: Expr) -> Stmt {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 |     pub fn vardecl(name: impl Into<String>, initializer: Option<Expr>) -> Stmt {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `parent` and `vars` are never read
[INFO] [stderr]  --> src/environ.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct Environment<V: Clone> {
[INFO] [stderr]   |            ----------- fields in this struct
[INFO] [stderr] 6 |     parent: Option<Rc<Environment<V>>>,
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 7 |     vars: RefCell<HashMap<String, V>>,
[INFO] [stderr]   |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `declare`, `lookup`, and `assign` are never used
[INFO] [stderr]   --> src/environ.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | impl<V: Clone> Environment<V> {
[INFO] [stderr]    | ----------------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub fn declare(&self, name: &str, value: V) {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub fn lookup(&self, name: &str) -> Option<V> {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn assign(&self, name: &str, value: V) {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `TSlash` is never constructed
[INFO] [stderr]   --> src/tokenize2.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub enum TokenType {
[INFO] [stderr]    |          --------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 18 |     TSlash,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TokenType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `UnexpectedCharacter` and `UnterminatedString` are never constructed
[INFO] [stderr]   --> src/tokenize2.rs:84:5
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub enum ScanError {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr] 84 |     UnexpectedCharacter { line: usize, ch: char },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 85 |     UnterminatedString { line: usize },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ScanError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/tokenize2.rs:89:18
[INFO] [stderr]    |
[INFO] [stderr] 89 | pub struct Error(Vec<ScanError>);
[INFO] [stderr]    |            ----- ^^^^^^^^^^^^^^
[INFO] [stderr]    |            |
[INFO] [stderr]    |            field in this struct
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider removing this field
[INFO] [stderr]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `iter` is never used
[INFO] [stderr]   --> src/tokenize2.rs:93:12
[INFO] [stderr]    |
[INFO] [stderr] 92 | impl Error {
[INFO] [stderr]    | ---------- method in this implementation
[INFO] [stderr] 93 |     pub fn iter(&self) -> std::slice::Iter<'_, ScanError> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `lox` (bin "lox" test) generated 33 warnings (run `cargo fix --bin "lox" -p lox --tests` to apply 10 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/lox-f3b2ecb40138b411)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test evaluate::tests::its_alive ... ok
[INFO] [stdout] test reader::tests::test_binary ... ok
[INFO] [stdout] test reader::tests::its_alive ... ok
[INFO] [stdout] test reader::tests::test_primary ... ok
[INFO] [stdout] test tokenize2::tests::identifiers ... ok
[INFO] [stdout] test tokenize2::tests::its_alive ... ok
[INFO] [stdout] test tokenize2::tests::numbers ... ok
[INFO] [stdout] test tokenize2::tests::two_character ... ok
[INFO] [stdout] test tokenize2::tests::strings ... ok
[INFO] [stdout] test tokenize2::tests::single_character ... ok
[INFO] [stdout] test tokenize::tests::its_alive ... ok
[INFO] [stdout] test tokenize::tests::single_character ... ok
[INFO] [stdout] test tokenize::tests::two_characters ... ok
[INFO] [stdout] test tokenize::tests::strings ... ok
[INFO] [stdout] test tokenize::tests::identifiers ... ok
[INFO] [stdout] test tokenize::tests::numbers ... ok
[INFO] [stdout] test tokenize::tests::keywords ... ok
[INFO] [stdout] test parser::tests::its_alive ... ok
[INFO] [stdout] test tokenize2::tests::keywords ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tokenize2::tests::keywords stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tokenize2::tests::keywords' (32) panicked at src/tokenize2.rs:374:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: [Token { toktype: TIdentifier, lexeme: "and", line: 1 }, Token { toktype: TIdentifier, lexeme: "class", line: 1 }, Token { toktype: TIdentifier, lexeme: "else", line: 1 }, Token { toktype: TIdentifier, lexeme: "false", line: 1 }, Token { toktype: TIdentifier, lexeme: "for", line: 1 }, Token { toktype: TIdentifier, lexeme: "fun", line: 1 }, Token { toktype: TIdentifier, lexeme: "if", line: 1 }, Token { toktype: TIdentifier, lexeme: "nil", line: 1 }, Token { toktype: TIdentifier, lexeme: "or", line: 1 }, Token { toktype: TIdentifier, lexeme: "print", line: 1 }, Token { toktype: TIdentifier, lexeme: "return", line: 1 }, Token { toktype: TIdentifier, lexeme: "super", line: 1 }, Token { toktype: TIdentifier, lexeme: "this", line: 1 }, Token { toktype: TIdentifier, lexeme: "true", line: 1 }, Token { toktype: TIdentifier, lexeme: "var", line: 1 }, Token { toktype: TIdentifier, lexeme: "while", line: 1 }, Token { toktype: TEof, lexeme: "", line: 1 }]
[INFO] [stdout]  right: [Token { toktype: TAnd, lexeme: "and", line: 1 }, Token { toktype: TClass, lexeme: "class", line: 1 }, Token { toktype: TElse, lexeme: "else", line: 1 }, Token { toktype: TFalse, lexeme: "false", line: 1 }, Token { toktype: TFor, lexeme: "for", line: 1 }, Token { toktype: TFun, lexeme: "fun", line: 1 }, Token { toktype: TIf, lexeme: "if", line: 1 }, Token { toktype: TNil, lexeme: "nil", line: 1 }, Token { toktype: TOr, lexeme: "or", line: 1 }, Token { toktype: TPrint, lexeme: "print", line: 1 }, Token { toktype: TReturn, lexeme: "return", line: 1 }, Token { toktype: TSuper, lexeme: "super", line: 1 }, Token { toktype: TThis, lexeme: "this", line: 1 }, Token { toktype: TTrue, lexeme: "true", line: 1 }, Token { toktype: TVar, lexeme: "var", line: 1 }, Token { toktype: TWhile, lexeme: "while", line: 1 }, Token { toktype: TEof, lexeme: "", line: 1 }]
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5dbdc0993c82 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5dbdc0993c82 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5dbdc0993c82 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5dbdc0993c82 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5dbdc09a916a - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5dbdc09a916a - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x5dbdc0998ab6 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5dbdc0998ab6 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5dbdc097214f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5dbdc097214f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5dbdc098bf69 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5dbdc092786e - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5dbdc092786e - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5dbdc098c122 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5dbdc098c122 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5dbdc0972208 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5dbdc0969bd9 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5dbdc097305d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5dbdc09a983c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5dbdc09a96f3 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x5dbdc0909aa1 - core[c5ed12ab89cc536a]::panicking::assert_failed::<alloc[9c68fdf4f4f29218]::vec::Vec<lox[fe17ad9049a13feb]::tokenize2::Token>, alloc[9c68fdf4f4f29218]::vec::Vec<lox[fe17ad9049a13feb]::tokenize2::Token>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x5dbdc091a389 - lox[fe17ad9049a13feb]::tokenize2::tests::keywords
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tokenize2.rs:374:9
[INFO] [stdout]   22:     0x5dbdc0914c57 - lox[fe17ad9049a13feb]::tokenize2::tests::keywords::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tokenize2.rs:370:18
[INFO] [stdout]   23:     0x5dbdc090ee26 - <lox[fe17ad9049a13feb]::tokenize2::tests::keywords::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5dbdc091bc1b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5dbdc091bc1b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x5dbdc092847a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x5dbdc092847a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x5dbdc092847a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x5dbdc092847a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5dbdc092847a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5dbdc092847a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x5dbdc092847a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x5dbdc0922944 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x5dbdc0922944 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5dbdc092af72 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x5dbdc092af72 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x5dbdc092af72 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x5dbdc092af72 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5dbdc092af72 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5dbdc092af72 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x5dbdc092af72 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x5dbdc099352f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x5dbdc099352f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x785d94472aa4 - <unknown>
[INFO] [stdout]   45:     0x785d944ffa64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tokenize2::tests::keywords
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 18 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin lox`
[INFO] running `Command { std: "docker" "inspect" "e4edda2292e0b9f27501057671eb1a53b06b36d358245ca8910bf362133e2863", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e4edda2292e0b9f27501057671eb1a53b06b36d358245ca8910bf362133e2863", kill_on_drop: false }`
[INFO] [stdout] e4edda2292e0b9f27501057671eb1a53b06b36d358245ca8910bf362133e2863
