[INFO] cloning repository https://github.com/mrizaln/crafting-interpreters
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mrizaln/crafting-interpreters" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmrizaln%2Fcrafting-interpreters", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmrizaln%2Fcrafting-interpreters'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2b992734c7e423801fc773d6f068b332aab80a52
[INFO] checking mrizaln/crafting-interpreters against try#95813608313bff49cfc1afc393a946a3c085b772 for pr-148946
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmrizaln%2Fcrafting-interpreters" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mrizaln/crafting-interpreters
[INFO] finished tweaking git repo https://github.com/mrizaln/crafting-interpreters
[INFO] tweaked toml for git repo https://github.com/mrizaln/crafting-interpreters written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mrizaln/crafting-interpreters on toolchain 95813608313bff49cfc1afc393a946a3c085b772
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mrizaln/crafting-interpreters 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" "+95813608313bff49cfc1afc393a946a3c085b772" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded coredump v0.1.2
[INFO] [stderr]   Downloaded lasso v0.7.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ec38e0daf506e200bba5ee4eb60bf05c63f3a17d8f599b3910346286f2675f2a
[INFO] running `Command { std: "docker" "start" "-a" "ec38e0daf506e200bba5ee4eb60bf05c63f3a17d8f599b3910346286f2675f2a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ec38e0daf506e200bba5ee4eb60bf05c63f3a17d8f599b3910346286f2675f2a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ec38e0daf506e200bba5ee4eb60bf05c63f3a17d8f599b3910346286f2675f2a", kill_on_drop: false }`
[INFO] [stdout] ec38e0daf506e200bba5ee4eb60bf05c63f3a17d8f599b3910346286f2675f2a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "-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" "+95813608313bff49cfc1afc393a946a3c085b772" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 608236cc1babeaca8c597cf03be4fbfe2d35210910ccfb014007ba8e309b1b73
[INFO] running `Command { std: "docker" "start" "-a" "608236cc1babeaca8c597cf03be4fbfe2d35210910ccfb014007ba8e309b1b73", kill_on_drop: false }`
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]    Compiling clap_derive v4.5.41
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking coredump v0.1.2
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking diff v0.1.13
[INFO] [stderr]     Checking yansi v1.0.1
[INFO] [stderr]     Checking clap_builder v4.5.41
[INFO] [stderr]     Checking boolinator v2.4.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking pretty_assertions v1.4.1
[INFO] [stderr]     Checking lasso v0.7.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking clap v4.5.41
[INFO] [stderr]     Checking loxi v0.1.0 (/opt/rustwide/workdir/loxi)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> loxi/src/parse/mod.rs:131:21
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn new(ast: &mut Ast, mode: Mode) -> Parser {
[INFO] [stdout]     |                     ^^^^^^^^                 ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn new(ast: &mut Ast, mode: Mode) -> Parser<'_> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> loxi/src/resolve/scope.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn iter(&self) -> std::collections::hash_set::Iter<(Key, Loc)> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn iter(&self) -> std::collections::hash_set::Iter<'_, (Key, Loc)> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> loxi/src/resolve/scope.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub fn iter(&self) -> std::collections::hash_set::Iter<(Key, Loc)> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub fn iter(&self) -> std::collections::hash_set::Iter<'_, (Key, Loc)> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> loxi/src/interp/function.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[derive(Clone, Debug, PartialEq, PartialOrd)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub body: NativeFn,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> loxi/src/interp/function.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[derive(Clone, Debug, PartialEq, PartialOrd)]
[INFO] [stdout]    |                                   ---------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub body: NativeFn,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking loxii v0.1.0 (/opt/rustwide/workdir/loxii)
[INFO] [stdout] warning: unused imports: `InstrAddr` and `JumpOp`
[INFO] [stdout]   --> loxii/src/compiler.rs:16:50
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BinOp, Bytecode, BytecodeBuilder, ConstKind, InstrAddr, JumpDest, JumpKind, JumpOp, LoadOp,
[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: `std::cmp::Ordering`
[INFO] [stdout]  --> loxii/src/memory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `loxi::util::*`
[INFO] [stdout]  --> loxii/src/util.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub use loxi::util::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `InstrAddr` and `JumpOp`
[INFO] [stdout]   --> loxii/src/compiler.rs:16:50
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BinOp, Bytecode, BytecodeBuilder, ConstKind, InstrAddr, JumpDest, JumpKind, JumpOp, LoadOp,
[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: `std::cmp::Ordering`
[INFO] [stdout]  --> loxii/src/memory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::Ordering;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `loxi::util::*`
[INFO] [stdout]  --> loxii/src/util.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub use loxi::util::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> loxi/src/parse/mod.rs:131:21
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn new(ast: &mut Ast, mode: Mode) -> Parser {
[INFO] [stdout]     |                     ^^^^^^^^                 ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub fn new(ast: &mut Ast, mode: Mode) -> Parser<'_> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> loxi/src/resolve/scope.rs:67:17
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn iter(&self) -> std::collections::hash_set::Iter<(Key, Loc)> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn iter(&self) -> std::collections::hash_set::Iter<'_, (Key, Loc)> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> loxi/src/resolve/scope.rs:77:17
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub fn iter(&self) -> std::collections::hash_set::Iter<(Key, Loc)> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub fn iter(&self) -> std::collections::hash_set::Iter<'_, (Key, Loc)> {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> loxi/src/interp/function.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[derive(Clone, Debug, PartialEq, PartialOrd)]
[INFO] [stdout]    |                        --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub body: NativeFn,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> loxi/src/interp/function.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[derive(Clone, Debug, PartialEq, PartialOrd)]
[INFO] [stdout]    |                                   ---------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub body: NativeFn,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:116:52
[INFO] [stdout]     |
[INFO] [stdout] 116 |     fn compile_val_expr(&mut self, expr: &ValExpr, loc: &Loc) -> Result<(), CompileError> {
[INFO] [stdout]     |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `callee`
[INFO] [stdout]    --> loxii/src/compiler.rs:187:29
[INFO] [stdout]     |
[INFO] [stdout] 187 |             ValExpr::Call { callee, args } => todo!(),
[INFO] [stdout]     |                             ^^^^^^ help: try ignoring the field: `callee: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> loxii/src/compiler.rs:187:37
[INFO] [stdout]     |
[INFO] [stdout] 187 |             ValExpr::Call { callee, args } => todo!(),
[INFO] [stdout]     |                                     ^^^^ help: try ignoring the field: `args: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object`
[INFO] [stdout]    --> loxii/src/compiler.rs:206:28
[INFO] [stdout]     |
[INFO] [stdout] 206 |             RefExpr::Get { object, prop } => todo!(),
[INFO] [stdout]     |                            ^^^^^^ help: try ignoring the field: `object: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:206:36
[INFO] [stdout]     |
[INFO] [stdout] 206 |             RefExpr::Get { object, prop } => todo!(),
[INFO] [stdout]     |                                    ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object`
[INFO] [stdout]    --> loxii/src/compiler.rs:208:17
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 object,
[INFO] [stdout]     |                 ^^^^^^ help: try ignoring the field: `object: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |                 prop,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> loxii/src/compiler.rs:210:17
[INFO] [stdout]     |
[INFO] [stdout] 210 |                 value,
[INFO] [stdout]     |                 ^^^^^ help: try ignoring the field: `value: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:212:30
[INFO] [stdout]     |
[INFO] [stdout] 212 |             RefExpr::Super { prop } => todo!(),
[INFO] [stdout]     |                              ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         loc: &Loc,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:326:59
[INFO] [stdout]     |
[INFO] [stdout] 326 |     fn compile_function(&mut self, func: &StmtFunctionId, loc: &Loc) -> Result<(), CompileError> {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]    --> loxii/src/compiler.rs:327:29
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let StmtFunctionL { func, loc } = self.ast.get_func(func);
[INFO] [stdout]     |                             ^^^^ help: try ignoring the field: `func: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:327:35
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let StmtFunctionL { func, loc } = self.ast.get_func(func);
[INFO] [stdout]     |                                   ^^^ help: try ignoring the field: `loc: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> loxii/src/compiler.rs:331:34
[INFO] [stdout]     |
[INFO] [stdout] 331 |     fn compile_return(&mut self, value: &Option<ExprId>) -> Result<(), CompileError> {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> loxii/src/compiler.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 |         name: &Key,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> loxii/src/compiler.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         base: &Option<ExprId>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `methods`
[INFO] [stdout]    --> loxii/src/compiler.rs:339:9
[INFO] [stdout]     |
[INFO] [stdout] 339 |         methods: &[StmtFunctionId],
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_methods`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]    --> loxii/src/compiler.rs:345:33
[INFO] [stdout]     |
[INFO] [stdout] 345 |     fn compile_debug(&mut self, expr: &ExprId) -> Result<(), CompileError> {
[INFO] [stdout]     |                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]    --> loxii/src/memory.rs:311:26
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn gc(stack: &Stack, heap: &mut Heap) {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:116:52
[INFO] [stdout]     |
[INFO] [stdout] 116 |     fn compile_val_expr(&mut self, expr: &ValExpr, loc: &Loc) -> Result<(), CompileError> {
[INFO] [stdout]     |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `callee`
[INFO] [stdout]    --> loxii/src/compiler.rs:187:29
[INFO] [stdout]     |
[INFO] [stdout] 187 |             ValExpr::Call { callee, args } => todo!(),
[INFO] [stdout]     |                             ^^^^^^ help: try ignoring the field: `callee: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> loxii/src/compiler.rs:187:37
[INFO] [stdout]     |
[INFO] [stdout] 187 |             ValExpr::Call { callee, args } => todo!(),
[INFO] [stdout]     |                                     ^^^^ help: try ignoring the field: `args: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object`
[INFO] [stdout]    --> loxii/src/compiler.rs:206:28
[INFO] [stdout]     |
[INFO] [stdout] 206 |             RefExpr::Get { object, prop } => todo!(),
[INFO] [stdout]     |                            ^^^^^^ help: try ignoring the field: `object: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:206:36
[INFO] [stdout]     |
[INFO] [stdout] 206 |             RefExpr::Get { object, prop } => todo!(),
[INFO] [stdout]     |                                    ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `object`
[INFO] [stdout]    --> loxii/src/compiler.rs:208:17
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 object,
[INFO] [stdout]     |                 ^^^^^^ help: try ignoring the field: `object: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |                 prop,
[INFO] [stdout]     |                 ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> loxii/src/compiler.rs:210:17
[INFO] [stdout]     |
[INFO] [stdout] 210 |                 value,
[INFO] [stdout]     |                 ^^^^^ help: try ignoring the field: `value: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prop`
[INFO] [stdout]    --> loxii/src/compiler.rs:212:30
[INFO] [stdout]     |
[INFO] [stdout] 212 |             RefExpr::Super { prop } => todo!(),
[INFO] [stdout]     |                              ^^^^ help: try ignoring the field: `prop: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         loc: &Loc,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:317:27
[INFO] [stdout]     |
[INFO] [stdout] 317 |             Value::String(heap_id) => todo!(),
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class_id`
[INFO] [stdout]    --> loxii/src/memory.rs:318:26
[INFO] [stdout]     |
[INFO] [stdout] 318 |             Value::Class(class_id) => todo!(),
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:319:29
[INFO] [stdout]     |
[INFO] [stdout] 319 |             Value::Instance(heap_id) => todo!(),
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func_id`
[INFO] [stdout]    --> loxii/src/memory.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |             Value::Function(func_id, heap_id) => todo!(),
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_func_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:320:38
[INFO] [stdout]     |
[INFO] [stdout] 320 |             Value::Function(func_id, heap_id) => todo!(),
[INFO] [stdout]     |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:326:59
[INFO] [stdout]     |
[INFO] [stdout] 326 |     fn compile_function(&mut self, func: &StmtFunctionId, loc: &Loc) -> Result<(), CompileError> {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]    --> loxii/src/compiler.rs:327:29
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let StmtFunctionL { func, loc } = self.ast.get_func(func);
[INFO] [stdout]     |                             ^^^^ help: try ignoring the field: `func: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> loxii/src/compiler.rs:327:35
[INFO] [stdout]     |
[INFO] [stdout] 327 |         let StmtFunctionL { func, loc } = self.ast.get_func(func);
[INFO] [stdout]     |                                   ^^^ help: try ignoring the field: `loc: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> loxii/src/compiler.rs:331:34
[INFO] [stdout]     |
[INFO] [stdout] 331 |     fn compile_return(&mut self, value: &Option<ExprId>) -> Result<(), CompileError> {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:186:26
[INFO] [stdout]     |
[INFO] [stdout] 186 |             Value::Class(id) => todo!(),
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:187:29
[INFO] [stdout]     |
[INFO] [stdout] 187 |             Value::Instance(id) => todo!(),
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:188:29
[INFO] [stdout]     |
[INFO] [stdout] 188 |             Value::Function(id, inst) => todo!(),
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> loxii/src/compiler.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 337 |         name: &Key,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> loxii/src/compiler.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         base: &Option<ExprId>,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inst`
[INFO] [stdout]    --> loxii/src/value.rs:188:33
[INFO] [stdout]     |
[INFO] [stdout] 188 |             Value::Function(id, inst) => todo!(),
[INFO] [stdout]     |                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_inst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `methods`
[INFO] [stdout]    --> loxii/src/compiler.rs:339:9
[INFO] [stdout]     |
[INFO] [stdout] 339 |         methods: &[StmtFunctionId],
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_methods`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]    --> loxii/src/compiler.rs:345:33
[INFO] [stdout]     |
[INFO] [stdout] 345 |     fn compile_debug(&mut self, expr: &ExprId) -> Result<(), CompileError> {
[INFO] [stdout]     |                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `off`
[INFO] [stdout]   --> loxii/src/vm.rs:79:29
[INFO] [stdout]    |
[INFO] [stdout] 79 |             LoadOp::Upvalue(off) => todo!(),
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `off`
[INFO] [stdout]   --> loxii/src/vm.rs:96:30
[INFO] [stdout]    |
[INFO] [stdout] 96 |             StoreOp::Upvalue(off) => todo!(),
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]    --> loxii/src/memory.rs:311:26
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn gc(stack: &Stack, heap: &mut Heap) {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:317:27
[INFO] [stdout]     |
[INFO] [stdout] 317 |             Value::String(heap_id) => todo!(),
[INFO] [stdout]     |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class_id`
[INFO] [stdout]    --> loxii/src/memory.rs:318:26
[INFO] [stdout]     |
[INFO] [stdout] 318 |             Value::Class(class_id) => todo!(),
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:319:29
[INFO] [stdout]     |
[INFO] [stdout] 319 |             Value::Instance(heap_id) => todo!(),
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func_id`
[INFO] [stdout]    --> loxii/src/memory.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |             Value::Function(func_id, heap_id) => todo!(),
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_func_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap_id`
[INFO] [stdout]    --> loxii/src/memory.rs:320:38
[INFO] [stdout]     |
[INFO] [stdout] 320 |             Value::Function(func_id, heap_id) => todo!(),
[INFO] [stdout]     |                                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_heap_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Upvalue` is never constructed
[INFO] [stdout]    --> loxii/src/bytecode.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | enum OpValue {
[INFO] [stdout]     |      ------- variant in this enum
[INFO] [stdout] 123 |     Pop,
[INFO] [stdout] 124 |     Upvalue,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `loc` are never read
[INFO] [stdout]    --> loxii/src/bytecode.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct Chunk {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 151 |     id: u32,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 152 |     name: ConstAddr,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 153 |     loc: Loc,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_be_bytes` is never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | impl ConstAddr {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 219 |     pub fn to_be_bytes(self) -> [u8; size_of::<u32>()] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `emit_upvalue`, `emit_call`, and `is_global_chunk` are never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:351:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl BytecodeBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn emit_upvalue(&mut self) -> InstrAddr {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn emit_call(&mut self, loc: Loc) -> Option<InstrAddr> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     fn is_global_chunk(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `advance_slice` is never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:548:8
[INFO] [stdout]     |
[INFO] [stdout] 503 | impl<'a> BytecodeReader<'a> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 548 |     fn advance_slice(&mut self, size: usize) -> &'a [u8] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocks` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Stack {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 12 |     values: Vec<Value>,
[INFO] [stdout] 13 |     blocks: Vec<usize>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Value` and `Instance` are never constructed
[INFO] [stdout]   --> loxii/src/memory.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum HeapValue {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 29 |     Value(Value),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     String(String),
[INFO] [stdout] 31 |     Instance(Instance),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `index` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ValueId {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 42 |     index: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ValueId` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mark` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct PageValue {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] 46 |     value: HeapValue,
[INFO] [stdout] 47 |     mark: Mark,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Live` is never constructed
[INFO] [stdout]   --> loxii/src/memory.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | enum Mark {
[INFO] [stdout]    |      ---- variant in this enum
[INFO] [stdout] 57 |     Live,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `destruct`, `replace`, `get_mut`, `get_two_mut`, and `get_with_mark_mut` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:84:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Heap {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn destruct(&mut self, id: HeapId) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn replace(&mut self, id: HeapId, value: HeapValue) -> Option<HeapValue> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_mut(&mut self, id: HeapId) -> Option<&mut HeapValue> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_two_mut(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn get_with_mark_mut(&mut self, id: HeapId) -> Option<&mut PageValue> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_block` and `drop_block` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl Stack {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn create_block(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn drop_block(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear`, `get_mut`, `get_two_mut`, and `replace` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl<const N: usize> Page<N> {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn clear(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn get_mut(&mut self, index: usize) -> Option<&mut PageValue> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn get_two_mut(&mut self, one: usize, two: usize) -> Option<(&mut HeapValue, &mut HeapValue)> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     fn replace(&mut self, index: usize, value: HeapValue) -> Option<HeapValue> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string_mut` is never used
[INFO] [stdout]    --> loxii/src/memory.rs:296:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | impl HeapValue {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 296 |     pub fn as_string_mut(&mut self) -> &mut String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gc` is never used
[INFO] [stdout]    --> loxii/src/memory.rs:311:8
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn gc(stack: &Stack, heap: &mut Heap) {
[INFO] [stdout]     |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Class`, `Instance`, and `Function` are never constructed
[INFO] [stdout]   --> loxii/src/value.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum Value {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Class(HeapId),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 15 |     Instance(HeapId),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 16 |     Function(HeapId, Option<HeapId>), // HeapId must be instance
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Value` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `class`, and `fields` are never read
[INFO] [stdout]   --> loxii/src/value.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Instance {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 29 |     id: usize,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 30 |     class: HeapId,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 31 |     fields: FxHashMap<String, Value>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Instance` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LocalKind` is never used
[INFO] [stdout]   --> loxii/src/vm.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum LocalKind {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:186:26
[INFO] [stdout]     |
[INFO] [stdout] 186 |             Value::Class(id) => todo!(),
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:187:29
[INFO] [stdout]     |
[INFO] [stdout] 187 |             Value::Instance(id) => todo!(),
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> loxii/src/value.rs:188:29
[INFO] [stdout]     |
[INFO] [stdout] 188 |             Value::Function(id, inst) => todo!(),
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inst`
[INFO] [stdout]    --> loxii/src/value.rs:188:33
[INFO] [stdout]     |
[INFO] [stdout] 188 |             Value::Function(id, inst) => todo!(),
[INFO] [stdout]     |                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_inst`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> loxii/src/bytecode.rs:283:20
[INFO] [stdout]     |
[INFO] [stdout] 283 |     pub fn display(&self) -> DisplayedBytecode {
[INFO] [stdout]     |                    ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 283 |     pub fn display(&self) -> DisplayedBytecode<'_> {
[INFO] [stdout]     |                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `off`
[INFO] [stdout]   --> loxii/src/vm.rs:79:29
[INFO] [stdout]    |
[INFO] [stdout] 79 |             LoadOp::Upvalue(off) => todo!(),
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `off`
[INFO] [stdout]   --> loxii/src/vm.rs:96:30
[INFO] [stdout]    |
[INFO] [stdout] 96 |             StoreOp::Upvalue(off) => todo!(),
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_off`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Upvalue` is never constructed
[INFO] [stdout]    --> loxii/src/bytecode.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | enum OpValue {
[INFO] [stdout]     |      ------- variant in this enum
[INFO] [stdout] 123 |     Pop,
[INFO] [stdout] 124 |     Upvalue,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `loc` are never read
[INFO] [stdout]    --> loxii/src/bytecode.rs:151:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct Chunk {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 151 |     id: u32,
[INFO] [stdout]     |     ^^
[INFO] [stdout] 152 |     name: ConstAddr,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 153 |     loc: Loc,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_be_bytes` is never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | impl ConstAddr {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 219 |     pub fn to_be_bytes(self) -> [u8; size_of::<u32>()] {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `emit_upvalue`, `emit_call`, and `is_global_chunk` are never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:351:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl BytecodeBuilder {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn emit_upvalue(&mut self) -> InstrAddr {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn emit_call(&mut self, loc: Loc) -> Option<InstrAddr> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     fn is_global_chunk(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `advance_slice` is never used
[INFO] [stdout]    --> loxii/src/bytecode.rs:548:8
[INFO] [stdout]     |
[INFO] [stdout] 503 | impl<'a> BytecodeReader<'a> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 548 |     fn advance_slice(&mut self, size: usize) -> &'a [u8] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocks` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Stack {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 12 |     values: Vec<Value>,
[INFO] [stdout] 13 |     blocks: Vec<usize>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Value` and `Instance` are never constructed
[INFO] [stdout]   --> loxii/src/memory.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum HeapValue {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 29 |     Value(Value),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     String(String),
[INFO] [stdout] 31 |     Instance(Instance),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `index` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ValueId {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 42 |     index: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ValueId` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mark` is never read
[INFO] [stdout]   --> loxii/src/memory.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct PageValue {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] 46 |     value: HeapValue,
[INFO] [stdout] 47 |     mark: Mark,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Live` is never constructed
[INFO] [stdout]   --> loxii/src/memory.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | enum Mark {
[INFO] [stdout]    |      ---- variant in this enum
[INFO] [stdout] 57 |     Live,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `destruct`, `replace`, `get_mut`, `get_two_mut`, and `get_with_mark_mut` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:84:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Heap {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn destruct(&mut self, id: HeapId) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn replace(&mut self, id: HeapId, value: HeapValue) -> Option<HeapValue> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_mut(&mut self, id: HeapId) -> Option<&mut HeapValue> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_two_mut(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn get_with_mark_mut(&mut self, id: HeapId) -> Option<&mut PageValue> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_block` and `drop_block` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl Stack {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn create_block(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn drop_block(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear`, `get_mut`, `get_two_mut`, and `replace` are never used
[INFO] [stdout]    --> loxii/src/memory.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl<const N: usize> Page<N> {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn clear(&mut self, index: usize) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn get_mut(&mut self, index: usize) -> Option<&mut PageValue> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn get_two_mut(&mut self, one: usize, two: usize) -> Option<(&mut HeapValue, &mut HeapValue)> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     fn replace(&mut self, index: usize, value: HeapValue) -> Option<HeapValue> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_string_mut` is never used
[INFO] [stdout]    --> loxii/src/memory.rs:296:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | impl HeapValue {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 296 |     pub fn as_string_mut(&mut self) -> &mut String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gc` is never used
[INFO] [stdout]    --> loxii/src/memory.rs:311:8
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn gc(stack: &Stack, heap: &mut Heap) {
[INFO] [stdout]     |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Class`, `Instance`, and `Function` are never constructed
[INFO] [stdout]   --> loxii/src/value.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub enum Value {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 14 |     Class(HeapId),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 15 |     Instance(HeapId),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 16 |     Function(HeapId, Option<HeapId>), // HeapId must be instance
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Value` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `class`, and `fields` are never read
[INFO] [stdout]   --> loxii/src/value.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Instance {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 29 |     id: usize,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 30 |     class: HeapId,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 31 |     fields: FxHashMap<String, Value>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Instance` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LocalKind` is never used
[INFO] [stdout]   --> loxii/src/vm.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum LocalKind {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> loxii/src/bytecode.rs:283:20
[INFO] [stdout]     |
[INFO] [stdout] 283 |     pub fn display(&self) -> DisplayedBytecode {
[INFO] [stdout]     |                    ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 283 |     pub fn display(&self) -> DisplayedBytecode<'_> {
[INFO] [stdout]     |                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> loxii/src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             unimplemented!("soon REPL will be implemented");
[INFO] [stdout]    |             ----------------------------------------------- any code following this expression is unreachable
[INFO] [stdout] 63 |             ExitCode::SUCCESS
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> loxii/src/main.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |             unimplemented!("soon REPL will be implemented");
[INFO] [stdout]    |             ----------------------------------------------- any code following this expression is unreachable
[INFO] [stdout] 63 |             ExitCode::SUCCESS
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.97s
[INFO] running `Command { std: "docker" "inspect" "608236cc1babeaca8c597cf03be4fbfe2d35210910ccfb014007ba8e309b1b73", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "608236cc1babeaca8c597cf03be4fbfe2d35210910ccfb014007ba8e309b1b73", kill_on_drop: false }`
[INFO] [stdout] 608236cc1babeaca8c597cf03be4fbfe2d35210910ccfb014007ba8e309b1b73
