// EMIT_MIR_FOR_EACH_PANIC_STRATEGY //@ compile-flags: -C debuginfo=full #![crate_type = "lib"] use std::fmt::Debug; pub trait Cache { type V: Debug; fn store_nocache(&self); } pub trait Query { type V; type C: Cache; fn cache(s: &T) -> &Self::C; } // EMIT_MIR dyn_trait.mk_cycle.Inline.diff #[inline(always)] pub fn mk_cycle(c: &dyn Cache) { // CHECK-LABEL: fn mk_cycle( // CHECK-NOT: inlined c.store_nocache() } // EMIT_MIR dyn_trait.try_execute_query.Inline.diff #[inline(always)] pub fn try_execute_query(c: &C) { // CHECK-LABEL: fn try_execute_query( // CHECK: (inlined mk_cycle::<::V>) mk_cycle(c) } // EMIT_MIR dyn_trait.get_query.Inline.diff #[inline(always)] pub fn get_query(t: &T) { // CHECK-LABEL: fn get_query( // CHECK-NOT: inlined let c = Q::cache(t); // CHECK: (inlined try_execute_query::<::C>) // CHECK: (inlined mk_cycle::<::V>) try_execute_query(c) }