| // Test that we still check constants are well-formed, even when we there's no |
| // type annotation to check. |
| |
| const FUN: fn(&'static ()) = |_| {}; |
| struct A; |
| impl A { |
| const ASSOCIATED_FUN: fn(&'static ()) = |_| {}; |
| } |
| |
| struct B<'a>(&'a ()); |
| impl B<'static> { |
| const ALSO_ASSOCIATED_FUN: fn(&'static ()) = |_| {}; |
| } |
| |
| trait Z: 'static { |
| const TRAIT_ASSOCIATED_FUN: fn(&'static Self) = |_| (); |
| } |
| |
| impl Z for () {} |
| |
| fn main() { |
| let x = (); |
| FUN(&x); //~ ERROR `x` does not live long enough |
| A::ASSOCIATED_FUN(&x); //~ ERROR `x` does not live long enough |
| B::ALSO_ASSOCIATED_FUN(&x); //~ ERROR `x` does not live long enough |
| <_>::TRAIT_ASSOCIATED_FUN(&x); //~ ERROR `x` does not live long enough |
| } |