about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCharles Lew <crlf0710@gmail.com>2020-06-28 23:28:43 +0800
committerCharles Lew <crlf0710@gmail.com>2020-06-28 23:28:43 +0800
commite8f5785bfc3123b67e79e509c76259062e214b97 (patch)
tree5b317206ef11af573d5b8e7fb7a648b7af59fb68
parent25687caa2e4e35b31c29e28998710670e9d54ee9 (diff)
downloadrust-e8f5785bfc3123b67e79e509c76259062e214b97.tar.gz
rust-e8f5785bfc3123b67e79e509c76259062e214b97.zip
Split and expand nonstandard-style lints unicode unit test.
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-1.rs50
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr50
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-2.rs30
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr20
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-3.rs25
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr14
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode.rs16
7 files changed, 189 insertions, 16 deletions
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs
new file mode 100644
index 00000000000..4f90bd98c63
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs
@@ -0,0 +1,50 @@
+#![allow(dead_code)]
+
+#![forbid(non_camel_case_types)]
+#![feature(non_ascii_idents)]
+
+// Some scripts (e.g., hiragana) don't have a concept of
+// upper/lowercase
+
+// 1. non_camel_case_types
+
+// Can start with non-lowercase letter
+struct Θχ;
+struct ヒa;
+
+struct χa;
+//~^ ERROR type `χa` should have an upper camel case name
+
+// If there's already leading or trailing underscores, they get trimmed before checking.
+// This is fine:
+struct _ヒb;
+
+// This is not:
+struct __χa;
+//~^ ERROR type `__χa` should have an upper camel case name
+
+// Besides this, we cannot have two continous underscores in the middle.
+
+struct 对__否;
+//~^ ERROR type `对__否` should have an upper camel case name
+
+struct ヒ__χ;
+//~^ ERROR type `ヒ__χ` should have an upper camel case name
+
+// also cannot have lowercase letter next to a underscore.
+// so this triggers the lint:
+
+struct Hello_你好;
+//~^ ERROR type `Hello_你好` should have an upper camel case name
+
+struct Hello_World;
+//~^ ERROR type `Hello_World` should have an upper camel case name
+
+struct 你_ӟ;
+//~^ ERROR type `你_ӟ` should have an upper camel case name
+
+// and this is ok:
+
+struct 你_好;
+
+fn main() {}
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr
new file mode 100644
index 00000000000..37100265659
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr
@@ -0,0 +1,50 @@
+error: type `χa` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:15:8
+   |
+LL | struct χa;
+   |        ^^ help: convert the identifier to upper camel case: `Χa`
+   |
+note: the lint level is defined here
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:3:11
+   |
+LL | #![forbid(non_camel_case_types)]
+   |           ^^^^^^^^^^^^^^^^^^^^
+
+error: type `__χa` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:23:8
+   |
+LL | struct __χa;
+   |        ^^^^ help: convert the identifier to upper camel case: `Χa`
+
+error: type `对__否` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:28:8
+   |
+LL | struct 对__否;
+   |        ^^^^^^ help: convert the identifier to upper camel case: `对_否`
+
+error: type `ヒ__χ` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:31:8
+   |
+LL | struct ヒ__χ;
+   |        ^^^^^ help: convert the identifier to upper camel case: `ヒΧ`
+
+error: type `Hello_你好` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:37:8
+   |
+LL | struct Hello_你好;
+   |        ^^^^^^^^^^ help: convert the identifier to upper camel case: `Hello你好`
+
+error: type `Hello_World` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:40:8
+   |
+LL | struct Hello_World;
+   |        ^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloWorld`
+
+error: type `你_ӟ` should have an upper camel case name
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:43:8
+   |
+LL | struct 你_ӟ;
+   |        ^^^^ help: convert the identifier to upper camel case: `你Ӟ`
+
+error: aborting due to 7 previous errors
+
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs
new file mode 100644
index 00000000000..813e0ea5c57
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs
@@ -0,0 +1,30 @@
+#![allow(dead_code)]
+
+#![forbid(non_snake_case)]
+#![feature(non_ascii_idents)]
+
+// Some scripts (e.g., hiragana) don't have a concept of
+// upper/lowercase
+
+// 2. non_snake_case
+
+// Can only use non-uppercase letters.
+// So this works:
+
+fn 编程() {}
+
+// but this doesn't:
+
+fn Ц() {}
+//~^ ERROR function `Ц` should have a snake case name
+
+// besides this, you cannot use continous underscores in the middle
+
+fn 分__隔() {}
+//~^ ERROR function `分__隔` should have a snake case name
+
+// but you can use them both at the beginning and at the end.
+
+fn _______不_连_续_的_存_在_______() {}
+
+fn main() {}
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr
new file mode 100644
index 00000000000..0b309e315a4
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr
@@ -0,0 +1,20 @@
+error: function `Ц` should have a snake case name
+  --> $DIR/lint-nonstandard-style-unicode-2.rs:18:4
+   |
+LL | fn Ц() {}
+   |    ^ help: convert the identifier to snake case: `ц`
+   |
+note: the lint level is defined here
+  --> $DIR/lint-nonstandard-style-unicode-2.rs:3:11
+   |
+LL | #![forbid(non_snake_case)]
+   |           ^^^^^^^^^^^^^^
+
+error: function `分__隔` should have a snake case name
+  --> $DIR/lint-nonstandard-style-unicode-2.rs:23:4
+   |
+LL | fn 分__隔() {}
+   |    ^^^^^^ help: convert the identifier to snake case: `分_隔`
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs
new file mode 100644
index 00000000000..b17c2de39a0
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs
@@ -0,0 +1,25 @@
+#![allow(dead_code)]
+
+#![forbid(non_upper_case_globals)]
+#![feature(non_ascii_idents)]
+
+// Some scripts (e.g., hiragana) don't have a concept of
+// upper/lowercase
+
+// 3. non_upper_case_globals
+
+// Can only use non-lowercase letters.
+// So this works:
+
+static ラ: usize = 0;
+
+// but this doesn't:
+
+static τεχ: f32 = 3.14159265;
+//~^ ERROR static variable `τεχ` should have an upper case name
+
+// This has no limit at all on underscore usages.
+
+static __密__封__线__内__禁__止__答__题__: bool = true;
+
+fn main() {}
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr
new file mode 100644
index 00000000000..44bd5ad55ff
--- /dev/null
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr
@@ -0,0 +1,14 @@
+error: static variable `τεχ` should have an upper case name
+  --> $DIR/lint-nonstandard-style-unicode-3.rs:18:8
+   |
+LL | static τεχ: f32 = 3.14159265;
+   |        ^^^ help: convert the identifier to upper case: `ΤΕΧ`
+   |
+note: the lint level is defined here
+  --> $DIR/lint-nonstandard-style-unicode-3.rs:3:11
+   |
+LL | #![forbid(non_upper_case_globals)]
+   |           ^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode.rs b/src/test/ui/lint/lint-nonstandard-style-unicode.rs
deleted file mode 100644
index 9f16cb20fb3..00000000000
--- a/src/test/ui/lint/lint-nonstandard-style-unicode.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// check-pass
-
-#![allow(dead_code)]
-
-#![forbid(non_camel_case_types)]
-#![forbid(non_upper_case_globals)]
-#![feature(non_ascii_idents)]
-
-// Some scripts (e.g., hiragana) don't have a concept of
-// upper/lowercase
-
-struct ヒ;
-
-static ラ: usize = 0;
-
-pub fn main() {}