From 59b36bcfb5fa50b370869f5073a57d514f59e0c8 Mon Sep 17 00:00:00 2001 From: Dominik Stolz Date: Tue, 12 Oct 2021 21:50:44 +0200 Subject: [PATCH] Add UI test for the variance of types appearing in consts --- .../ui/variance/variance-associated-consts.rs | 17 +++++++++++++++++ .../variance/variance-associated-consts.stderr | 10 ++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/test/ui/variance/variance-associated-consts.rs create mode 100644 src/test/ui/variance/variance-associated-consts.stderr 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 000000000000..da55bc96244f --- /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 { //~ ERROR [o] + field: [u8; ::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 000000000000..d1bf34781dfb --- /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 { +LL | | field: [u8; ::Const] +LL | | } + | |_^ + +error: aborting due to previous error +