2017-11-02 13:42:30 +00:00
|
|
|
// Test that we give a note when the old LUB/GLB algorithm would have
|
|
|
|
// succeeded but the new code (which is stricter) gives an error.
|
|
|
|
|
2020-05-20 14:31:51 +00:00
|
|
|
trait Foo<T, U> {}
|
2017-11-02 13:42:30 +00:00
|
|
|
|
2020-05-20 14:31:51 +00:00
|
|
|
fn foo(x: &dyn for<'a, 'b> Foo<&'a u8, &'b u8>, y: &dyn for<'a> Foo<&'a u8, &'a u8>) {
|
2019-02-20 17:52:23 +00:00
|
|
|
let z = match 22 {
|
2017-11-02 13:42:30 +00:00
|
|
|
0 => x,
|
2020-05-20 14:31:51 +00:00
|
|
|
_ => y,
|
2022-04-01 17:13:25 +00:00
|
|
|
//~^ ERROR mismatched types
|
|
|
|
//~| ERROR mismatched types
|
2017-11-02 13:42:30 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-05-20 14:31:51 +00:00
|
|
|
fn bar(x: &dyn for<'a, 'b> Foo<&'a u8, &'b u8>, y: &dyn for<'a> Foo<&'a u8, &'a u8>) {
|
2017-11-02 13:42:30 +00:00
|
|
|
// Accepted with explicit case:
|
|
|
|
let z = match 22 {
|
2019-05-28 18:46:13 +00:00
|
|
|
0 => x as &dyn for<'a> Foo<&'a u8, &'a u8>,
|
2017-11-02 13:42:30 +00:00
|
|
|
_ => y,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-05-20 14:31:51 +00:00
|
|
|
fn main() {}
|