mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-19 03:03:21 +00:00
add test where we ignore hr implied bounds
This commit is contained in:
parent
c8e6a9e8b6
commit
e6e93e021e
14
tests/ui/regions/higher-ranked-implied.rs
Normal file
14
tests/ui/regions/higher-ranked-implied.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// FIXME: This test should pass as the first two fields add implied bounds that
|
||||
// `'a` is equal to `'b` while the last one should simply use that fact. With
|
||||
// the current implementation this errors. We have to be careful as implied bounds
|
||||
// are only sound if they're also correctly checked.
|
||||
|
||||
struct Inv<T>(*mut T); // `T` is invariant.
|
||||
type A = for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'a ()>);
|
||||
type B = for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'b ()>);
|
||||
|
||||
fn main() {
|
||||
let x: A = |_, _, _| ();
|
||||
let y: B = x; //~ ERROR mismatched types
|
||||
let _: A = y; //~ ERROR mismatched types
|
||||
}
|
21
tests/ui/regions/higher-ranked-implied.stderr
Normal file
21
tests/ui/regions/higher-ranked-implied.stderr
Normal file
@ -0,0 +1,21 @@
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/higher-ranked-implied.rs:12:16
|
||||
|
|
||||
LL | let y: B = x;
|
||||
| ^ one type is more general than the other
|
||||
|
|
||||
= note: expected fn pointer `for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'b ()>)`
|
||||
found fn pointer `for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'a ()>)`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/higher-ranked-implied.rs:13:16
|
||||
|
|
||||
LL | let _: A = y;
|
||||
| ^ one type is more general than the other
|
||||
|
|
||||
= note: expected fn pointer `for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'a ()>)`
|
||||
found fn pointer `for<'a, 'b> fn(Inv<&'a &'b ()>, Inv<&'b &'a ()>, Inv<&'b ()>)`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Reference in New Issue
Block a user