diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/compiletest.rs | 2 | ||||
-rw-r--r-- | tests/order.rs | 57 | ||||
-rw-r--r-- | tests/stable.rs | 33 | ||||
-rw-r--r-- | tests/ui/let-unstable.stderr | 2 | ||||
-rw-r--r-- | tests/ui/match-unstable.stderr | 2 | ||||
-rw-r--r-- | tests/ui/repeat.rs | 14 | ||||
-rw-r--r-- | tests/ui/repeat.stderr | 5 | ||||
-rw-r--r-- | tests/ui/unnamed-fields.stderr | 4 | ||||
-rw-r--r-- | tests/ui/unsorted-enum.rs | 12 | ||||
-rw-r--r-- | tests/ui/unsorted-enum.stderr | 5 | ||||
-rw-r--r-- | tests/ui/unsorted-match-stable.rs | 20 | ||||
-rw-r--r-- | tests/ui/unsorted-match-stable.stderr | 5 | ||||
-rw-r--r-- | tests/ui/unsorted-match-unstable.rs | 23 | ||||
-rw-r--r-- | tests/ui/unsorted-match-unstable.stderr | 7 | ||||
-rw-r--r-- | tests/ui/unsorted-struct.rs | 12 | ||||
-rw-r--r-- | tests/ui/unsorted-struct.stderr | 5 | ||||
-rw-r--r-- | tests/unstable.rs | 25 |
17 files changed, 228 insertions, 5 deletions
diff --git a/tests/compiletest.rs b/tests/compiletest.rs index 2e861bf..f9aea23 100644 --- a/tests/compiletest.rs +++ b/tests/compiletest.rs @@ -1,4 +1,4 @@ -#[rustc::attr(not(nightly), ignore)] +#[rustversion::attr(not(nightly), ignore)] #[test] fn ui() { let t = trybuild::TestCases::new(); diff --git a/tests/order.rs b/tests/order.rs new file mode 100644 index 0000000..4723f94 --- /dev/null +++ b/tests/order.rs @@ -0,0 +1,57 @@ +#![allow(dead_code, non_camel_case_types)] + +#[remain::sorted] +enum UnderscoresFirst { + __Nonexhaustive, + Aaa, + Bbb, +} + +#[remain::sorted] +enum UnderscoresLast { + Aaa, + Bbb, + __Nonexhaustive, +} + +#[remain::sorted] +enum SnakeCase { + under_score, + underscore, +} + +#[remain::sorted] +enum NumberingSimple { + E1, + E9, + E10, +} + +#[remain::sorted] +enum NumberingComplex { + E1_Aaa, + E9_Aaa, + E10_Aaa, +} + +#[remain::sorted] +enum AtomOrder { + A, + A_, + A0, + AA, + Aa, + under_0core, + under_Score, + under_score, + under__0core, + under__Score, + under__score, + underscore, +} + +#[remain::sorted] +enum LargeNumber { + E1, + E99999999999999999999999, +} diff --git a/tests/stable.rs b/tests/stable.rs index a3b6a7b..b1bcd65 100644 --- a/tests/stable.rs +++ b/tests/stable.rs @@ -1,30 +1,55 @@ #![allow(dead_code)] #[remain::sorted] +#[derive(PartialEq)] pub enum TestEnum { A, B, + #[remain::unsorted] + Ignored, C, + #[unsorted] + AlsoIgnored, D, + __Nonexhaustive, } #[remain::sorted] +#[derive(PartialEq)] pub struct TestStruct { a: usize, b: usize, + #[unsorted] + ignored: usize, c: usize, + #[remain::unsorted] + also_ignored: usize, d: usize, } #[test] +fn test_attrs() { + fn is_partial_eq<T: PartialEq>() -> bool { + true + } + + assert!(is_partial_eq::<TestEnum>()); + assert!(is_partial_eq::<TestStruct>()); +} + +#[test] #[remain::check] -fn test_match() { +fn test_let() { let value = TestEnum::A; #[sorted] let _ = match value { TestEnum::A => {} + #[remain::unsorted] + TestEnum::Ignored => {} TestEnum::B => {} + #[unsorted] + TestEnum::AlsoIgnored => {} TestEnum::C => {} _ => {} }; @@ -32,14 +57,18 @@ fn test_match() { #[test] #[remain::check] -fn test_let() { +fn test_match() { let value = TestEnum::A; #[sorted] match value { TestEnum::A => {} TestEnum::B => {} + #[unsorted] + TestEnum::Ignored => {} TestEnum::C => {} + #[remain::unsorted] + TestEnum::AlsoIgnored => {} _ => {} } } diff --git a/tests/ui/let-unstable.stderr b/tests/ui/let-unstable.stderr index 97c5ba1..0960dba 100644 --- a/tests/ui/let-unstable.stderr +++ b/tests/ui/let-unstable.stderr @@ -3,3 +3,5 @@ error: E::Bbb should sort before E::Ccc | 15 | #[sorted] | ^^^^^^^^^ + | + = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/match-unstable.stderr b/tests/ui/match-unstable.stderr index b2bdea0..56872fb 100644 --- a/tests/ui/match-unstable.stderr +++ b/tests/ui/match-unstable.stderr @@ -3,3 +3,5 @@ error: E::Bbb should sort before E::Ccc | 15 | #[sorted] | ^^^^^^^^^ + | + = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/repeat.rs b/tests/ui/repeat.rs new file mode 100644 index 0000000..a0fe0ec --- /dev/null +++ b/tests/ui/repeat.rs @@ -0,0 +1,14 @@ +enum E { + Aaa(u8), + Bbb, +} + +#[remain::check] +fn main() { + #[sorted] + match E::Bbb { + E::Aaa(0) => {} + E::Bbb => {} + E::Aaa(_) => {} + } +} diff --git a/tests/ui/repeat.stderr b/tests/ui/repeat.stderr new file mode 100644 index 0000000..4dbf277 --- /dev/null +++ b/tests/ui/repeat.stderr @@ -0,0 +1,5 @@ +error: E::Aaa should sort before E::Bbb + --> $DIR/repeat.rs:12:9 + | +12 | E::Aaa(_) => {} + | ^^^^^^ diff --git a/tests/ui/unnamed-fields.stderr b/tests/ui/unnamed-fields.stderr index b7e28f5..618fb22 100644 --- a/tests/ui/unnamed-fields.stderr +++ b/tests/ui/unnamed-fields.stderr @@ -3,9 +3,13 @@ error: expected enum, struct, or match expression | 1 | #[remain::sorted] | ^^^^^^^^^^^^^^^^^ + | + = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) error: expected enum, struct, or match expression --> $DIR/unnamed-fields.rs:4:1 | 4 | #[remain::sorted] | ^^^^^^^^^^^^^^^^^ + | + = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/unsorted-enum.rs b/tests/ui/unsorted-enum.rs new file mode 100644 index 0000000..f4e299b --- /dev/null +++ b/tests/ui/unsorted-enum.rs @@ -0,0 +1,12 @@ +use remain::sorted; + +#[sorted] +enum E { + Aaa, + Ccc(u8), + #[unsorted] + Ddd { u: u8 }, + Bbb(u8, u8), +} + +fn main() {} diff --git a/tests/ui/unsorted-enum.stderr b/tests/ui/unsorted-enum.stderr new file mode 100644 index 0000000..249d171 --- /dev/null +++ b/tests/ui/unsorted-enum.stderr @@ -0,0 +1,5 @@ +error: Bbb should sort before Ccc + --> $DIR/unsorted-enum.rs:9:5 + | +9 | Bbb(u8, u8), + | ^^^ diff --git a/tests/ui/unsorted-match-stable.rs b/tests/ui/unsorted-match-stable.rs new file mode 100644 index 0000000..f85202f --- /dev/null +++ b/tests/ui/unsorted-match-stable.rs @@ -0,0 +1,20 @@ +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +#[remain::check] +fn main() { + let value = E::Aaa; + + #[sorted] + match value { + E::Aaa => {} + E::Ccc(_) => {} + #[unsorted] + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + } +} diff --git a/tests/ui/unsorted-match-stable.stderr b/tests/ui/unsorted-match-stable.stderr new file mode 100644 index 0000000..d04d317 --- /dev/null +++ b/tests/ui/unsorted-match-stable.stderr @@ -0,0 +1,5 @@ +error: E::Bbb should sort before E::Ccc + --> $DIR/unsorted-match-stable.rs:18:9 + | +18 | E::Bbb(_, _) => {} + | ^^^^^^ diff --git a/tests/ui/unsorted-match-unstable.rs b/tests/ui/unsorted-match-unstable.rs new file mode 100644 index 0000000..b3e95a6 --- /dev/null +++ b/tests/ui/unsorted-match-unstable.rs @@ -0,0 +1,23 @@ +#![feature(proc_macro_hygiene, stmt_expr_attributes)] + +use remain::sorted; + +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +fn main() { + let value = E::Aaa; + + #[sorted] + match value { + E::Aaa => {} + #[unsorted] + E::Ccc(_) => {} + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + } +} diff --git a/tests/ui/unsorted-match-unstable.stderr b/tests/ui/unsorted-match-unstable.stderr new file mode 100644 index 0000000..386860b --- /dev/null +++ b/tests/ui/unsorted-match-unstable.stderr @@ -0,0 +1,7 @@ +error: E::Bbb should sort before E::Ddd + --> $DIR/unsorted-match-unstable.rs:15:5 + | +15 | #[sorted] + | ^^^^^^^^^ + | + = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/unsorted-struct.rs b/tests/ui/unsorted-struct.rs new file mode 100644 index 0000000..98793f5 --- /dev/null +++ b/tests/ui/unsorted-struct.rs @@ -0,0 +1,12 @@ +use remain::sorted; + +#[sorted] +struct TestStruct { + d: usize, + #[unsorted] + c: usize, + a: usize, + b: usize, +} + +fn main() {} diff --git a/tests/ui/unsorted-struct.stderr b/tests/ui/unsorted-struct.stderr new file mode 100644 index 0000000..84509d7 --- /dev/null +++ b/tests/ui/unsorted-struct.stderr @@ -0,0 +1,5 @@ +error: a should sort before d + --> $DIR/unsorted-struct.rs:8:5 + | +8 | a: usize, + | ^ diff --git a/tests/unstable.rs b/tests/unstable.rs index 78dbd08..1c94950 100644 --- a/tests/unstable.rs +++ b/tests/unstable.rs @@ -3,28 +3,47 @@ #![feature(proc_macro_hygiene, stmt_expr_attributes)] #[remain::sorted] +#[derive(PartialEq)] pub enum TestEnum { A, + #[remain::unsorted] + Ignored, B, C, D, + __Nonexhaustive, } #[remain::sorted] +#[derive(PartialEq)] pub struct TestStruct { a: usize, b: usize, c: usize, + #[unsorted] + ignored: usize, d: usize, } #[test] -fn test_match() { +fn test_attrs() { + fn is_partial_eq<T: PartialEq>() -> bool { + true + } + + assert!(is_partial_eq::<TestEnum>()); + assert!(is_partial_eq::<TestStruct>()); +} + +#[test] +fn test_let() { let value = TestEnum::A; #[remain::sorted] let _ = match value { TestEnum::A => {} + #[remain::unsorted] + TestEnum::Ignored => {} TestEnum::B => {} TestEnum::C => {} _ => {} @@ -32,13 +51,15 @@ fn test_match() { } #[test] -fn test_let() { +fn test_match() { let value = TestEnum::A; #[remain::sorted] match value { TestEnum::A => {} TestEnum::B => {} + #[unsorted] + TestEnum::Ignored => {} TestEnum::C => {} _ => {} } |