// Test that even when `T` is only used in covariant position, it
// is treated as invariant.
-// revisions: base nll
-// ignore-compare-mode-nll
-//[nll] compile-flags: -Z borrowck=mir
-
trait Get<T> : 'static {
fn get(&self) -> T;
}
{
// Previously OK, now an error as traits are invariant.
v
- //[base]~^ ERROR mismatched types
- //[nll]~^^ ERROR lifetime may not live long enough
+ //~^ ERROR lifetime may not live long enough
}
-fn get_max_from_min<'min, 'max, G>(v: Box<dyn Get<&'min i32>>)
- -> Box<dyn Get<&'max i32>>
+fn get_max_from_min<'min, 'max>(v: Box<dyn Get<&'min i32>>)
+ -> Box<dyn Get<&'max i32>>
where 'max : 'min
{
v
- //[base]~^ ERROR mismatched types
- //[nll]~^^ ERROR lifetime may not live long enough
+ //~^ ERROR lifetime may not live long enough
}
fn main() { }