Improve diagnostics if a character literal contains combining marks
This commit is contained in:
parent
497ee321af
commit
0d8245b5b1
4 changed files with 137 additions and 14 deletions
21
src/test/ui/parser/unicode-character-literal.fixed
Normal file
21
src/test/ui/parser/unicode-character-literal.fixed
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// Regression test for #88684: Improve diagnostics for combining marks
|
||||
// in character literals.
|
||||
|
||||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
let _spade = "♠️";
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `♠` is followed by the combining mark `\u{fe0f}`
|
||||
//~| HELP: if you meant to write a `str` literal, use double quotes
|
||||
|
||||
let _s = "ṩ̂̊";
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `s` is followed by the combining marks `\u{323}\u{307}\u{302}\u{30a}`
|
||||
//~| HELP: if you meant to write a `str` literal, use double quotes
|
||||
|
||||
let _a = 'Å';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `A` is followed by the combining mark `\u{30a}`
|
||||
//~| HELP: consider using the normalized form `\u{c5}` of this character
|
||||
}
|
||||
21
src/test/ui/parser/unicode-character-literal.rs
Normal file
21
src/test/ui/parser/unicode-character-literal.rs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// Regression test for #88684: Improve diagnostics for combining marks
|
||||
// in character literals.
|
||||
|
||||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
let _spade = '♠️';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `♠` is followed by the combining mark `\u{fe0f}`
|
||||
//~| HELP: if you meant to write a `str` literal, use double quotes
|
||||
|
||||
let _s = 'ṩ̂̊';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `s` is followed by the combining marks `\u{323}\u{307}\u{302}\u{30a}`
|
||||
//~| HELP: if you meant to write a `str` literal, use double quotes
|
||||
|
||||
let _a = 'Å';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
//~| NOTE: this `A` is followed by the combining mark `\u{30a}`
|
||||
//~| HELP: consider using the normalized form `\u{c5}` of this character
|
||||
}
|
||||
48
src/test/ui/parser/unicode-character-literal.stderr
Normal file
48
src/test/ui/parser/unicode-character-literal.stderr
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
error: character literal may only contain one codepoint
|
||||
--> $DIR/unicode-character-literal.rs:7:18
|
||||
|
|
||||
LL | let _spade = '♠️';
|
||||
| ^^^
|
||||
|
|
||||
note: this `♠` is followed by the combining mark `\u{fe0f}`
|
||||
--> $DIR/unicode-character-literal.rs:7:19
|
||||
|
|
||||
LL | let _spade = '♠️';
|
||||
| ^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
LL | let _spade = "♠️";
|
||||
| ~~~
|
||||
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/unicode-character-literal.rs:12:14
|
||||
|
|
||||
LL | let _s = 'ṩ̂̊';
|
||||
| ^^^
|
||||
|
|
||||
note: this `s` is followed by the combining marks `\u{323}\u{307}\u{302}\u{30a}`
|
||||
--> $DIR/unicode-character-literal.rs:12:15
|
||||
|
|
||||
LL | let _s = 'ṩ̂̊';
|
||||
| ^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
LL | let _s = "ṩ̂̊";
|
||||
| ~~~
|
||||
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/unicode-character-literal.rs:17:14
|
||||
|
|
||||
LL | let _a = 'Å';
|
||||
| ^-^
|
||||
| |
|
||||
| help: consider using the normalized form `\u{c5}` of this character: `Å`
|
||||
|
|
||||
note: this `A` is followed by the combining mark `\u{30a}`
|
||||
--> $DIR/unicode-character-literal.rs:17:15
|
||||
|
|
||||
LL | let _a = 'Å';
|
||||
| ^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue