]> git.lizzy.rs Git - rust.git/blob - tests/ui/inline-const/const-expr-lifetime-err.rs
Rollup merge of #107204 - euclio:assoc-const-suggestion, r=petrochenkov
[rust.git] / tests / ui / inline-const / const-expr-lifetime-err.rs
1 #![feature(const_mut_refs)]
2 #![feature(inline_const)]
3
4 use std::marker::PhantomData;
5
6 #[derive(PartialEq, Eq)]
7 pub struct InvariantRef<'a, T: ?Sized>(&'a T, PhantomData<&'a mut &'a T>);
8
9 impl<'a, T: ?Sized> InvariantRef<'a, T> {
10     pub const fn new(r: &'a T) -> Self {
11         InvariantRef(r, PhantomData)
12     }
13 }
14
15 impl<'a> InvariantRef<'a, ()> {
16     pub const NEW: Self = InvariantRef::new(&());
17 }
18
19 fn equate<T>(x: T, y: T){}
20
21 fn foo<'a>() {
22     let y = ();
23     equate(InvariantRef::new(&y), const { InvariantRef::<'a>::NEW });
24     //~^ ERROR `y` does not live long enough [E0597]
25 }
26
27 fn main() {
28     foo();
29 }