diff options
| author | Dominik Stolz <d.stolz@tum.de> | 2021-10-12 21:50:44 +0200 |
|---|---|---|
| committer | Dominik Stolz <d.stolz@tum.de> | 2021-10-12 21:50:44 +0200 |
| commit | 59b36bcfb5fa50b370869f5073a57d514f59e0c8 (patch) | |
| tree | a8b7966fe3d8589bc194348882e31cfdda094812 | |
| parent | 8b141a24d05c86b4c074715803f0c29783f8f9bc (diff) | |
| download | rust-59b36bcfb5fa50b370869f5073a57d514f59e0c8.tar.gz rust-59b36bcfb5fa50b370869f5073a57d514f59e0c8.zip | |
Add UI test for the variance of types appearing in consts
| -rw-r--r-- | src/test/ui/variance/variance-associated-consts.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/variance/variance-associated-consts.stderr | 10 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/variance/variance-associated-consts.rs b/src/test/ui/variance/variance-associated-consts.rs new file mode 100644 index 00000000000..da55bc96244 --- /dev/null +++ b/src/test/ui/variance/variance-associated-consts.rs @@ -0,0 +1,17 @@ +// Test that the variance computation considers types that +// appear in const expressions to be invariant. + +#![feature(rustc_attrs)] +#![allow(incomplete_features)] +#![feature(generic_const_exprs)] + +trait Trait { + const Const: usize; +} + +#[rustc_variance] +struct Foo<T: Trait> { //~ ERROR [o] + field: [u8; <T as Trait>::Const] +} + +fn main() { } diff --git a/src/test/ui/variance/variance-associated-consts.stderr b/src/test/ui/variance/variance-associated-consts.stderr new file mode 100644 index 00000000000..d1bf34781df --- /dev/null +++ b/src/test/ui/variance/variance-associated-consts.stderr @@ -0,0 +1,10 @@ +error[E0208]: [o] + --> $DIR/variance-associated-consts.rs:13:1 + | +LL | / struct Foo<T: Trait> { +LL | | field: [u8; <T as Trait>::Const] +LL | | } + | |_^ + +error: aborting due to previous error + |
