Auto merge of #57651 - JohnTitor:give-char-type, r=estebank
Implement new literal type `Err` Fixes #57384 I removed `return Ok`, otherwise, two errors occur. Any solutions? r? @estebank
This commit is contained in:
commit
2ab5d8ac44
25 changed files with 165 additions and 58 deletions
|
|
@ -1,4 +1,4 @@
|
|||
// This test needs to the last one appearing in this file as it kills the parser
|
||||
static c: char =
|
||||
'nope' //~ ERROR: character literal may only contain one codepoint: 'nope'
|
||||
'nope' //~ ERROR: character literal may only contain one codepoint
|
||||
;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
error: character literal may only contain one codepoint: 'nope'
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-2.rs:3:5
|
||||
|
|
||||
LL | 'nope' //~ ERROR: character literal may only contain one codepoint: 'nope'
|
||||
LL | 'nope' //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
error[E0601]: `main` function not found in crate `lex_bad_char_literals_2`
|
||||
|
|
||||
= note: consider adding a `main` function to `$DIR/lex-bad-char-literals-2.rs`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0601`.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// This test needs to the last one appearing in this file as it kills the parser
|
||||
static c: char =
|
||||
'●●' //~ ERROR: character literal may only contain one codepoint
|
||||
//~| ERROR: mismatched types
|
||||
;
|
||||
static c: char = '●●';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
|
||||
fn main() {}
|
||||
fn main() {
|
||||
let ch: &str = '●●';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-3.rs:3:5
|
||||
--> $DIR/lex-bad-char-literals-3.rs:1:18
|
||||
|
|
||||
LL | '●●' //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^
|
||||
LL | static c: char = '●●';
|
||||
| ^^^^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
LL | "●●" //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^
|
||||
LL | static c: char = "●●";
|
||||
| ^^^^
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/lex-bad-char-literals-3.rs:3:5
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-3.rs:5:20
|
||||
|
|
||||
LL | '●●' //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^ expected char, found reference
|
||||
LL | let ch: &str = '●●';
|
||||
| ^^^^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
= note: expected type `char`
|
||||
found type `&'static str`
|
||||
LL | let ch: &str = "●●";
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// This test needs to the last one appearing in this file as it kills the parser
|
||||
static c: char =
|
||||
'● //~ ERROR: character literal may only contain one codepoint: '●
|
||||
'● //~ ERROR: character literal may only contain one codepoint
|
||||
;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
error: character literal may only contain one codepoint: '●
|
||||
--> $DIR/lex-bad-char-literals-4.rs:4:5
|
||||
|
|
||||
LL | '● //~ ERROR: character literal may only contain one codepoint: '●
|
||||
LL | '● //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
//
|
||||
// This test needs to the last one appearing in this file as it kills the parser
|
||||
static c: char =
|
||||
'\x10\x10' //~ ERROR: character literal may only contain one codepoint
|
||||
//~| ERROR: mismatched types
|
||||
;
|
||||
static c: char = '\x10\x10';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
|
||||
fn main() {}
|
||||
fn main() {
|
||||
let ch: &str = '\x10\x10';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-5.rs:4:5
|
||||
--> $DIR/lex-bad-char-literals-5.rs:1:18
|
||||
|
|
||||
LL | '/x10/x10' //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^^^^^^^
|
||||
LL | static c: char = '/x10/x10';
|
||||
| ^^^^^^^^^^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
LL | "/x10/x10" //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^^^^^^^
|
||||
LL | static c: char = "/x10/x10";
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/lex-bad-char-literals-5.rs:4:5
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-5.rs:5:20
|
||||
|
|
||||
LL | '/x10/x10' //~ ERROR: character literal may only contain one codepoint
|
||||
| ^^^^^^^^^^ expected char, found reference
|
||||
LL | let ch: &str = '/x10/x10';
|
||||
| ^^^^^^^^^^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
= note: expected type `char`
|
||||
found type `&'static str`
|
||||
LL | let ch: &str = "/x10/x10";
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
|
|||
17
src/test/ui/parser/lex-bad-char-literals-6.rs
Normal file
17
src/test/ui/parser/lex-bad-char-literals-6.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
fn main() {
|
||||
let x: &str = 'ab';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
let y: char = 'cd';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
let z = 'ef';
|
||||
//~^ ERROR: character literal may only contain one codepoint
|
||||
|
||||
if x == y {}
|
||||
//~^ ERROR: can't compare `&str` with `char`
|
||||
if y == z {} // no error here
|
||||
if x == z {}
|
||||
//~^ ERROR: can't compare `&str` with `char`
|
||||
|
||||
let a: usize = "";
|
||||
//~^ ERROR: mismatched types
|
||||
}
|
||||
47
src/test/ui/parser/lex-bad-char-literals-6.stderr
Normal file
47
src/test/ui/parser/lex-bad-char-literals-6.stderr
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-6.rs:2:19
|
||||
|
|
||||
LL | let x: &str = 'ab';
|
||||
| ^^^^
|
||||
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-6.rs:4:19
|
||||
|
|
||||
LL | let y: char = 'cd';
|
||||
| ^^^^
|
||||
|
||||
error: character literal may only contain one codepoint
|
||||
--> $DIR/lex-bad-char-literals-6.rs:6:13
|
||||
|
|
||||
LL | let z = 'ef';
|
||||
| ^^^^
|
||||
|
||||
error[E0277]: can't compare `&str` with `char`
|
||||
--> $DIR/lex-bad-char-literals-6.rs:9:10
|
||||
|
|
||||
LL | if x == y {}
|
||||
| ^^ no implementation for `&str == char`
|
||||
|
|
||||
= help: the trait `std::cmp::PartialEq<char>` is not implemented for `&str`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/lex-bad-char-literals-6.rs:15:20
|
||||
|
|
||||
LL | let a: usize = "";
|
||||
| ^^ expected usize, found reference
|
||||
|
|
||||
= note: expected type `usize`
|
||||
found type `&'static str`
|
||||
|
||||
error[E0277]: can't compare `&str` with `char`
|
||||
--> $DIR/lex-bad-char-literals-6.rs:12:10
|
||||
|
|
||||
LL | if x == z {}
|
||||
| ^^ no implementation for `&str == char`
|
||||
|
|
||||
= help: the trait `std::cmp::PartialEq<char>` is not implemented for `&str`
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
Some errors occurred: E0277, E0308.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
println!("●●");
|
||||
//~^ ERROR character literal may only contain one codepoint
|
||||
println!("{}", "●●"); //~ ERROR character literal may only contain one codepoint
|
||||
//~^ ERROR format argument must be a string literal
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-rustfix
|
||||
|
||||
fn main() {
|
||||
println!('●●');
|
||||
//~^ ERROR character literal may only contain one codepoint
|
||||
println!('●●'); //~ ERROR character literal may only contain one codepoint
|
||||
//~^ ERROR format argument must be a string literal
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,22 @@
|
|||
error: character literal may only contain one codepoint
|
||||
--> $DIR/str-as-char.rs:4:14
|
||||
|
|
||||
LL | println!('●●');
|
||||
LL | println!('●●'); //~ ERROR character literal may only contain one codepoint
|
||||
| ^^^^
|
||||
help: if you meant to write a `str` literal, use double quotes
|
||||
|
|
||||
LL | println!("●●");
|
||||
LL | println!("●●"); //~ ERROR character literal may only contain one codepoint
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
error: format argument must be a string literal
|
||||
--> $DIR/str-as-char.rs:4:14
|
||||
|
|
||||
LL | println!('●●'); //~ ERROR character literal may only contain one codepoint
|
||||
| ^^^^
|
||||
help: you might be missing a string literal to format with
|
||||
|
|
||||
LL | println!("{}", '●●'); //~ ERROR character literal may only contain one codepoint
|
||||
| ^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue