//@ test-mir-pass: ScalarReplacementOfAggregates //@ compile-flags: -Cpanic=abort //@ no-prefer-dynamic trait Err { type Err; } struct Foo { // Check that the `'static` lifetime is erased when creating the local for `x`, // even if we fail to normalize the type. x: Result, ::Err>, y: u32, } // EMIT_MIR lifetimes.foo.ScalarReplacementOfAggregates.diff fn foo() { // CHECK-LABEL: fn foo( // CHECK-NOT: [foo:_.*]: Foo // CHECK-NOT: Box let foo: Foo = Foo { x: Ok(Box::new(5_u32)), y: 7_u32 }; let x = foo.x; let y = foo.y; if let Ok(x) = x { eprintln!("{x} {y}"); } } impl Err for () { type Err = (); } fn main() { foo::<()>() }