[INFO] cloning repository https://github.com/huwenchao/monkey-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/huwenchao/monkey-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhuwenchao%2Fmonkey-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhuwenchao%2Fmonkey-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] fb77c9f547a106661e0ce99777d9d711460951f3 [INFO] checking huwenchao/monkey-rust against master#1f12b9b0fdbe735968ac002792a720f0ba4faca6 for crater-rollup-uwu [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhuwenchao%2Fmonkey-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/huwenchao/monkey-rust on toolchain 1f12b9b0fdbe735968ac002792a720f0ba4faca6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/huwenchao/monkey-rust [INFO] finished tweaking git repo https://github.com/huwenchao/monkey-rust [INFO] tweaked toml for git repo https://github.com/huwenchao/monkey-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/huwenchao/monkey-rust 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" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded proc-macro2 v1.0.20 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8ccc8c02ea3c555bc4d72f119c85e2be8775e1da055ba3bc1770f596d012a94f [INFO] running `Command { std: "docker" "start" "-a" "8ccc8c02ea3c555bc4d72f119c85e2be8775e1da055ba3bc1770f596d012a94f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8ccc8c02ea3c555bc4d72f119c85e2be8775e1da055ba3bc1770f596d012a94f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8ccc8c02ea3c555bc4d72f119c85e2be8775e1da055ba3bc1770f596d012a94f", kill_on_drop: false }` [INFO] [stdout] 8ccc8c02ea3c555bc4d72f119c85e2be8775e1da055ba3bc1770f596d012a94f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+1f12b9b0fdbe735968ac002792a720f0ba4faca6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 5ae9e0b7891a81402cd4c558d5dce0c4507e86e2999c861956a4477d13da01ca [INFO] running `Command { std: "docker" "start" "-a" "5ae9e0b7891a81402cd4c558d5dce0c4507e86e2999c861956a4477d13da01ca", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.20 [INFO] [stderr] Compiling syn v1.0.40 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Compiling thiserror-impl v1.0.20 [INFO] [stderr] Checking thiserror v1.0.20 [INFO] [stderr] Checking monkey-rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/ast.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IfExpression` [INFO] [stdout] --> src/parser.rs:2:68 [INFO] [stdout] | [INFO] [stdout] 2 | ArrayLiteral, CallExpression, Expression, ExpressionStatement, IfExpression, IndexExpression, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::token::Token` [INFO] [stdout] --> src/ast.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::token::Token; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Token` and `Type` [INFO] [stdout] --> src/ast.rs:226:24 [INFO] [stdout] | [INFO] [stdout] 226 | use crate::token::{Token, Type}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Token` and `lookup_ident` [INFO] [stdout] --> src/lexer.rs:234:24 [INFO] [stdout] | [INFO] [stdout] 234 | use crate::token::{lookup_ident, Token, Type}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IfExpression` [INFO] [stdout] --> src/parser.rs:2:68 [INFO] [stdout] | [INFO] [stdout] 2 | ArrayLiteral, CallExpression, Expression, ExpressionStatement, IfExpression, IndexExpression, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Ident` [INFO] [stdout] --> src/parser.rs:331:21 [INFO] [stdout] | [INFO] [stdout] 331 | Expression, Ident, LetStatement, PrefixExpression, ReturnStatement, Statement, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | ) -> Option ParseResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 189 | ) -> Option ParseResult>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser.rs:189:21 [INFO] [stdout] | [INFO] [stdout] 189 | ) -> Option ParseResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 189 | ) -> Option ParseResult>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser.rs:233:21 [INFO] [stdout] | [INFO] [stdout] 233 | ) -> Option ParseResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 233 | ) -> Option ParseResult>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser.rs:233:21 [INFO] [stdout] | [INFO] [stdout] 233 | ) -> Option ParseResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is an object-safe trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 233 | ) -> Option ParseResult>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/ast.rs:126:22 [INFO] [stdout] | [INFO] [stdout] 126 | Self::If(p) => todo!(), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/ast.rs:126:22 [INFO] [stdout] | [INFO] [stdout] 126 | Self::If(p) => todo!(), [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Let`, `Return`, and `Expression` are never constructed [INFO] [stdout] --> src/ast.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum Statement { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 18 | Let(LetStatement), [INFO] [stdout] | ^^^ [INFO] [stdout] 19 | Return(ReturnStatement), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 20 | Expression(ExpressionStatement), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Statement` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/ast.rs:87:5 [INFO] [stdout] | [INFO] [stdout] 86 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 87 | Prefix(PrefixExpression), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 88 | Infix(InfixExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 89 | Bool(bool), [INFO] [stdout] 90 | If(IfExpression), [INFO] [stdout] | ^^ [INFO] [stdout] 91 | Function(FunctionExpression), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 92 | Call(CallExpression), [INFO] [stdout] | ^^^^ [INFO] [stdout] 93 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 94 | Ident(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | Index(IndexExpression), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 98 | Array(ArrayLiteral), [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` 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: constant `ZERO_CHAR` is never used [INFO] [stdout] --> src/lexer.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const ZERO_CHAR: char = '\u{0}'; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `input`, `position`, `read_position`, and `ch` are never read [INFO] [stdout] --> src/lexer.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Lexer { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 7 | input: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 8 | position: usize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 9 | read_position: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 10 | ch: char, [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] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/lexer.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Lexer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 14 | pub fn new(input: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | fn read_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | fn skip_whitespace(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | fn skip_comment(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | fn peek_char(&mut self) -> char { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | fn read(&mut self, check_fn: fn(char) -> bool) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | fn read_ident(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | fn read_number(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | fn read_number_token(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | fn read_string(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn next_token(&mut self) -> Token { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_letter` is never used [INFO] [stdout] --> src/lexer.rs:223:4 [INFO] [stdout] | [INFO] [stdout] 223 | fn is_letter(ch: char) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_digit` is never used [INFO] [stdout] --> src/lexer.rs:227:4 [INFO] [stdout] | [INFO] [stdout] 227 | fn is_digit(ch: char) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `UnexpectedToken` and `NoPrefixParseFunc` are never constructed [INFO] [stdout] --> src/parser.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum ParseError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 11 | #[error("unexpected token type, expected: {expected:?}, actual: {actual:?}")] [INFO] [stdout] 12 | UnexpectedToken { expected: Type, actual: Type }, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 13 | #[error("no prefix parse function for {0:?} found")] [INFO] [stdout] 14 | NoPrefixParseFunc(Type), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `ParseResult` is never used [INFO] [stdout] --> src/parser.rs:21:10 [INFO] [stdout] | [INFO] [stdout] 21 | pub type ParseResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/parser.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum Precedence { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 26 | LOWEST = 1, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 27 | EQUALS, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 28 | LESSGREATER, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 29 | SUM, [INFO] [stdout] | ^^^ [INFO] [stdout] 30 | PRODUCT, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 31 | PREFIX, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | CALL, [INFO] [stdout] | ^^^^ [INFO] [stdout] 33 | INDEX, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Precedence` 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 `Parser` is never constructed [INFO] [stdout] --> src/parser.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct Parser { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/parser.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl Parser { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 44 | pub fn new(mut l: Lexer) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn next_token(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn parse_program(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | fn parse_statement(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn parse_return_statement(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn peek_error(&mut self, t: Type) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | fn expect_peek(&mut self, t: Type) -> ParseResult<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | fn parse_let_statement(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn cur_token_is(&self, t: Type) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn peek_precedence(&self) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn parse_expression(&mut self, precedence: Precedence) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | fn parse_ident(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | fn parse_int(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | fn parse_boolean(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | fn parse_float(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | fn prefix_parse_fns( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | fn parse_array_literal(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn parse_grouped_expression(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | fn parse_prefix_expression(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | fn infix_parse_fns( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 250 | fn parse_index_expression(&mut self, left: Expression) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn parse_expression_list(&mut self, end: Type) -> ParseResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 280 | fn parse_call_expression(&mut self, function: Expression) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | fn parse_infix_expression(&mut self, left: Expression) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | fn parse_expression_statement(&mut self) -> ParseResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `type_to_predence` is never used [INFO] [stdout] --> src/parser.rs:315:4 [INFO] [stdout] | [INFO] [stdout] 315 | fn type_to_predence(t: &Type) -> Precedence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/token.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Type { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] 3 | ILLEGAL, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 4 | EOF, [INFO] [stdout] | ^^^ [INFO] [stdout] 5 | IDENT, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 6 | INT, [INFO] [stdout] | ^^^ [INFO] [stdout] 7 | FLOAT, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 8 | STRING, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 9 | BANG, [INFO] [stdout] | ^^^^ [INFO] [stdout] 10 | ASSIGN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 11 | PLUS, [INFO] [stdout] | ^^^^ [INFO] [stdout] 12 | MINUS, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 13 | ASTARISK, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 14 | SLASH, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | LT, [INFO] [stdout] | ^^ [INFO] [stdout] 16 | GT, [INFO] [stdout] | ^^ [INFO] [stdout] 17 | EQ, [INFO] [stdout] | ^^ [INFO] [stdout] 18 | NEQ, [INFO] [stdout] | ^^^ [INFO] [stdout] 19 | COMMA, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 20 | SEMICOLON, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 21 | COLON, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 22 | LPAREN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 23 | RPAREN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 24 | LBRACE, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 25 | RBRACE, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 26 | LBRACKET, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 27 | RBRACKET, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 28 | FUNCTION, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 29 | LET, [INFO] [stdout] | ^^^ [INFO] [stdout] 30 | TRUE, [INFO] [stdout] | ^^^^ [INFO] [stdout] 31 | FALSE, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 32 | IF, [INFO] [stdout] | ^^ [INFO] [stdout] 33 | ELSE, [INFO] [stdout] | ^^^^ [INFO] [stdout] 34 | RETURN, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 35 | MACRO, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Type` 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: function `lookup_ident` is never used [INFO] [stdout] --> src/token.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn lookup_ident(s: &str) -> Type { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 20 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `If`, `Function`, and `String` are never constructed [INFO] [stdout] --> src/ast.rs:90:5 [INFO] [stdout] | [INFO] [stdout] 86 | pub enum Expression { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 90 | If(IfExpression), [INFO] [stdout] | ^^ [INFO] [stdout] 91 | Function(FunctionExpression), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 92 | Call(CallExpression), [INFO] [stdout] 93 | String(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expression` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `errors` is never read [INFO] [stdout] --> src/parser.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct Parser { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 37 | l: Lexer, [INFO] [stdout] 38 | errors: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `peek_error` is never used [INFO] [stdout] --> src/parser.rs:94:8 [INFO] [stdout] | [INFO] [stdout] 43 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | fn peek_error(&mut self, t: Type) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 11 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.39s [INFO] running `Command { std: "docker" "inspect" "5ae9e0b7891a81402cd4c558d5dce0c4507e86e2999c861956a4477d13da01ca", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5ae9e0b7891a81402cd4c558d5dce0c4507e86e2999c861956a4477d13da01ca", kill_on_drop: false }` [INFO] [stdout] 5ae9e0b7891a81402cd4c558d5dce0c4507e86e2999c861956a4477d13da01ca