diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2023-02-09 20:45:01 +0100 |
|---|---|---|
| committer | Guillaume Gomez <guillaume.gomez@huawei.com> | 2023-02-10 14:44:54 +0100 |
| commit | a03da2bdeb7c7b466b7b4a9b361d1d19c171a589 (patch) | |
| tree | 04d56dc48dc027ffb7d760f87cae90e816588dfc | |
| parent | 5919f62cf6681979cb5401d3907445f14d27ec8f (diff) | |
| download | rust-a03da2bdeb7c7b466b7b4a9b361d1d19c171a589.tar.gz rust-a03da2bdeb7c7b466b7b4a9b361d1d19c171a589.zip | |
Add test for implementation on projection
| -rw-r--r-- | tests/ui/const-generics/wrong-normalization.rs | 19 | ||||
| -rw-r--r-- | tests/ui/const-generics/wrong-normalization.stderr | 11 |
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/const-generics/wrong-normalization.rs b/tests/ui/const-generics/wrong-normalization.rs new file mode 100644 index 00000000000..f1ce317b3f7 --- /dev/null +++ b/tests/ui/const-generics/wrong-normalization.rs @@ -0,0 +1,19 @@ +// This test ensures that if implementation on projections is supported, +// it doesn't end in very weird cycle error. + +#![crate_type = "lib"] + +pub trait Identity { + type Identity: ?Sized; +} + +impl<T: ?Sized> Identity for T { + type Identity = Self; +} + +pub struct I8<const F: i8>; + +impl <I8<{i8::MIN}> as Identity>::Identity { +//~^ ERROR no nominal type found for inherent implementation + pub fn foo(&self) {} +} diff --git a/tests/ui/const-generics/wrong-normalization.stderr b/tests/ui/const-generics/wrong-normalization.stderr new file mode 100644 index 00000000000..fb806bdb1e7 --- /dev/null +++ b/tests/ui/const-generics/wrong-normalization.stderr @@ -0,0 +1,11 @@ +error[E0118]: no nominal type found for inherent implementation + --> $DIR/wrong-normalization.rs:16:6 + | +LL | impl <I8<{i8::MIN}> as Identity>::Identity { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl requires a nominal type + | + = note: either implement a trait on it or create a newtype to wrap it instead + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0118`. |
