aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compiletest.rs2
-rw-r--r--tests/order.rs57
-rw-r--r--tests/stable.rs33
-rw-r--r--tests/ui/let-unstable.stderr2
-rw-r--r--tests/ui/match-unstable.stderr2
-rw-r--r--tests/ui/repeat.rs14
-rw-r--r--tests/ui/repeat.stderr5
-rw-r--r--tests/ui/unnamed-fields.stderr4
-rw-r--r--tests/ui/unsorted-enum.rs12
-rw-r--r--tests/ui/unsorted-enum.stderr5
-rw-r--r--tests/ui/unsorted-match-stable.rs20
-rw-r--r--tests/ui/unsorted-match-stable.stderr5
-rw-r--r--tests/ui/unsorted-match-unstable.rs23
-rw-r--r--tests/ui/unsorted-match-unstable.stderr7
-rw-r--r--tests/ui/unsorted-struct.rs12
-rw-r--r--tests/ui/unsorted-struct.stderr5
-rw-r--r--tests/unstable.rs25
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 => {}
_ => {}
}