[INFO] cloning repository https://github.com/pyroMechanical/rlox
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/pyroMechanical/rlox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FpyroMechanical%2Frlox", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FpyroMechanical%2Frlox'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b2c56dc903d05f5d621791cbb115ffedbd4c6e67
[INFO] checking pyroMechanical/rlox against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FpyroMechanical%2Frlox" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/pyroMechanical/rlox
[INFO] finished tweaking git repo https://github.com/pyroMechanical/rlox
[INFO] tweaked toml for git repo https://github.com/pyroMechanical/rlox written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/pyroMechanical/rlox on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/pyroMechanical/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" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0
[INFO] running `Command { std: "docker" "start" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking rlox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition name: `nan_boxing`
[INFO] [stdout]   --> src/value.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | #[cfg(not(nan_boxing))]
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 34 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nan_boxing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nan_boxing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `nan_boxing`
[INFO] [stdout]    --> src/value.rs:271:7
[INFO] [stdout]     |
[INFO] [stdout] 271 | #[cfg(nan_boxing)]
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nan_boxing)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nan_boxing)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `nan_boxing`
[INFO] [stdout]   --> src/value.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | #[cfg(not(nan_boxing))]
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 34 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nan_boxing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nan_boxing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `nan_boxing`
[INFO] [stdout]    --> src/value.rs:271:7
[INFO] [stdout]     |
[INFO] [stdout] 271 | #[cfg(nan_boxing)]
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nan_boxing)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(nan_boxing)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjString>`
[INFO] [stdout]    --> src/compiler.rs:736:49
[INFO] [stdout]     |
[INFO] [stdout] 736 |         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 736 -         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout] 736 +         return self.make_constant(Value::string(str_obj)) as u8;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 736 -         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout] 736 +         return self.make_constant(Value::string(<Gc<object::ObjString> as Into<_>>::into(str_obj))) as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjFunction>`
[INFO] [stdout]    --> src/compiler.rs:987:52
[INFO] [stdout]     |
[INFO] [stdout] 987 |         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 987 -         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout] 987 +         let f = self.make_constant(Value::function(function.clone()));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 987 -         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout] 987 +         let f = self.make_constant(Value::function(<Gc<object::ObjFunction> as Into<_>>::into(function.clone())));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjString>`
[INFO] [stdout]    --> src/value.rs:257:23
[INFO] [stdout]     |
[INFO] [stdout] 257 |         Value::String(ObjString::new(source).into())
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 257 -         Value::String(ObjString::new(source).into())
[INFO] [stdout] 257 +         Value::String(ObjString::new(source))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 257 -         Value::String(ObjString::new(source).into())
[INFO] [stdout] 257 +         Value::String(<Gc<object::ObjString> as Into<_>>::into(ObjString::new(source)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjNative>`
[INFO] [stdout]    --> src/vm.rs:128:36
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 128 -         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout] 128 +         let native = Value::native(ObjNative::new(function));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 128 -         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout] 128 +         let native = Value::native(<Gc<object::ObjNative> as Into<_>>::into(ObjNative::new(function)));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjInstance>`
[INFO] [stdout]    --> src/vm.rs:173:37
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout] 173 +                     Value::instance(ObjInstance::new(class.clone()));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout] 173 +                     Value::instance(<Gc<object::ObjInstance> as Into<_>>::into(ObjInstance::new(class.clone())));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjBoundMethod>`
[INFO] [stdout]    --> src/vm.rs:231:47
[INFO] [stdout]     |
[INFO] [stdout] 231 |                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 231 -                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout] 231 +                 self.push(Value::bound_method(bound_method))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 231 -                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout] 231 +                 self.push(Value::bound_method(<Gc<object::ObjBoundMethod> as Into<_>>::into(bound_method)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClosure>`
[INFO] [stdout]    --> src/vm.rs:412:54
[INFO] [stdout]     |
[INFO] [stdout] 412 | ...                   self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 412 -                             self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 412 +                             self.push(Value::closure(closure.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 412 -                             self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 412 +                             self.push(Value::closure(<Gc<object::ObjClosure> as Into<_>>::into(closure.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClass>`
[INFO] [stdout]    --> src/vm.rs:437:50
[INFO] [stdout]     |
[INFO] [stdout] 437 |                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 437 -                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout] 437 +                         let class = Value::class(ObjClass::new(name));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 437 -                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout] 437 +                         let class = Value::class(<Gc<object::ObjClass> as Into<_>>::into(ObjClass::new(name)));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjFunction>`
[INFO] [stdout]    --> src/vm.rs:649:35
[INFO] [stdout]     |
[INFO] [stdout] 649 |         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 649 -         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout] 649 +         self.push(Value::function(function.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 649 -         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout] 649 +         self.push(Value::function(<Gc<object::ObjFunction> as Into<_>>::into(function.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClosure>`
[INFO] [stdout]    --> src/vm.rs:652:34
[INFO] [stdout]     |
[INFO] [stdout] 652 |         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 652 -         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 652 +         self.push(Value::closure(closure.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 652 -         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 652 +         self.push(Value::closure(<Gc<object::ObjClosure> as Into<_>>::into(closure.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/gc.rs:358:19
[INFO] [stdout]     |
[INFO] [stdout] 358 |     pub fn borrow(&self) -> GcCellRef<T> {
[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] 358 |     pub fn borrow(&self) -> GcCellRef<'_, T> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/gc.rs:362:23
[INFO] [stdout]     |
[INFO] [stdout] 362 |     pub fn borrow_mut(&self) -> GcCellRefMut<T> {
[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] 362 |     pub fn borrow_mut(&self) -> GcCellRefMut<'_, T> {
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rlox` (bin "rlox") due to 10 previous errors; 4 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjString>`
[INFO] [stdout]    --> src/compiler.rs:736:49
[INFO] [stdout]     |
[INFO] [stdout] 736 |         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 736 -         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout] 736 +         return self.make_constant(Value::string(str_obj)) as u8;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 736 -         return self.make_constant(Value::string(str_obj.into())) as u8;
[INFO] [stdout] 736 +         return self.make_constant(Value::string(<Gc<object::ObjString> as Into<_>>::into(str_obj))) as u8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjFunction>`
[INFO] [stdout]    --> src/compiler.rs:987:52
[INFO] [stdout]     |
[INFO] [stdout] 987 |         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 987 -         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout] 987 +         let f = self.make_constant(Value::function(function.clone()));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 987 -         let f = self.make_constant(Value::function(function.clone().into()));
[INFO] [stdout] 987 +         let f = self.make_constant(Value::function(<Gc<object::ObjFunction> as Into<_>>::into(function.clone())));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjString>`
[INFO] [stdout]    --> src/value.rs:257:23
[INFO] [stdout]     |
[INFO] [stdout] 257 |         Value::String(ObjString::new(source).into())
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 257 -         Value::String(ObjString::new(source).into())
[INFO] [stdout] 257 +         Value::String(ObjString::new(source))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 257 -         Value::String(ObjString::new(source).into())
[INFO] [stdout] 257 +         Value::String(<Gc<object::ObjString> as Into<_>>::into(ObjString::new(source)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjNative>`
[INFO] [stdout]    --> src/vm.rs:128:36
[INFO] [stdout]     |
[INFO] [stdout] 128 |         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 128 -         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout] 128 +         let native = Value::native(ObjNative::new(function));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 128 -         let native = Value::native(ObjNative::new(function).into());
[INFO] [stdout] 128 +         let native = Value::native(<Gc<object::ObjNative> as Into<_>>::into(ObjNative::new(function)));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjInstance>`
[INFO] [stdout]    --> src/vm.rs:173:37
[INFO] [stdout]     |
[INFO] [stdout] 173 |                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout] 173 +                     Value::instance(ObjInstance::new(class.clone()));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 173 -                     Value::instance(ObjInstance::new(class.clone()).into());
[INFO] [stdout] 173 +                     Value::instance(<Gc<object::ObjInstance> as Into<_>>::into(ObjInstance::new(class.clone())));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjBoundMethod>`
[INFO] [stdout]    --> src/vm.rs:231:47
[INFO] [stdout]     |
[INFO] [stdout] 231 |                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 231 -                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout] 231 +                 self.push(Value::bound_method(bound_method))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 231 -                 self.push(Value::bound_method(bound_method.into()))
[INFO] [stdout] 231 +                 self.push(Value::bound_method(<Gc<object::ObjBoundMethod> as Into<_>>::into(bound_method)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClosure>`
[INFO] [stdout]    --> src/vm.rs:412:54
[INFO] [stdout]     |
[INFO] [stdout] 412 | ...                   self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 412 -                             self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 412 +                             self.push(Value::closure(closure.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 412 -                             self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 412 +                             self.push(Value::closure(<Gc<object::ObjClosure> as Into<_>>::into(closure.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClass>`
[INFO] [stdout]    --> src/vm.rs:437:50
[INFO] [stdout]     |
[INFO] [stdout] 437 |                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 437 -                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout] 437 +                         let class = Value::class(ObjClass::new(name));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 437 -                         let class = Value::class(ObjClass::new(name).into());
[INFO] [stdout] 437 +                         let class = Value::class(<Gc<object::ObjClass> as Into<_>>::into(ObjClass::new(name)));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjFunction>`
[INFO] [stdout]    --> src/vm.rs:649:35
[INFO] [stdout]     |
[INFO] [stdout] 649 |         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 649 -         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout] 649 +         self.push(Value::function(function.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 649 -         self.push(Value::function(function.clone().into()))?;
[INFO] [stdout] 649 +         self.push(Value::function(<Gc<object::ObjFunction> as Into<_>>::into(function.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Gc<object::ObjClosure>`
[INFO] [stdout]    --> src/vm.rs:652:34
[INFO] [stdout]     |
[INFO] [stdout] 652 |         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 652 -         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 652 +         self.push(Value::closure(closure.clone()))?;
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 652 -         self.push(Value::closure(closure.clone().into()))?;
[INFO] [stdout] 652 +         self.push(Value::closure(<Gc<object::ObjClosure> as Into<_>>::into(closure.clone())))?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/gc.rs:358:19
[INFO] [stdout]     |
[INFO] [stdout] 358 |     pub fn borrow(&self) -> GcCellRef<T> {
[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] 358 |     pub fn borrow(&self) -> GcCellRef<'_, T> {
[INFO] [stdout]     |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/gc.rs:362:23
[INFO] [stdout]     |
[INFO] [stdout] 362 |     pub fn borrow_mut(&self) -> GcCellRefMut<T> {
[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] 362 |     pub fn borrow_mut(&self) -> GcCellRefMut<'_, T> {
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rlox` (bin "rlox" test) due to 10 previous errors; 4 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0", kill_on_drop: false }`
[INFO] [stdout] f54ce2c8f1ca155abf5d9478e6efe0e3dc5f69fb4f39283cd8b9ac999f1e77b0
