From 2aef46b17b3d1e2ddd4b985a6b59853746c04b86 Mon Sep 17 00:00:00 2001 From: Bastian Kauschke Date: Thu, 31 Dec 2020 10:55:20 +0100 Subject: support pattern as const parents in type_of --- src/test/ui/const-generics/arg-in-pat-1.rs | 23 ++++++++++++++++ src/test/ui/const-generics/arg-in-pat-2.rs | 10 +++++++ src/test/ui/const-generics/arg-in-pat-3.rs | 43 ++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 src/test/ui/const-generics/arg-in-pat-1.rs create mode 100644 src/test/ui/const-generics/arg-in-pat-2.rs create mode 100644 src/test/ui/const-generics/arg-in-pat-3.rs (limited to 'src/test/ui/const-generics') diff --git a/src/test/ui/const-generics/arg-in-pat-1.rs b/src/test/ui/const-generics/arg-in-pat-1.rs new file mode 100644 index 00000000000..82555084e41 --- /dev/null +++ b/src/test/ui/const-generics/arg-in-pat-1.rs @@ -0,0 +1,23 @@ +// check-pass +enum ConstGenericEnum { + Foo([i32; N]), + Bar, +} + +fn foo(val: &ConstGenericEnum) { + if let ConstGenericEnum::::Foo(field, ..) = val {} +} + +fn bar(val: &ConstGenericEnum) { + match val { + ConstGenericEnum::::Foo(field, ..) => (), + ConstGenericEnum::::Bar => (), + } +} + +fn main() { + match ConstGenericEnum::Bar { + ConstGenericEnum::<3>::Foo(field, ..) => (), + ConstGenericEnum::<3>::Bar => (), + } +} diff --git a/src/test/ui/const-generics/arg-in-pat-2.rs b/src/test/ui/const-generics/arg-in-pat-2.rs new file mode 100644 index 00000000000..dc9e722eda8 --- /dev/null +++ b/src/test/ui/const-generics/arg-in-pat-2.rs @@ -0,0 +1,10 @@ +// check-pass +enum Generic { + Variant, +} + +fn main() { + match todo!() { + Generic::<0usize>::Variant => todo!() + } +} diff --git a/src/test/ui/const-generics/arg-in-pat-3.rs b/src/test/ui/const-generics/arg-in-pat-3.rs new file mode 100644 index 00000000000..24626a3b68a --- /dev/null +++ b/src/test/ui/const-generics/arg-in-pat-3.rs @@ -0,0 +1,43 @@ +// check-pass +struct Foo; + +fn bindingp() { + match Foo { + mut x @ Foo::<3> => { + let ref mut _x @ Foo::<3> = x; + } + } +} + +struct Bar { + field: Foo, +} + +fn structp() { + match todo!() { + Bar::<3> { + field: Foo::<3>, + } => (), + } +} + +struct Baz(Foo); + +fn tuplestructp() { + match Baz(Foo) { + Baz::<3>(Foo::<3>) => (), + } +} + +impl Baz { + const ASSOC: usize = 3; +} + +fn pathp() { + match 3 { + Baz::<3>::ASSOC => (), + _ => (), + } +} + +fn main() {} -- cgit 1.4.1-3-g733a5