[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<Expr> {
[INFO] [stdout]    |                             --------- expected `Box<Expr<'_>>` 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<Expr<'_>>`, found `()`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<Expr<'_>>`
[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<Expr<'_>>` 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<Expr> {
[INFO] [stdout]    |                               --------- expected `Box<Expr<'_>>` 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<Expr<'_>>`, found `()`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<Expr<'_>>`
[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<Expr<'_>>` 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
