[INFO] cloning repository https://github.com/lucasmolinari/interpreter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lucasmolinari/interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flucasmolinari%2Finterpreter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flucasmolinari%2Finterpreter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 66cd6124c12adcaad66d531e65e9626a0037d860 [INFO] checking lucasmolinari/interpreter against master#af4a5a13a15fa0c60e06321077ef452f769b42fd for pr-122960-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flucasmolinari%2Finterpreter" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/lucasmolinari/interpreter on toolchain af4a5a13a15fa0c60e06321077ef452f769b42fd [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/lucasmolinari/interpreter [INFO] finished tweaking git repo https://github.com/lucasmolinari/interpreter [INFO] tweaked toml for git repo https://github.com/lucasmolinari/interpreter written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/lucasmolinari/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" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3c08df952b17cb1276088f8b6f85c427e8ff5a7d3b0c5cbe536cb5df75149449 [INFO] running `Command { std: "docker" "start" "-a" "3c08df952b17cb1276088f8b6f85c427e8ff5a7d3b0c5cbe536cb5df75149449", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3c08df952b17cb1276088f8b6f85c427e8ff5a7d3b0c5cbe536cb5df75149449", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3c08df952b17cb1276088f8b6f85c427e8ff5a7d3b0c5cbe536cb5df75149449", kill_on_drop: false }` [INFO] [stdout] 3c08df952b17cb1276088f8b6f85c427e8ff5a7d3b0c5cbe536cb5df75149449 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+af4a5a13a15fa0c60e06321077ef452f769b42fd" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] bc5b4a3a22366993e302231cc7e1d954c9121bbbdc522ae58dcbae256ebe859b [INFO] running `Command { std: "docker" "start" "-a" "bc5b4a3a22366993e302231cc7e1d954c9121bbbdc522ae58dcbae256ebe859b", kill_on_drop: false }` [INFO] [stderr] Checking interpreter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `ExpressionStatement`, `Node`, `Statement` [INFO] [stdout] --> src/tests.rs:3:33 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser_utils::{ast::{ExpressionStatement, Node, Statement}, parser::Parser}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lexer_utils::lexer::Lexer` [INFO] [stdout] --> src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use lexer_utils::lexer::Lexer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser_utils::parser::Parser` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use parser_utils::parser::Parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lexer_utils::repl` [INFO] [stdout] --> src/main.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use lexer_utils::repl; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `lexer::Lexer`, `token::TokenType` [INFO] [stdout] --> src/tests.rs:2:26 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::lexer_utils::{lexer::Lexer, token::TokenType}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/main.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | mod tests; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ExpressionStatement`, `Node`, `Statement`, `parser::Parser` [INFO] [stdout] --> src/tests.rs:3:33 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::parser_utils::{ast::{ExpressionStatement, Node, Statement}, parser::Parser}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/main.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | mod tests; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lexer_utils::lexer::Lexer` [INFO] [stdout] --> src/main.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use lexer_utils::lexer::Lexer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser_utils::parser::Parser` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use parser_utils::parser::Parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `lexer_utils::repl` [INFO] [stdout] --> src/main.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use lexer_utils::repl; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lexer_utils/lexer.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | let mut tok: Token; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lexer_utils/lexer.rs:37:13 [INFO] [stdout] | [INFO] [stdout] 37 | let mut tok: Token; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `precedence` [INFO] [stdout] --> src/parser_utils/parser.rs:137:36 [INFO] [stdout] | [INFO] [stdout] 137 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_precedence` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start` is never used [INFO] [stdout] --> src/lexer_utils/repl.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn start(){ [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Expression` is never constructed [INFO] [stdout] --> src/parser_utils/ast.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Node { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] 5 | Statement(Statement), [INFO] [stdout] 6 | Expression(Expression), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/parser_utils/ast.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl Node { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 9 | pub fn get_node(&self) -> &Node { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn is_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn is_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn is_return_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn is_let_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn is_identifier(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn is_integer_literal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn is_prefix_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PrefixExpression` and `InfixExpression` are never constructed [INFO] [stdout] --> src/parser_utils/ast.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 85 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 88 | PrefixExpression(PrefixExpression), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 89 | InfixExpression(InfixExpression), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `precedence` [INFO] [stdout] --> src/parser_utils/parser.rs:137:36 [INFO] [stdout] | [INFO] [stdout] 137 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_precedence` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `infix_parse` is never read [INFO] [stdout] --> src/parser_utils/parser.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct Parser { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | infix_parse: HashMap, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `register_infix` and `errors` are never used [INFO] [stdout] --> src/parser_utils/parser.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 25 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 171 | fn register_infix(&mut self, t: TokenType, fn_ptr: InfixParse) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn errors(&self) -> &Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `EQUALS`, `LESSGREATER`, `SUM`, `PRODUCT`, `PREFIX`, and `CALL` are never constructed [INFO] [stdout] --> src/parser_utils/parser.rs:206:5 [INFO] [stdout] | [INFO] [stdout] 204 | enum Precedence { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 205 | LOWEST = 0, [INFO] [stdout] 206 | EQUALS, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 207 | LESSGREATER, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 208 | SUM, [INFO] [stdout] | ^^^ [INFO] [stdout] 209 | PRODUCT, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 210 | PREFIX, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 211 | CALL, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Lexer` is never constructed [INFO] [stdout] --> src/lexer_utils/lexer.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Lexer { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lexer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer_utils/lexer.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Lexer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 13 | pub fn new(input: String) -> Lexer { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn read_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn next_token(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | fn read_identifier(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | fn read_int(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | fn is_letter(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | fn peek_char(&mut self) -> char { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | fn skip_space(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `start` is never used [INFO] [stdout] --> src/lexer_utils/repl.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn start(){ [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/lexer_utils/token.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum TokenType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 4 | ILLEGAL, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 5 | EOF, [INFO] [stdout] | ^^^ [INFO] [stdout] 6 | IDENT, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 7 | INT, [INFO] [stdout] | ^^^ [INFO] [stdout] 8 | ASSIGN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 9 | EQ, [INFO] [stdout] | ^^ [INFO] [stdout] 10 | NOTEQ, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 11 | PLUS, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | MINUS, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 13 | BANG, [INFO] [stdout] | ^^^^ [INFO] [stdout] 14 | ASTERISK, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 15 | SLASH, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 16 | COMMA, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 17 | SEMICOLON, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 18 | LPAREN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 19 | RPAREN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 20 | LBRACE, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 21 | RBRACE, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 22 | LT, [INFO] [stdout] | ^^ [INFO] [stdout] 23 | GT, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `TokenType` 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: associated function `new_token` is never used [INFO] [stdout] --> src/lexer_utils/token.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl Token { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 39 | pub fn new_token(token_type: TokenType, literal: String) -> Token { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `map` is never read [INFO] [stdout] --> src/lexer_utils/token.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Keywords { [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 48 | pub map: HashMap<&'static str, TokenType>, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Keywords` 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 `check_ident` is never used [INFO] [stdout] --> src/lexer_utils/token.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl Keywords { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 51 | pub fn check_ident(&self, keyword: &str) -> TokenType { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Node` is never used [INFO] [stdout] --> src/parser_utils/ast.rs:4:10 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/parser_utils/ast.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl Node { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] 9 | pub fn get_node(&self) -> &Node { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 13 | pub fn get_token(&self) -> &Token { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn is_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn is_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn is_return_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn is_let_stmt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn is_identifier(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn is_integer_literal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn is_prefix_expr(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LetStatement`, `ReturnStatement`, and `ExpressionStatement` are never constructed [INFO] [stdout] --> src/parser_utils/ast.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 70 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 71 | LetStatement(LetStatement), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 72 | ReturnStatement(ReturnStatement), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 73 | ExpressionStatement(ExpressionStatement), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `token` is never used [INFO] [stdout] --> src/parser_utils/ast.rs:76:8 [INFO] [stdout] | [INFO] [stdout] 75 | impl Statement { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 76 | fn token(&self) -> &Token { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Identifier`, `IntegerLiteral`, `PrefixExpression`, and `InfixExpression` are never constructed [INFO] [stdout] --> src/parser_utils/ast.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 85 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 86 | Identifier(Identifier), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 87 | IntegerLiteral(IntegerLiteral), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 88 | PrefixExpression(PrefixExpression), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 89 | InfixExpression(InfixExpression), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `token` is never used [INFO] [stdout] --> src/parser_utils/ast.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 91 | impl Expression { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] 92 | fn token(&self) -> &Token { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Program` is never constructed [INFO] [stdout] --> src/parser_utils/ast.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct Program { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `PrefixParse` is never used [INFO] [stdout] --> src/parser_utils/parser.rs:13:6 [INFO] [stdout] | [INFO] [stdout] 13 | type PrefixParse = fn(&mut Parser) -> Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `InfixParse` is never used [INFO] [stdout] --> src/parser_utils/parser.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | type InfixParse = fn(&mut Parser, Node) -> Result; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser_utils/parser.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct Parser { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Parser` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 13 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/parser_utils/parser.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Parser { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 26 | pub fn new(mut l: Lexer) -> Parser { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn register_parsers(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn next_token(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn parse_program(&mut self) -> Program { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | fn parse_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | fn parse_let_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | fn parse_return_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn parse_expression_statement(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | fn parse_expression(&mut self, precedence: Precedence) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn parse_identifier(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn parse_integer_literal(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | fn register_prefix(&mut self, t: TokenType, fn_ptr: PrefixParse) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | fn register_infix(&mut self, t: TokenType, fn_ptr: InfixParse) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | fn cur_token_is(&self, t: TokenType) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | fn peek_token_is(&self, t: TokenType) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn expect_peek(&mut self, t: TokenType) -> Result<(), ()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | fn peek_error(&mut self, t: TokenType) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn errors(&self) -> &Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Precedence` is never used [INFO] [stdout] --> src/parser_utils/parser.rs:204:6 [INFO] [stdout] | [INFO] [stdout] 204 | enum Precedence { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 26 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.12s [INFO] running `Command { std: "docker" "inspect" "bc5b4a3a22366993e302231cc7e1d954c9121bbbdc522ae58dcbae256ebe859b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bc5b4a3a22366993e302231cc7e1d954c9121bbbdc522ae58dcbae256ebe859b", kill_on_drop: false }` [INFO] [stdout] bc5b4a3a22366993e302231cc7e1d954c9121bbbdc522ae58dcbae256ebe859b