mirror of https://github.com/rust-lang/rust.git
Add failing test for invalid projection as union field type
This commit is contained in:
parent
4653bbfaee
commit
6c63b9497d
|
@ -0,0 +1,20 @@
|
|||
// Test to ensure that there is no ICE when normalizing a projection
|
||||
// which is invalid (from <https://github.com/rust-lang/rust/pull/106938>).
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
trait Identity {
|
||||
type Identity;
|
||||
}
|
||||
trait NotImplemented {}
|
||||
|
||||
impl<T: NotImplemented> Identity for T {
|
||||
type Identity = Self;
|
||||
}
|
||||
|
||||
type Foo = u8;
|
||||
|
||||
union Bar {
|
||||
a: <Foo as Identity>::Identity, //~ ERROR
|
||||
b: u8,
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
error[E0277]: the trait bound `u8: NotImplemented` is not satisfied
|
||||
--> $DIR/projection-as-union-type-error-2.rs:18:8
|
||||
|
|
||||
LL | a: <Foo as Identity>::Identity,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `NotImplemented` is not implemented for `u8`
|
||||
|
|
||||
note: required for `u8` to implement `Identity`
|
||||
--> $DIR/projection-as-union-type-error-2.rs:11:25
|
||||
|
|
||||
LL | impl<T: NotImplemented> Identity for T {
|
||||
| -------------- ^^^^^^^^ ^
|
||||
| |
|
||||
| unsatisfied trait bound introduced here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
|
@ -0,0 +1,15 @@
|
|||
// Test to ensure that there is no ICE when normalizing a projection
|
||||
// which is invalid (from <https://github.com/rust-lang/rust/pull/106938>).
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
pub trait Identity {
|
||||
type Identity;
|
||||
}
|
||||
|
||||
pub type Foo = u8;
|
||||
|
||||
pub union Bar {
|
||||
a: <Foo as Identity>::Identity, //~ ERROR
|
||||
b: u8,
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
error[E0277]: the trait bound `u8: Identity` is not satisfied
|
||||
--> $DIR/projection-as-union-type-error.rs:13:9
|
||||
|
|
||||
LL | a: <Foo as Identity>::Identity,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Identity` is not implemented for `u8`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
Loading…
Reference in New Issue