// Regression test for #138942, where a function was incorrectly internalized, despite the fact // that it was referenced by a var debug info from another code generation unit. // //@ build-pass //@ revisions: limited full //@ compile-flags: -Ccodegen-units=4 //@[limited] compile-flags: -Cdebuginfo=limited //@[full] compile-flags: -Cdebuginfo=full trait Fun { const FUN: &'static fn(); } impl Fun for () { const FUN: &'static fn() = &(detail::f as fn()); } mod detail { // Place `f` in a distinct module to generate a separate code generation unit. #[inline(never)] pub(super) fn f() {} } fn main() { // SingleUseConsts represents "x" using VarDebugInfoContents::Const. // It is the only reference to `f` remaining. let x = <() as ::Fun>::FUN; }