Closed
Description
#![feature(nll)]
trait Trait {
const ASSOC: usize;
}
struct Foo<'a, 'b: 'a>(&'a &'b ());
impl<'a, 'b> Trait for Foo<'a, 'b> {
const ASSOC: usize = 3;
}
fn foo<'a, 'b>() -> usize {
<Foo<'a, 'b> as Trait>::ASSOC
}
should error because 'b: 'a
is not met but needed by Foo<'a, 'b>::ASSOC
.
This happens because the predicates of constants are only checked for function definitions
while they have to also get checked for associated constants. I feel like we should really
just check the predicates for all constants instead of trying to safe some work here.
rust/compiler/rustc_borrowck/src/type_check/mod.rs
Lines 466 to 473 in d2df372