[INFO] cloning repository https://github.com/joaovicdsantos/writing-an-interpreter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/joaovicdsantos/writing-an-interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjoaovicdsantos%2Fwriting-an-interpreter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjoaovicdsantos%2Fwriting-an-interpreter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7fc234f36549139293510d0bd9b6055e45684e25
[INFO] checking joaovicdsantos/writing-an-interpreter against try#95813608313bff49cfc1afc393a946a3c085b772 for pr-148946
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjoaovicdsantos%2Fwriting-an-interpreter" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/joaovicdsantos/writing-an-interpreter
[INFO] finished tweaking git repo https://github.com/joaovicdsantos/writing-an-interpreter
[INFO] tweaked toml for git repo https://github.com/joaovicdsantos/writing-an-interpreter written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/joaovicdsantos/writing-an-interpreter on toolchain 95813608313bff49cfc1afc393a946a3c085b772
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/joaovicdsantos/writing-an-interpreter 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" "+95813608313bff49cfc1afc393a946a3c085b772" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cf4cda185464d8dacb11d2f09fec07399d8563cea4b704980fa48577f74215f9
[INFO] running `Command { std: "docker" "start" "-a" "cf4cda185464d8dacb11d2f09fec07399d8563cea4b704980fa48577f74215f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cf4cda185464d8dacb11d2f09fec07399d8563cea4b704980fa48577f74215f9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cf4cda185464d8dacb11d2f09fec07399d8563cea4b704980fa48577f74215f9", kill_on_drop: false }`
[INFO] [stdout] cf4cda185464d8dacb11d2f09fec07399d8563cea4b704980fa48577f74215f9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 154244493e656afcf7aa088093332aed04e4695f06e88230b49d05a3f87021df
[INFO] running `Command { std: "docker" "start" "-a" "154244493e656afcf7aa088093332aed04e4695f06e88230b49d05a3f87021df", kill_on_drop: false }`
[INFO] [stderr]     Checking writing-an-interpreter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `precedence`
[INFO] [stdout]    --> src/parser/parser.rs:204:36
[INFO] [stdout]     |
[INFO] [stdout] 204 |     fn parse_expression(&mut self, precedence: u8) -> Option<Box<dyn Expression>> {
[INFO] [stdout]     |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_precedence`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Node` is never used
[INFO] [stdout]  --> src/ast/ast.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Node {
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Statement` is never used
[INFO] [stdout]  --> src/ast/ast.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Statement: Node {
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Expression` is never used
[INFO] [stdout]   --> src/ast/ast.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Expression: Node {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Program` is never constructed
[INFO] [stdout]   --> src/ast/ast.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Program {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LetStatement` is never constructed
[INFO] [stdout]   --> src/ast/ast.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct LetStatement {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Identifier` is never constructed
[INFO] [stdout]   --> src/ast/ast.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct Identifier {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReturnStatement` is never constructed
[INFO] [stdout]    --> src/ast/ast.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct ReturnStatement {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExpressionStatement` is never constructed
[INFO] [stdout]    --> src/ast/ast.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct ExpressionStatement {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `PrefixParseFn` is never used
[INFO] [stdout]   --> src/parser/parser.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | type PrefixParseFn = fn(&mut Parser) -> Box<dyn Expression>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `InfixParseFn` is never used
[INFO] [stdout]   --> src/parser/parser.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | type InfixParseFn = fn(&mut Parser, dyn Expression) -> Box<dyn Expression>;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOWEST` is never used
[INFO] [stdout]   --> src/parser/parser.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LOWEST: u8 = 1;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EQUALS` is never used
[INFO] [stdout]   --> src/parser/parser.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const EQUALS: u8 = 2;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LESSGREATER` is never used
[INFO] [stdout]   --> src/parser/parser.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const LESSGREATER: u8 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUM` is never used
[INFO] [stdout]   --> src/parser/parser.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const SUM: u8 = 4;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRODUCT` is never used
[INFO] [stdout]   --> src/parser/parser.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const PRODUCT: u8 = 5;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PREFIX` is never used
[INFO] [stdout]   --> src/parser/parser.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const PREFIX: u8 = 6;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CALL` is never used
[INFO] [stdout]   --> src/parser/parser.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const CALL: u8 = 7;
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]   --> src/parser/parser.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct Parser {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/parser/parser.rs:34:8
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl Parser {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  34 |     fn new(lexer: Lexer) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     fn next_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     fn parse_program(&mut self) -> Program {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn parse_statement(&mut self) -> Option<Box<dyn Statement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn parse_let_statement(&mut self) -> Option<Box<LetStatement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn parse_return_statement(&mut self) -> Option<Box<ReturnStatement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn parse_expression_statement(&mut self) -> Option<Box<ExpressionStatement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn cur_token_is(&self, token: TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn peek_token_is(&self, token: TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn expect_peek(&mut self, token: TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn peek_error(&mut self, token: TokenType) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     fn register_prefix(&mut self, token_type: TokenType, fun: PrefixParseFn) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn register_infix(&mut self, token_type: TokenType, fun: InfixParseFn) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     fn parse_expression(&mut self, precedence: u8) -> Option<Box<dyn Expression>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     fn parse_identifier(&mut self) -> Box<dyn Expression> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `literal` is never read
[INFO] [stdout]  --> src/token/token.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Token {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 5 |     pub r#type: TokenType,
[INFO] [stdout] 6 |     pub literal: String,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `precedence`
[INFO] [stdout]    --> src/parser/parser.rs:204:36
[INFO] [stdout]     |
[INFO] [stdout] 204 |     fn parse_expression(&mut self, precedence: u8) -> Option<Box<dyn Expression>> {
[INFO] [stdout]     |                                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_precedence`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `statement_node` is never used
[INFO] [stdout]  --> src/ast/ast.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Statement: Node {
[INFO] [stdout]   |           --------- method in this trait
[INFO] [stdout] 9 |     fn statement_node(&self);
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `expression_node` is never used
[INFO] [stdout]   --> src/ast/ast.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Expression: Node {
[INFO] [stdout]    |           ---------- method in this trait
[INFO] [stdout] 22 |     fn expression_node(&self);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EQUALS` is never used
[INFO] [stdout]   --> src/parser/parser.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const EQUALS: u8 = 2;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LESSGREATER` is never used
[INFO] [stdout]   --> src/parser/parser.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const LESSGREATER: u8 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUM` is never used
[INFO] [stdout]   --> src/parser/parser.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const SUM: u8 = 4;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRODUCT` is never used
[INFO] [stdout]   --> src/parser/parser.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const PRODUCT: u8 = 5;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PREFIX` is never used
[INFO] [stdout]   --> src/parser/parser.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const PREFIX: u8 = 6;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CALL` is never used
[INFO] [stdout]   --> src/parser/parser.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const CALL: u8 = 7;
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `infix_parse_fns` is never read
[INFO] [stdout]   --> src/parser/parser.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | struct Parser {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 30 |     infix_parse_fns: HashMap<TokenType, InfixParseFn>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `register_infix` is never used
[INFO] [stdout]    --> src/parser/parser.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn register_infix(&mut self, token_type: TokenType, fun: InfixParseFn) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
[INFO] running `Command { std: "docker" "inspect" "154244493e656afcf7aa088093332aed04e4695f06e88230b49d05a3f87021df", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "154244493e656afcf7aa088093332aed04e4695f06e88230b49d05a3f87021df", kill_on_drop: false }`
[INFO] [stdout] 154244493e656afcf7aa088093332aed04e4695f06e88230b49d05a3f87021df
