[INFO] cloning repository https://github.com/mFragaBA/rlox-interpreter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mFragaBA/rlox-interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FmFragaBA%2Frlox-interpreter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FmFragaBA%2Frlox-interpreter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3ce83d65f88e78f6ec042e44153c1a8864397592 [INFO] testing mFragaBA/rlox-interpreter against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FmFragaBA%2Frlox-interpreter" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/mFragaBA/rlox-interpreter [INFO] finished tweaking git repo https://github.com/mFragaBA/rlox-interpreter [INFO] tweaked toml for git repo https://github.com/mFragaBA/rlox-interpreter written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/mFragaBA/rlox-interpreter on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/mFragaBA/rlox-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" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f3e620ffb7c980288c1e6532b6a7ccdcc473743037ebd0ec502572c3e61f2f81 [INFO] running `Command { std: "docker" "start" "-a" "f3e620ffb7c980288c1e6532b6a7ccdcc473743037ebd0ec502572c3e61f2f81", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f3e620ffb7c980288c1e6532b6a7ccdcc473743037ebd0ec502572c3e61f2f81", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f3e620ffb7c980288c1e6532b6a7ccdcc473743037ebd0ec502572c3e61f2f81", kill_on_drop: false }` [INFO] [stdout] f3e620ffb7c980288c1e6532b6a7ccdcc473743037ebd0ec502572c3e61f2f81 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 428e5e23d7e0652771baf39036e5fd205462b3e8a40584149d91b4d95da8242b [INFO] running `Command { std: "docker" "start" "-a" "428e5e23d7e0652771baf39036e5fd205462b3e8a40584149d91b4d95da8242b", kill_on_drop: false }` [INFO] [stderr] Compiling rlox v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/parser.rs:4:18 [INFO] [stdout] | [INFO] [stdout] 4 | tokens: &'a [Token], [INFO] [stdout] | ^^^^^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: consider using the `'a` lifetime [INFO] [stdout] | [INFO] [stdout] 4 | tokens: &'a [Token<'a>], [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0425]: cannot find value `operator` in this scope [INFO] [stdout] --> src/parser.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | Box::new(Expr::Unary(operator, right)) [INFO] [stdout] | ^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0424]: expected value, found module `self` [INFO] [stdout] --> src/parser.rs:109:16 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | --------- this function doesn't have a `self` parameter [INFO] [stdout] 108 | for ttype in types { [INFO] [stdout] 109 | if self.check(ttype) { [INFO] [stdout] | ^^^^ `self` value is a keyword only available in methods with a `self` parameter [INFO] [stdout] | [INFO] [stdout] help: add a `self` receiver parameter to make the associated `fn` a method [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(&self, types: &[TokenType]) -> bool { [INFO] [stdout] | ++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0424]: expected value, found module `self` [INFO] [stdout] --> src/parser.rs:110:17 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | --------- this function doesn't have a `self` parameter [INFO] [stdout] ... [INFO] [stdout] 110 | self.advance(); [INFO] [stdout] | ^^^^ `self` value is a keyword only available in methods with a `self` parameter [INFO] [stdout] | [INFO] [stdout] help: add a `self` receiver parameter to make the associated `fn` a method [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(&self, types: &[TokenType]) -> bool { [INFO] [stdout] | ++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, RIGHT_PAREN, LEFT_BRACE, RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftParen` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_PAREN` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, RIGHT_PAREN, LEFT_BRACE, RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightParen` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:4:30 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, RIGHT_PAREN, LEFT_BRACE, RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_BRACE` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:4:42 [INFO] [stdout] | [INFO] [stdout] 4 | LEFT_PAREN, RIGHT_PAREN, LEFT_BRACE, RIGHT_BRACE, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `RightBrace` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `BANG_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | BANG, BANG_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `BangEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `EQUAL_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | EQUAL, EQUAL_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EqualEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `GREATER_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:10:14 [INFO] [stdout] | [INFO] [stdout] 10 | GREATER, GREATER_EQUAL, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `GreaterEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LESS_EQUAL` should have an upper camel case name [INFO] [stdout] --> src/token_type.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | LESS, LESS_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LessEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::iter::Peekable` [INFO] [stdout] --> src/scanner.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::iter::Peekable; [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: `LoxResult` [INFO] [stdout] --> src/scanner.rs:4:24 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::{TokenType, LoxResult, errors, keywords}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:20:20 [INFO] [stdout] | [INFO] [stdout] 20 | while self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 20 ~ while Parser::<'a>::match_any([ [INFO] [stdout] 21 + TokenType::BANG_EQUAL, [INFO] [stdout] 22 + TokenType::EQUAL_EQUAL [INFO] [stdout] 23 ~ ]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:35:20 [INFO] [stdout] | [INFO] [stdout] 35 | while self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 35 ~ while Parser::<'a>::match_any([ [INFO] [stdout] 36 + TokenType::GREATER, [INFO] [stdout] 37 + TokenType::GREATER_EQUAL, [INFO] [stdout] 38 + TokenType::LESS, [INFO] [stdout] 39 + TokenType::LESS_EQUAL [INFO] [stdout] 40 ~ ]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:52:20 [INFO] [stdout] | [INFO] [stdout] 52 | while self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 52 ~ while Parser::<'a>::match_any([ [INFO] [stdout] 53 + TokenType::MINUS, [INFO] [stdout] 54 + TokenType::PLUS [INFO] [stdout] 55 ~ ]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/parser.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 49 | fn term(&mut self) -> Box { [INFO] [stdout] | --------- expected `Box>` because of return type [INFO] [stdout] ... [INFO] [stdout] 52 | / while self.match_any([ [INFO] [stdout] 53 | | TokenType::MINUS, [INFO] [stdout] 54 | | TokenType::PLUS [INFO] [stdout] 55 | | ]) { [INFO] [stdout] ... | [INFO] [stdout] 58 | | expr = Box::new(Expr::Binary(expr, operator, right)) [INFO] [stdout] 59 | | } [INFO] [stdout] | |_________^ expected `Box>`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box>` [INFO] [stdout] found unit type `()` [INFO] [stdout] = note: `while` loops evaluate to unit type `()` [INFO] [stdout] help: consider returning a value here [INFO] [stdout] | [INFO] [stdout] 59 ~ } [INFO] [stdout] 60 + /* `Box>` value */ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:65:20 [INFO] [stdout] | [INFO] [stdout] 65 | while self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 65 ~ while Parser::<'a>::match_any([ [INFO] [stdout] 66 + TokenType::SLASH, [INFO] [stdout] 67 + TokenType::STAR [INFO] [stdout] 68 ~ ]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/parser.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 62 | fn factor(&mut self) -> Box { [INFO] [stdout] | --------- expected `Box>` because of return type [INFO] [stdout] ... [INFO] [stdout] 65 | / while self.match_any([ [INFO] [stdout] 66 | | TokenType::SLASH, [INFO] [stdout] 67 | | TokenType::STAR [INFO] [stdout] 68 | | ]) { [INFO] [stdout] ... | [INFO] [stdout] 71 | | expr = Box::new(Expr::Binary(expr, operator, right)) [INFO] [stdout] 72 | | } [INFO] [stdout] | |_________^ expected `Box>`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: expected struct `Box>` [INFO] [stdout] found unit type `()` [INFO] [stdout] = note: `while` loops evaluate to unit type `()` [INFO] [stdout] help: consider returning a value here [INFO] [stdout] | [INFO] [stdout] 72 ~ } [INFO] [stdout] 73 + /* `Box>` value */ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:76:18 [INFO] [stdout] | [INFO] [stdout] 76 | if !self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 76 ~ if !Parser::<'a>::match_any([ [INFO] [stdout] 77 + TokenType::MINUS, [INFO] [stdout] 78 + TokenType::BANG [INFO] [stdout] 79 ~ ]) { return self.primary(); } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:87:17 [INFO] [stdout] | [INFO] [stdout] 87 | if self.match_any([TokenType::FALSE]) { return Box::new(Expr::Literal(String::from("false"))); } [INFO] [stdout] | -----^^^^^^^^^-------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Parser::<'a>::match_any([TokenType::FALSE])` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | if self.match_any([TokenType::TRUE]) { return Box::new(Expr::Literal(String::from("true"))); } [INFO] [stdout] | -----^^^^^^^^^------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Parser::<'a>::match_any([TokenType::TRUE])` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:89:17 [INFO] [stdout] | [INFO] [stdout] 89 | if self.match_any([TokenType::NIL]) { return Box::new(Expr::Literal(String::from("null"))); } [INFO] [stdout] | -----^^^^^^^^^------------------ [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Parser::<'a>::match_any([TokenType::NIL])` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | if self.match_any([ [INFO] [stdout] | -----^^^^^^^^^ this is an associated function, not a method [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: use associated function syntax instead [INFO] [stdout] | [INFO] [stdout] 91 ~ if Parser::<'a>::match_any([ [INFO] [stdout] 92 + TokenType::NUMBER, [INFO] [stdout] 93 + TokenType::STRING [INFO] [stdout] 94 ~ ]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0615]: attempted to take value of method `previous` on type `&mut Parser<'a>` [INFO] [stdout] --> src/parser.rs:95:48 [INFO] [stdout] | [INFO] [stdout] 95 | return Box::new(Expr::Literal(self.previous.literal())) [INFO] [stdout] | ^^^^^^^^ method, not a field [INFO] [stdout] | [INFO] [stdout] help: use parentheses to call the method [INFO] [stdout] | [INFO] [stdout] 95 | return Box::new(Expr::Literal(self.previous().literal())) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `match_any` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:98:17 [INFO] [stdout] | [INFO] [stdout] 98 | if self.match_any([TokenType::LEFT_PAREN]) { [INFO] [stdout] | -----^^^^^^^^^------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Parser::<'a>::match_any([TokenType::LEFT_PAREN])` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | fn match_any(types: &[TokenType]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `consume` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:100:18 [INFO] [stdout] | [INFO] [stdout] 100 | self.consume(TokenType::RIGHT_PAREN, "Expect '(' after expression,"); [INFO] [stdout] | -----^^^^^^^-------------------------------------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Parser::<'a>::consume(TokenType::RIGHT_PAREN, "Expect '(' after expression,")` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Parser<'a>` [INFO] [stdout] --> src/parser.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 119 | fn consume(expected_type: TokenType, error_msg: &str) { } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] = note: the following trait defines an item `consume`, perhaps you need to implement it: [INFO] [stdout] candidate #1: `BufRead` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `ttype` on type `token::Token<'_>` [INFO] [stdout] --> src/parser.rs:122:42 [INFO] [stdout] | [INFO] [stdout] 122 | !self.is_at_end() && self.peek().ttype == ttype [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `kind`, `lexeme`, `literal`, `line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `isAtEnd` found for mutable reference `&mut Parser<'a>` in the current scope [INFO] [stdout] --> src/parser.rs:126:18 [INFO] [stdout] | [INFO] [stdout] 126 | if !self.isAtEnd() { self.current += 1; } [INFO] [stdout] | ^^^^^^^ method not found in `&mut Parser<'a>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `ttype` on type `token::Token<'_>` [INFO] [stdout] --> src/parser.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | self.peek().ttype == TokenType::EOF [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] = note: available fields are: `kind`, `lexeme`, `literal`, `line` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_type` [INFO] [stdout] --> src/parser.rs:119:16 [INFO] [stdout] | [INFO] [stdout] 119 | fn consume(expected_type: TokenType, error_msg: &str) { } [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_type` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error_msg` [INFO] [stdout] --> src/parser.rs:119:42 [INFO] [stdout] | [INFO] [stdout] 119 | fn consume(expected_type: TokenType, error_msg: &str) { } [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_msg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0106, E0308, E0424, E0425, E0599, E0609, E0615. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0106`. [INFO] [stdout] [INFO] [stderr] error: could not compile `rlox` (bin "rlox") due to 21 previous errors; 12 warnings emitted [INFO] running `Command { std: "docker" "inspect" "428e5e23d7e0652771baf39036e5fd205462b3e8a40584149d91b4d95da8242b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "428e5e23d7e0652771baf39036e5fd205462b3e8a40584149d91b4d95da8242b", kill_on_drop: false }` [INFO] [stdout] 428e5e23d7e0652771baf39036e5fd205462b3e8a40584149d91b4d95da8242b