[INFO] cloning repository https://github.com/yokurang/crafting-interpreters-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yokurang/crafting-interpreters-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyokurang%2Fcrafting-interpreters-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyokurang%2Fcrafting-interpreters-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0c3ca2c9286d56959ba56d4692fe89ebbdc51cde [INFO] checking yokurang/crafting-interpreters-rs against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyokurang%2Fcrafting-interpreters-rs" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/yokurang/crafting-interpreters-rs [INFO] finished tweaking git repo https://github.com/yokurang/crafting-interpreters-rs [INFO] tweaked toml for git repo https://github.com/yokurang/crafting-interpreters-rs written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/yokurang/crafting-interpreters-rs on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/yokurang/crafting-interpreters-rs 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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f0c7f439a6e0e714751ae588554c30005c239a321adaf1aaed97fc03b0333a5d [INFO] running `Command { std: "docker" "start" "-a" "f0c7f439a6e0e714751ae588554c30005c239a321adaf1aaed97fc03b0333a5d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f0c7f439a6e0e714751ae588554c30005c239a321adaf1aaed97fc03b0333a5d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f0c7f439a6e0e714751ae588554c30005c239a321adaf1aaed97fc03b0333a5d", kill_on_drop: false }` [INFO] [stdout] f0c7f439a6e0e714751ae588554c30005c239a321adaf1aaed97fc03b0333a5d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dunmustuse_in_always_ok" "-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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8414862a6a408d5b89e8cbafb6eacc25c067b3dc07fdde60445b6ba47396d017 [INFO] running `Command { std: "docker" "start" "-a" "8414862a6a408d5b89e8cbafb6eacc25c067b3dc07fdde60445b6ba47396d017", kill_on_drop: false }` [INFO] [stderr] Checking encoding_rs_io v0.1.7 [INFO] [stderr] Checking crafting-interpreters v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `log::error` [INFO] [stdout] --> src/parser/parser.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use log::error; [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 imports: `Dot`, `Identifier`, `Less`, and `RightParen` [INFO] [stdout] --> src/parser/parser.rs:5:24 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::TokenType::{Dot, Identifier, LeftParen, Less, RightParen}; [INFO] [stdout] | ^^^ ^^^^^^^^^^ ^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/parser/parser.rs:467:15 [INFO] [stdout] | [INFO] [stdout] 467 | while (self.check(&TokenType::RightBrace) && !self.is_at_end()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 467 - while (self.check(&TokenType::RightBrace) && !self.is_at_end()) { [INFO] [stdout] 467 + while self.check(&TokenType::RightBrace) && !self.is_at_end() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Token` and `Value` [INFO] [stdout] --> src/utils/utils.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{RuntimeError, Token, Value}; [INFO] [stdout] | ^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Interpreter` [INFO] [stdout] --> src/evaluator/evaluator.rs:14:26 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::{Environment, Interpreter, LoxFunction, LoxInstance, Stmt, StmtVisitor, Token}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Stmt` [INFO] [stdout] --> src/environment/environment.rs:2:36 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{Literal, RuntimeError, Stmt, TokenType, Value}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser` [INFO] [stdout] --> src/resolver/resolver.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::parser::{parser, Expr, ParseError, Visitor}; // Importing the Expr and Stmt enums [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::FunctionType::Initializer` [INFO] [stdout] --> src/resolver/resolver.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | use crate::FunctionType::Initializer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Environment` and `Stmt` [INFO] [stdout] --> src/class/class.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::{Environment, Evaluator, LoxCallable, LoxFunction, RuntimeError, Stmt, Token, Value}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `log::error` [INFO] [stdout] --> src/parser/parser.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use log::error; [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 imports: `Dot`, `Identifier`, `Less`, and `RightParen` [INFO] [stdout] --> src/parser/parser.rs:5:24 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::TokenType::{Dot, Identifier, LeftParen, Less, RightParen}; [INFO] [stdout] | ^^^ ^^^^^^^^^^ ^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/parser/parser.rs:467:15 [INFO] [stdout] | [INFO] [stdout] 467 | while (self.check(&TokenType::RightBrace) && !self.is_at_end()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 467 - while (self.check(&TokenType::RightBrace) && !self.is_at_end()) { [INFO] [stdout] 467 + while self.check(&TokenType::RightBrace) && !self.is_at_end() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Token` and `Value` [INFO] [stdout] --> src/utils/utils.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::{RuntimeError, Token, Value}; [INFO] [stdout] | ^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Interpreter` [INFO] [stdout] --> src/evaluator/evaluator.rs:14:26 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::{Environment, Interpreter, LoxFunction, LoxInstance, Stmt, StmtVisitor, Token}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Stmt` [INFO] [stdout] --> src/environment/environment.rs:2:36 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::{Literal, RuntimeError, Stmt, TokenType, Value}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser` [INFO] [stdout] --> src/resolver/resolver.rs:2:21 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::parser::{parser, Expr, ParseError, Visitor}; // Importing the Expr and Stmt enums [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::FunctionType::Initializer` [INFO] [stdout] --> src/resolver/resolver.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | use crate::FunctionType::Initializer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Environment` and `Stmt` [INFO] [stdout] --> src/class/class.rs:3:13 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::{Environment, Evaluator, LoxCallable, LoxFunction, RuntimeError, Stmt, Token, Value}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | Err(error) => self.synchronize(), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [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` [INFO] [stdout] --> src/parser/parser.rs:180:21 [INFO] [stdout] | [INFO] [stdout] 180 | Err(error) => panic!("Error in processing a variable declaration.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | Err(error) => panic!("Error in processing a function.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:190:21 [INFO] [stdout] | [INFO] [stdout] 190 | Err(error) => panic!("Error in processing a Class.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `equals` [INFO] [stdout] --> src/parser/parser.rs:509:17 [INFO] [stdout] | [INFO] [stdout] 509 | let equals = self.previous().clone(); // keep for error reporting [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_equals` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `params` [INFO] [stdout] --> src/evaluator/evaluator.rs:641:46 [INFO] [stdout] | [INFO] [stdout] 641 | if let Ok(Stmt::Function { name, params, body }) = method { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `params: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/evaluator/evaluator.rs:641:54 [INFO] [stdout] | [INFO] [stdout] 641 | if let Ok(Stmt::Function { name, params, body }) = method { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/evaluator/evaluator.rs:651:25 [INFO] [stdout] | [INFO] [stdout] 651 | Err(e) => {} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | name: &Token, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `declaration` [INFO] [stdout] --> src/resolver/resolver.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | declaration: FunctionType, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_declaration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `enclosing_class` [INFO] [stdout] --> src/resolver/resolver.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | let enclosing_class = &self.current_class; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enclosing_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `superclass` [INFO] [stdout] --> src/resolver/resolver.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | if let Some(superclass) = superclass { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superclass` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:412:49 [INFO] [stdout] | [INFO] [stdout] 412 | fn visit_get_expr(&mut self, object: &Expr, name: &Token) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:418:49 [INFO] [stdout] | [INFO] [stdout] 418 | fn visit_set_expr(&mut self, object: &Expr, name: &Token, value: &Expr) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `method` [INFO] [stdout] --> src/resolver/resolver.rs:434:53 [INFO] [stdout] | [INFO] [stdout] 434 | fn visit_super_expr(&mut self, keyword: &Token, method: &Token) -> Result { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `stmt::StmtVisitor::visit_class_stmt` [INFO] [stdout] --> src/parser/stmt.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | fn visit_class_stmt(&mut self, name: &Token, methods: &Vec>, superclass: &Option>) -> R; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `stmt::StmtVisitor::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `stmt::Stmt::Class::methods` [INFO] [stdout] --> src/parser/stmt.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | methods: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `stmt::Stmt::Class::methods` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `>>::visit_class_stmt` [INFO] [stdout] --> src/evaluator/evaluator.rs:596:5 [INFO] [stdout] | [INFO] [stdout] 596 | / fn visit_class_stmt( [INFO] [stdout] 597 | | &mut self, [INFO] [stdout] 598 | | name: &Token, [INFO] [stdout] 599 | | methods: &Vec>, [INFO] [stdout] 600 | | superclass: &Option>, [INFO] [stdout] 601 | | ) -> Result<(), RuntimeError> { [INFO] [stdout] | |_________________________________^ method `>>::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item ` as stmt::StmtVisitor>>::visit_class_stmt` [INFO] [stdout] --> src/resolver/resolver.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | / fn visit_class_stmt( [INFO] [stdout] 263 | | &mut self, [INFO] [stdout] 264 | | name: &Token, [INFO] [stdout] 265 | | methods: &Vec>, [INFO] [stdout] 266 | | superclass: &Option> [INFO] [stdout] 267 | | ) -> Result<(), RuntimeError> { [INFO] [stdout] | |_________________________________^ method ` as stmt::StmtVisitor>>::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `assignment` is never used [INFO] [stdout] --> src/parser/parser.rs:503:8 [INFO] [stdout] | [INFO] [stdout] 126 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 503 | fn assignment(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> src/utils/utils.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn main() -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:132:17 [INFO] [stdout] | [INFO] [stdout] 132 | "Unknown unary operator.".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: requested on the command line with `-D unmustuse-in-always-ok` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:211:25 [INFO] [stdout] | [INFO] [stdout] 211 | "Operands must be two numbers or string".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:780:17 [INFO] [stdout] | [INFO] [stdout] 780 | "Operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:798:21 [INFO] [stdout] | [INFO] [stdout] 798 | "Right operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:803:17 [INFO] [stdout] | [INFO] [stdout] 803 | "Left operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/class/class.rs:52:65 [INFO] [stdout] | [INFO] [stdout] 52 | let initializer: Option = self.find_method("init".parse().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/class/class.rs:81:53 [INFO] [stdout] | [INFO] [stdout] 81 | if let Some(init_method) = self.find_method("init".parse().unwrap()) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `crafting-interpreters` (lib) due to 7 previous errors; 30 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | Err(error) => self.synchronize(), [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [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` [INFO] [stdout] --> src/parser/parser.rs:180:21 [INFO] [stdout] | [INFO] [stdout] 180 | Err(error) => panic!("Error in processing a variable declaration.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:185:21 [INFO] [stdout] | [INFO] [stdout] 185 | Err(error) => panic!("Error in processing a function.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error` [INFO] [stdout] --> src/parser/parser.rs:190:21 [INFO] [stdout] | [INFO] [stdout] 190 | Err(error) => panic!("Error in processing a Class.") [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `equals` [INFO] [stdout] --> src/parser/parser.rs:509:17 [INFO] [stdout] | [INFO] [stdout] 509 | let equals = self.previous().clone(); // keep for error reporting [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_equals` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `params` [INFO] [stdout] --> src/evaluator/evaluator.rs:641:46 [INFO] [stdout] | [INFO] [stdout] 641 | if let Ok(Stmt::Function { name, params, body }) = method { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `params: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `body` [INFO] [stdout] --> src/evaluator/evaluator.rs:641:54 [INFO] [stdout] | [INFO] [stdout] 641 | if let Ok(Stmt::Function { name, params, body }) = method { [INFO] [stdout] | ^^^^ help: try ignoring the field: `body: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/evaluator/evaluator.rs:651:25 [INFO] [stdout] | [INFO] [stdout] 651 | Err(e) => {} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | name: &Token, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `declaration` [INFO] [stdout] --> src/resolver/resolver.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | declaration: FunctionType, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_declaration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `enclosing_class` [INFO] [stdout] --> src/resolver/resolver.rs:271:13 [INFO] [stdout] | [INFO] [stdout] 271 | let enclosing_class = &self.current_class; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enclosing_class` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `superclass` [INFO] [stdout] --> src/resolver/resolver.rs:296:21 [INFO] [stdout] | [INFO] [stdout] 296 | if let Some(superclass) = superclass { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superclass` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:412:49 [INFO] [stdout] | [INFO] [stdout] 412 | fn visit_get_expr(&mut self, object: &Expr, name: &Token) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/resolver/resolver.rs:418:49 [INFO] [stdout] | [INFO] [stdout] 418 | fn visit_set_expr(&mut self, object: &Expr, name: &Token, value: &Expr) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `method` [INFO] [stdout] --> src/resolver/resolver.rs:434:53 [INFO] [stdout] | [INFO] [stdout] 434 | fn visit_super_expr(&mut self, keyword: &Token, method: &Token) -> Result { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `stmt::StmtVisitor::visit_class_stmt` [INFO] [stdout] --> src/parser/stmt.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | fn visit_class_stmt(&mut self, name: &Token, methods: &Vec>, superclass: &Option>) -> R; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `stmt::StmtVisitor::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `stmt::Stmt::Class::methods` [INFO] [stdout] --> src/parser/stmt.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | methods: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `stmt::Stmt::Class::methods` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item `>>::visit_class_stmt` [INFO] [stdout] --> src/evaluator/evaluator.rs:596:5 [INFO] [stdout] | [INFO] [stdout] 596 | / fn visit_class_stmt( [INFO] [stdout] 597 | | &mut self, [INFO] [stdout] 598 | | name: &Token, [INFO] [stdout] 599 | | methods: &Vec>, [INFO] [stdout] 600 | | superclass: &Option>, [INFO] [stdout] 601 | | ) -> Result<(), RuntimeError> { [INFO] [stdout] | |_________________________________^ method `>>::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `parser::parser::ParseError` is more private than the item ` as stmt::StmtVisitor>>::visit_class_stmt` [INFO] [stdout] --> src/resolver/resolver.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | / fn visit_class_stmt( [INFO] [stdout] 263 | | &mut self, [INFO] [stdout] 264 | | name: &Token, [INFO] [stdout] 265 | | methods: &Vec>, [INFO] [stdout] 266 | | superclass: &Option> [INFO] [stdout] 267 | | ) -> Result<(), RuntimeError> { [INFO] [stdout] | |_________________________________^ method ` as stmt::StmtVisitor>>::visit_class_stmt` is reachable at visibility `pub` [INFO] [stdout] | [INFO] [stdout] note: but type `parser::parser::ParseError` is only usable at visibility `pub(crate)` [INFO] [stdout] --> src/parser/parser.rs:111:1 [INFO] [stdout] | [INFO] [stdout] 111 | pub(crate) struct ParseError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `assignment` is never used [INFO] [stdout] --> src/parser/parser.rs:503:8 [INFO] [stdout] | [INFO] [stdout] 126 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 503 | fn assignment(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> src/utils/utils.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn main() -> Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:132:17 [INFO] [stdout] | [INFO] [stdout] 132 | "Unknown unary operator.".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: requested on the command line with `-D unmustuse-in-always-ok` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:211:25 [INFO] [stdout] | [INFO] [stdout] 211 | "Operands must be two numbers or string".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:780:17 [INFO] [stdout] | [INFO] [stdout] 780 | "Operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:798:21 [INFO] [stdout] | [INFO] [stdout] 798 | "Right operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/evaluator/evaluator.rs:803:17 [INFO] [stdout] | [INFO] [stdout] 803 | "Left operand must be a number".parse().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/class/class.rs:52:65 [INFO] [stdout] | [INFO] [stdout] 52 | let initializer: Option = self.find_method("init".parse().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: this type will no longer be must used: Result [INFO] [stdout] --> src/class/class.rs:81:53 [INFO] [stdout] | [INFO] [stdout] 81 | if let Some(init_method) = self.find_method("init".parse().unwrap()) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `crafting-interpreters` (lib test) due to 7 previous errors; 30 warnings emitted [INFO] running `Command { std: "docker" "inspect" "8414862a6a408d5b89e8cbafb6eacc25c067b3dc07fdde60445b6ba47396d017", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8414862a6a408d5b89e8cbafb6eacc25c067b3dc07fdde60445b6ba47396d017", kill_on_drop: false }` [INFO] [stdout] 8414862a6a408d5b89e8cbafb6eacc25c067b3dc07fdde60445b6ba47396d017