auto-reduced (treereduce-rust):
//@compile-flags: -Zmir-opt-level=0 -Zverify-llvm-ir=yes -Clink-dead-code=true
use std::ops::Deref;
trait Foo {
fn method(&self) {}
}
impl Foo for u32 {}
fn via_deref_nested() -> Box<impl Deref<Target = impl Foo>> {
if false {
via_deref_nested().method();
}
Box::new(Box::new(1u32))
}
fn main() {}
original:
//! The recursive method call yields the opaque type. We want
//! to use the trait candidate for `impl Foo` here while not
//! applying it for the `impl Deref`.
//@ revisions: current next
//@[next] compile-flags: -Znext-solver
//@ check-pass
use std::ops::Deref;
trait Foo {
fn method(&self) {}
}
impl Foo for u32 {}
fn via_deref() -> impl Deref<Target = impl Foo> {
if false {
if false {
via_deref_nested().method();
}
}
Box::new(1u32)
}
fn via_deref_nested() -> Box<impl Deref<Target = impl Foo>> {
if false {
via_deref_nested().method();
}
Box::new(Box::new(1u32))
}
fn main() {}
Version information
rustc 1.99.0-nightly (5d4886964 2026-07-26)
binary: rustc
commit-hash: 5d4886964b04e1aa6aca158a677183a778e2950d
commit-date: 2026-07-26
host: x86_64-unknown-linux-gnu
release: 1.99.0-nightly
LLVM version: 22.1.8
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zmir-opt-level=0 -Zverify-llvm-ir=yes -Clink-dead-code=true
Program output
warning: trait `Foo` is never used
--> /tmp/icemaker_global_tempdir.rPGSLcie4PU1/rustc_testrunner_tmpdir_reporting.qXYPqbNhVFid/mvce.rs:2:7
|
2 | trait Foo {
| ^^^
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
warning: function `via_deref_nested` is never used
--> /tmp/icemaker_global_tempdir.rPGSLcie4PU1/rustc_testrunner_tmpdir_reporting.qXYPqbNhVFid/mvce.rs:7:4
|
7 | fn via_deref_nested() -> Box<impl Deref<Target = impl Foo>> {
| ^^^^^^^^^^^^^^^^
ResumeInst needs to be in a function with a personality.
resume { ptr, i32 } %12
rustc-LLVM ERROR: Broken module found, compilation aborted!
auto-reduced (treereduce-rust):
original:
Version information
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zmir-opt-level=0 -Zverify-llvm-ir=yes -Clink-dead-code=trueProgram output