diff options
| author | Esteban Kuber <esteban@kuber.com.ar> | 2021-08-29 08:34:23 +0000 |
|---|---|---|
| committer | Esteban Kuber <esteban@kuber.com.ar> | 2021-11-23 20:35:07 +0000 |
| commit | 5a68abb0943e687cc6c8165376b4ed6deda17db3 (patch) | |
| tree | d3fb75d0d5d4be7be5e4e1cf665c94da12ed647b /src/test/ui/parser | |
| parent | 311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b (diff) | |
| download | rust-5a68abb0943e687cc6c8165376b4ed6deda17db3.tar.gz rust-5a68abb0943e687cc6c8165376b4ed6deda17db3.zip | |
Tokenize emoji as if they were valid indentifiers
In the lexer, consider emojis to be valid identifiers and reject them later to avoid knock down parse errors.
Diffstat (limited to 'src/test/ui/parser')
| -rw-r--r-- | src/test/ui/parser/emoji-identifiers.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/parser/emoji-identifiers.stderr | 72 |
2 files changed, 88 insertions, 0 deletions
diff --git a/src/test/ui/parser/emoji-identifiers.rs b/src/test/ui/parser/emoji-identifiers.rs new file mode 100644 index 00000000000..2f4df4cf216 --- /dev/null +++ b/src/test/ui/parser/emoji-identifiers.rs @@ -0,0 +1,16 @@ +struct ABig๐ฉโ๐ฉโ๐งโ๐งFamily; //~ ERROR identifiers cannot contain emojis +struct ๐; //~ ERROR identifiers cannot contain emojis +impl ๐ { + fn full_of_โจ() -> ๐ { //~ ERROR identifiers cannot contain emojis + ๐ + } +} +fn i_like_to_๐ _a_lot() -> ๐ { //~ ERROR identifiers cannot contain emojis + ๐::full_ofโจ() //~ ERROR no function or associated item named `full_ofโจ` found for struct `๐` + //~^ ERROR identifiers cannot contain emojis +} +fn main() { + let _ = i_like_to_๐_a_lot(); //~ ERROR cannot find function `i_like_to_๐_a_lot` in this scope + //~^ ERROR identifiers cannot contain emojis +} + diff --git a/src/test/ui/parser/emoji-identifiers.stderr b/src/test/ui/parser/emoji-identifiers.stderr new file mode 100644 index 00000000000..3b17bb01de9 --- /dev/null +++ b/src/test/ui/parser/emoji-identifiers.stderr @@ -0,0 +1,72 @@ +error[E0425]: cannot find function `i_like_to_๐_a_lot` in this scope + --> $DIR/emoji-identifiers.rs:13:13 + | +LL | fn i_like_to_๐ _a_lot() -> ๐ { + | ----------------------------- similarly named function `i_like_to_๐ _a_lot` defined here +... +LL | let _ = i_like_to_๐_a_lot(); + | ^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `i_like_to_๐ _a_lot` + +error: identifiers cannot contain emojis: `i_like_to_๐_a_lot` + --> $DIR/emoji-identifiers.rs:13:13 + | +LL | let _ = i_like_to_๐_a_lot(); + | ^^^^^^^^^^^^^^^^^^ + +error: identifiers cannot contain emojis: `full_of_โจ` + --> $DIR/emoji-identifiers.rs:4:8 + | +LL | fn full_of_โจ() -> ๐ { + | ^^^^^^^^^^ + +error: identifiers cannot contain emojis: `full_ofโจ` + --> $DIR/emoji-identifiers.rs:9:8 + | +LL | ๐::full_ofโจ() + | ^^^^^^^^^ + +error: identifiers cannot contain emojis: `๐` + --> $DIR/emoji-identifiers.rs:2:8 + | +LL | struct ๐; + | ^^ +LL | impl ๐ { + | ^^ +LL | fn full_of_โจ() -> ๐ { + | ^^ +LL | ๐ + | ^^ +... +LL | fn i_like_to_๐ _a_lot() -> ๐ { + | ^^ +LL | ๐::full_ofโจ() + | ^^ + +error: identifiers cannot contain emojis: `i_like_to_๐ _a_lot` + --> $DIR/emoji-identifiers.rs:8:4 + | +LL | fn i_like_to_๐ _a_lot() -> ๐ { + | ^^^^^^^^^^^^^^^^^^ + +error: identifiers cannot contain emojis: `ABig๐ฉโ๐ฉโ๐งโ๐งFamily` + --> $DIR/emoji-identifiers.rs:1:8 + | +LL | struct ABig๐ฉโ๐ฉโ๐งโ๐งFamily; + | ^^^^^^^^^^^^^^^^^^ + +error[E0599]: no function or associated item named `full_ofโจ` found for struct `๐` in the current scope + --> $DIR/emoji-identifiers.rs:9:8 + | +LL | struct ๐; + | ---------- function or associated item `full_ofโจ` not found for this +... +LL | ๐::full_ofโจ() + | ^^^^^^^^^ + | | + | function or associated item not found in `๐` + | help: there is an associated function with a similar name: `full_of_โจ` + +error: aborting due to 8 previous errors + +Some errors have detailed explanations: E0425, E0599. +For more information about an error, try `rustc --explain E0425`. |
