From e68a5c68000810cab9755754959318c4aaa93e5d Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Tue, 7 Apr 2020 13:01:41 -0700 Subject: Add cross-crate const in pattern tests --- src/test/ui/consts/const_in_pattern/auxiliary/consts.rs | 11 +++++++++++ src/test/ui/consts/const_in_pattern/cross-crate-fail.rs | 16 ++++++++++++++++ .../ui/consts/const_in_pattern/cross-crate-fail.stderr | 14 ++++++++++++++ src/test/ui/consts/const_in_pattern/cross-crate-pass.rs | 14 ++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 src/test/ui/consts/const_in_pattern/auxiliary/consts.rs create mode 100644 src/test/ui/consts/const_in_pattern/cross-crate-fail.rs create mode 100644 src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr create mode 100644 src/test/ui/consts/const_in_pattern/cross-crate-pass.rs (limited to 'src/test/ui') diff --git a/src/test/ui/consts/const_in_pattern/auxiliary/consts.rs b/src/test/ui/consts/const_in_pattern/auxiliary/consts.rs new file mode 100644 index 00000000000..303c2f12bbc --- /dev/null +++ b/src/test/ui/consts/const_in_pattern/auxiliary/consts.rs @@ -0,0 +1,11 @@ +pub struct CustomEq; + +impl Eq for CustomEq {} +impl PartialEq for CustomEq { + fn eq(&self, _: &Self) -> bool { + false + } +} + +pub const NONE: Option = None; +pub const SOME: Option = Some(CustomEq); diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-fail.rs b/src/test/ui/consts/const_in_pattern/cross-crate-fail.rs new file mode 100644 index 00000000000..a32450ab92f --- /dev/null +++ b/src/test/ui/consts/const_in_pattern/cross-crate-fail.rs @@ -0,0 +1,16 @@ +// aux-build:consts.rs + +#![warn(indirect_structural_match)] + +extern crate consts; +use consts::*; + +fn main() { + match None { + SOME => panic!(), + //~^ must be annotated with `#[derive(PartialEq, Eq)]` + //~| must be annotated with `#[derive(PartialEq, Eq)]` + + _ => {} + } +} diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr b/src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr new file mode 100644 index 00000000000..d5bb0dd0f25 --- /dev/null +++ b/src/test/ui/consts/const_in_pattern/cross-crate-fail.stderr @@ -0,0 +1,14 @@ +error: to use a constant of type `consts::CustomEq` in a pattern, `consts::CustomEq` must be annotated with `#[derive(PartialEq, Eq)]` + --> $DIR/cross-crate-fail.rs:10:9 + | +LL | SOME => panic!(), + | ^^^^ + +error: to use a constant of type `consts::CustomEq` in a pattern, `consts::CustomEq` must be annotated with `#[derive(PartialEq, Eq)]` + --> $DIR/cross-crate-fail.rs:10:9 + | +LL | SOME => panic!(), + | ^^^^ + +error: aborting due to 2 previous errors + diff --git a/src/test/ui/consts/const_in_pattern/cross-crate-pass.rs b/src/test/ui/consts/const_in_pattern/cross-crate-pass.rs new file mode 100644 index 00000000000..23f73a27d66 --- /dev/null +++ b/src/test/ui/consts/const_in_pattern/cross-crate-pass.rs @@ -0,0 +1,14 @@ +// run-pass +// aux-build:consts.rs + +#![warn(indirect_structural_match)] + +extern crate consts; +use consts::*; + +fn main() { + match Some(CustomEq) { + NONE => panic!(), + _ => {} + } +} -- cgit 1.4.1-3-g733a5