// unit-test: 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() { 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::<()>() }