[INFO] cloning repository https://github.com/DarkMatter-999/Rlox [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/DarkMatter-999/Rlox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDarkMatter-999%2FRlox", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDarkMatter-999%2FRlox'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 398cc4d3749ebc215527065e5f4918943df743ac [INFO] checking DarkMatter-999/Rlox/398cc4d3749ebc215527065e5f4918943df743ac against try#4d98531622e1718ae0bc3c7a1ab9cd8938428452+rustflags=-Dtail_expr_drop_order for pr-129604 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDarkMatter-999%2FRlox" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/DarkMatter-999/Rlox on toolchain 4d98531622e1718ae0bc3c7a1ab9cd8938428452 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/DarkMatter-999/Rlox [INFO] finished tweaking git repo https://github.com/DarkMatter-999/Rlox [INFO] tweaked toml for git repo https://github.com/DarkMatter-999/Rlox written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/DarkMatter-999/Rlox 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" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: unused manifest key: dependencies.interpreter.test [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ea69efd7155a78e71817527c779fde9a1abffa311b96ae4063f1c9f2a7b23ed7 [INFO] running `Command { std: "docker" "start" "-a" "ea69efd7155a78e71817527c779fde9a1abffa311b96ae4063f1c9f2a7b23ed7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ea69efd7155a78e71817527c779fde9a1abffa311b96ae4063f1c9f2a7b23ed7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ea69efd7155a78e71817527c779fde9a1abffa311b96ae4063f1c9f2a7b23ed7", kill_on_drop: false }` [INFO] [stdout] ea69efd7155a78e71817527c779fde9a1abffa311b96ae4063f1c9f2a7b23ed7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Dtail_expr_drop_order" "-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" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6301cf2ffc80967980d1bbb4b7f2080a4a4e6cf4e2f73a3c7eb7da8a266f0e9d [INFO] running `Command { std: "docker" "start" "-a" "6301cf2ffc80967980d1bbb4b7f2080a4a4e6cf4e2f73a3c7eb7da8a266f0e9d", kill_on_drop: false }` [INFO] [stderr] warning: unused manifest key: dependencies.interpreter.test [INFO] [stderr] Checking interpreter v0.1.0 (/opt/rustwide/workdir/interpreter) [INFO] [stdout] warning: unused import: `BufReader` [INFO] [stdout] --> interpreter/src/lib.rs:3:33 [INFO] [stdout] | [INFO] [stdout] 3 | io::{self, stderr, BufRead, BufReader, Read, Write}, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser::Parser` [INFO] [stdout] --> interpreter/src/lib.rs:9:39 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::{interpreter::Interpreter, parser::Parser}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `self` [INFO] [stdout] --> interpreter/src/parser.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | expr::{self, Boxed, Expr}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LEFT_PAREN` should have an upper camel case name [INFO] [stdout] --> interpreter/src/token.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | LEFT_PAREN, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LeftParen` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RIGHT_PAREN` should have an upper camel case name [INFO] [stdout] --> interpreter/src/token.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | RIGHT_PAREN, [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] --> interpreter/src/token.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | LEFT_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] --> interpreter/src/token.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | 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] --> interpreter/src/token.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | 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] --> interpreter/src/token.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | 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] --> interpreter/src/token.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | 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] --> interpreter/src/token.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | LESS_EQUAL, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `LessEqual` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufRead` [INFO] [stdout] --> interpreter/src/lib.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | io::{self, stderr, BufRead, BufReader, Read, Write}, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/expr.rs:20:30 [INFO] [stdout] | [INFO] [stdout] 20 | fn visit_expr(&mut self, expr: &Expr) -> T { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lit` [INFO] [stdout] --> interpreter/src/expr.rs:24:46 [INFO] [stdout] | [INFO] [stdout] 24 | fn visit_literal(&mut self, expr: &Expr, lit: &Token) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inside` [INFO] [stdout] --> interpreter/src/expr.rs:28:47 [INFO] [stdout] | [INFO] [stdout] 28 | fn visit_grouping(&mut self, expr: &Expr, inside: &Expr) -> T { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_inside` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `op` [INFO] [stdout] --> interpreter/src/expr.rs:32:44 [INFO] [stdout] | [INFO] [stdout] 32 | fn visit_unary(&mut self, expr: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_op` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> interpreter/src/expr.rs:32:56 [INFO] [stdout] | [INFO] [stdout] 32 | fn visit_unary(&mut self, expr: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rhs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `op` [INFO] [stdout] --> interpreter/src/expr.rs:35:46 [INFO] [stdout] | [INFO] [stdout] 35 | fn visit_logical(&mut self, expr: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_op` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> interpreter/src/expr.rs:35:58 [INFO] [stdout] | [INFO] [stdout] 35 | fn visit_logical(&mut self, expr: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rhs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lhs` [INFO] [stdout] --> interpreter/src/expr.rs:38:45 [INFO] [stdout] | [INFO] [stdout] 38 | fn visit_binary(&mut self, expr: &Expr, lhs: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lhs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `op` [INFO] [stdout] --> interpreter/src/expr.rs:38:57 [INFO] [stdout] | [INFO] [stdout] 38 | fn visit_binary(&mut self, expr: &Expr, lhs: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_op` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> interpreter/src/expr.rs:38:69 [INFO] [stdout] | [INFO] [stdout] 38 | fn visit_binary(&mut self, expr: &Expr, lhs: &Expr, op: &Token, rhs: &Expr) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rhs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> interpreter/src/expr.rs:42:49 [INFO] [stdout] | [INFO] [stdout] 42 | fn visit_identifier(&mut self, expr: &Expr, n: &String) -> T { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n` [INFO] [stdout] --> interpreter/src/expr.rs:46:49 [INFO] [stdout] | [INFO] [stdout] 46 | fn visit_assignment(&mut self, expr: &Expr, n: &String, rhs: &Box) -> T { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rhs` [INFO] [stdout] --> interpreter/src/expr.rs:46:61 [INFO] [stdout] | [INFO] [stdout] 46 | fn visit_assignment(&mut self, expr: &Expr, n: &String, rhs: &Box) -> T { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rhs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `paren` [INFO] [stdout] --> interpreter/src/expr.rs:50:43 [INFO] [stdout] | [INFO] [stdout] 50 | fn visit_call(&mut self, expr: &Expr, paren: &Token, params: &[Expr]) -> T { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_paren` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `params` [INFO] [stdout] --> interpreter/src/expr.rs:50:58 [INFO] [stdout] | [INFO] [stdout] 50 | fn visit_call(&mut self, expr: &Expr, paren: &Token, params: &[Expr]) -> T { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `int` [INFO] [stdout] --> interpreter/src/function.rs:38:20 [INFO] [stdout] | [INFO] [stdout] 38 | fn call(&self, int: &mut Interpreter, args: &[Object]) -> ResultMSG { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_int` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/interpreter.rs:59:33 [INFO] [stdout] | [INFO] [stdout] 59 | fn visit_literal(&mut self, expr: &Expr, lit: &Token) -> ResultMSG { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/interpreter.rs:63:34 [INFO] [stdout] | [INFO] [stdout] 63 | fn visit_grouping(&mut self, expr: &Expr, inside: &Expr) -> ResultMSG { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/interpreter.rs:67:31 [INFO] [stdout] | [INFO] [stdout] 67 | fn visit_unary(&mut self, expr: &Expr, op: &Token, rhs: &Expr) -> ResultMSG { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/interpreter.rs:220:36 [INFO] [stdout] | [INFO] [stdout] 220 | fn visit_identifier(&mut self, expr: &Expr, n: &String) -> ResultMSG { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr` [INFO] [stdout] --> interpreter/src/interpreter.rs:224:36 [INFO] [stdout] | [INFO] [stdout] 224 | fn visit_assignment(&mut self, expr: &Expr, n: &String, rhs: &Box) -> ResultMSG { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_expr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> interpreter/src/parser.rs:205:13 [INFO] [stdout] | [INFO] [stdout] 204 | t => t.in_types(types.to_vec()), [INFO] [stdout] | - matches any value [INFO] [stdout] 205 | _ => false, [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> interpreter/src/lib.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | Ok(t) => {} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> interpreter/src/lib.rs:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> interpreter/src/lib.rs:57:16 [INFO] [stdout] | [INFO] [stdout] 57 | Ok(t) => {} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> interpreter/src/lib.rs:58:17 [INFO] [stdout] | [INFO] [stdout] 58 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `with_globals` is never used [INFO] [stdout] --> interpreter/src/env.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Env { [INFO] [stdout] | -------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn with_globals(env: Rc) -> Rc { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `boxed` is never used [INFO] [stdout] --> interpreter/src/error.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl Error { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] 61 | pub fn boxed(self) -> Box { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `parse` is never used [INFO] [stdout] --> interpreter/src/parser.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 20 | pub fn parse(&mut self) -> ResultMSG { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/lib.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = match File::open(path.clone()) { [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 24 | Err(e) => panic!("Could not open file {}\n{}", path, e), [INFO] [stdout] | - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 25 | Ok(file) => file, [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 34 | let mut i = Interpreter::new(false); [INFO] [stdout] | - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 35 | [INFO] [stdout] 36 | match run(&code, &mut i) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: requested on the command line with `-D tail-expr-drop-order` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> interpreter/src/lib.rs:77:17 [INFO] [stdout] | [INFO] [stdout] 77 | writeln!(&mut stderr(), "{}", e); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this warning originates in the macro `writeln` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/env.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 14 | pub fn new(parent: Option>) -> Rc { [INFO] [stdout] | ----------------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 15 | Rc::new(Env { [INFO] [stdout] | _________________^ [INFO] [stdout] 16 | | parent, [INFO] [stdout] 17 | | vals: RefCell::new(HashMap::new()), [INFO] [stdout] 18 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/env.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn with_parent(parent: Rc) -> Rc { [INFO] [stdout] | --------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 22 | Rc::new(Env { [INFO] [stdout] | _________________^ [INFO] [stdout] 23 | | vals: RefCell::new(HashMap::new()), [INFO] [stdout] 24 | | parent: Some(parent), [INFO] [stdout] 25 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/env.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 69 | let vals = self.vals.borrow(); [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 83 | Ok(vals.get(name).cloned().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/function.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn new(env: Rc, params: &[String], body: Rc) -> Rc { [INFO] [stdout] | ------------ -------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 25 | Rc::new(LoxFunction { [INFO] [stdout] | _________________^ [INFO] [stdout] 26 | | env, [INFO] [stdout] 27 | | params: params.to_vec(), [INFO] [stdout] 28 | | body, [INFO] [stdout] 29 | | }) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/function.rs:47:15 [INFO] [stdout] | [INFO] [stdout] 39 | let env = Env::with_parent(self.env.clone()); [INFO] [stdout] | --- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 47 | match Interpreter::with_env(env).interpret(self.body.borrow()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> interpreter/src/function.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | env.define(param, arg.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 44 | let _ = env.define(param, arg.clone()); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 98 | let l: Object = lhs.accept(self)?; [INFO] [stdout] | - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 99 | let r: Object = rhs.accept(self)?; [INFO] [stdout] | - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 116 | (l, r) => { [INFO] [stdout] | - - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 126 | (l, r) => { [INFO] [stdout] | - - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 139 | (l, r) => { [INFO] [stdout] | - - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 193 | Ok(ObjLit(res)) [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:217:12 [INFO] [stdout] | [INFO] [stdout] 196 | let l: Object = lhs.accept(self)?; [INFO] [stdout] | - these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 217 | Ok(Object::Literal(res)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 225 | let val = self.evaluate(rhs)?; [INFO] [stdout] | --- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 226 | self.env.assign(&n, val).map(|lit| lit.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:294:36 [INFO] [stdout] | [INFO] [stdout] 294 | init.map_or_else(|| Ok(Object::Literal(Literal::None)), |e| e.accept(self))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing [INFO] [stdout] --> interpreter/src/interpreter.rs:321:31 [INFO] [stdout] | [INFO] [stdout] 321 | else_stmt.unwrap().deref().accept(self) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `Stmt` does not implement `Deref`, so calling `deref` on `&Stmt` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 321 - else_stmt.unwrap().deref().accept(self) [INFO] [stdout] 321 + else_stmt.unwrap().accept(self) [INFO] [stdout] | [INFO] [stdout] help: if you meant to clone `Stmt`, implement `Clone` for it [INFO] [stdout] --> interpreter/src/stmt.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 + #[derive(Clone)] [INFO] [stdout] 6 | pub enum Stmt { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:344:13 [INFO] [stdout] | [INFO] [stdout] 341 | fn visit_function(&mut self, name: String, params: &[String], body: Rc) -> ResultMSG<()> { [INFO] [stdout] | -------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 344 | Object::Func(LoxFunction::new(self.env.clone(), params, body)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/interpreter.rs:350:13 [INFO] [stdout] | [INFO] [stdout] 349 | let res: Object = self.evaluate(expr)?; [INFO] [stdout] | --- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 350 | Err(Error::Return(line, res)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:147:12 [INFO] [stdout] | [INFO] [stdout] 126 | fn finish_call(&mut self, callee: Expr) -> ResultMSG { [INFO] [stdout] | ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 127 | let mut args: Vec = Vec::new(); [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 147 | Ok(Expr::Call( [INFO] [stdout] | ____________^ [INFO] [stdout] 148 | | callee.boxed(), [INFO] [stdout] 149 | | self.consume(TokenType::RIGHT_PAREN, "Expect ')' after arguments."), [INFO] [stdout] 150 | | args, [INFO] [stdout] 151 | | )) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:333:12 [INFO] [stdout] | [INFO] [stdout] 331 | let expr: Expr = self.expression()?; [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 332 | self.consume(TokenType::SEMICOLON, "Expect ';' after value."); [INFO] [stdout] 333 | Ok(Stmt::Print(expr)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:338:12 [INFO] [stdout] | [INFO] [stdout] 337 | let expr: Expr = self.expression()?; [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 338 | Ok(Stmt::Expression(expr)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:352:12 [INFO] [stdout] | [INFO] [stdout] 348 | let expr: Expr = self.expression()?; [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 352 | Ok(Stmt::Declaration(id.lexeme, Some(expr))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:364:12 [INFO] [stdout] | [INFO] [stdout] 356 | let mut stmts: Vec = Vec::new(); [INFO] [stdout] | ----- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 364 | Ok(Stmt::Block(stmts)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:374:15 [INFO] [stdout] | [INFO] [stdout] 369 | let expr: Expr = self.expression()?; [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 372 | let then_stmt: Box = self.statement()?.boxed(); [INFO] [stdout] | --------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 373 | [INFO] [stdout] 374 | match self.check_next(&[TokenType::ELSE]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:384:12 [INFO] [stdout] | [INFO] [stdout] 382 | let expr: Expr = self.expression()?; [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 383 | let body: Box = self.statement()?.boxed(); [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 384 | Ok(Stmt::While(expr, body)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> interpreter/src/parser.rs:520:12 [INFO] [stdout] | [INFO] [stdout] 507 | let expr: Expr = if self.check(TokenType::SEMICOLON) { [INFO] [stdout] | ---- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] ... [INFO] [stdout] 520 | Ok(Stmt::Return(ln, expr)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 20 previous errors; 44 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `interpreter` (lib) due to 21 previous errors; 44 warnings emitted [INFO] running `Command { std: "docker" "inspect" "6301cf2ffc80967980d1bbb4b7f2080a4a4e6cf4e2f73a3c7eb7da8a266f0e9d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6301cf2ffc80967980d1bbb4b7f2080a4a4e6cf4e2f73a3c7eb7da8a266f0e9d", kill_on_drop: false }` [INFO] [stdout] 6301cf2ffc80967980d1bbb4b7f2080a4a4e6cf4e2f73a3c7eb7da8a266f0e9d