mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-08-19 01:50:32 +00:00
Support c string literals
This commit is contained in:
parent
099b5b3b15
commit
4b577e2bc8
21 changed files with 176 additions and 34 deletions
|
@ -12,6 +12,8 @@ use super::*;
|
|||
// let _ = r"d";
|
||||
// let _ = b"e";
|
||||
// let _ = br"f";
|
||||
// let _ = c"g";
|
||||
// let _ = cr"h";
|
||||
// }
|
||||
pub(crate) const LITERAL_FIRST: TokenSet = TokenSet::new(&[
|
||||
T![true],
|
||||
|
@ -22,6 +24,7 @@ pub(crate) const LITERAL_FIRST: TokenSet = TokenSet::new(&[
|
|||
CHAR,
|
||||
STRING,
|
||||
BYTE_STRING,
|
||||
C_STRING,
|
||||
]);
|
||||
|
||||
pub(crate) fn literal(p: &mut Parser<'_>) -> Option<CompletedMarker> {
|
||||
|
|
|
@ -28,6 +28,7 @@ const GENERIC_ARG_FIRST: TokenSet = TokenSet::new(&[
|
|||
BYTE,
|
||||
STRING,
|
||||
BYTE_STRING,
|
||||
C_STRING,
|
||||
])
|
||||
.union(types::TYPE_FIRST);
|
||||
|
||||
|
|
|
@ -277,7 +277,7 @@ impl<'a> Converter<'a> {
|
|||
if !terminated {
|
||||
err = "Missing trailing `\"` symbol to terminate the string literal";
|
||||
}
|
||||
STRING
|
||||
C_STRING
|
||||
}
|
||||
rustc_lexer::LiteralKind::RawStr { n_hashes } => {
|
||||
if n_hashes.is_none() {
|
||||
|
@ -295,7 +295,7 @@ impl<'a> Converter<'a> {
|
|||
if n_hashes.is_none() {
|
||||
err = "Invalid raw string literal";
|
||||
}
|
||||
STRING
|
||||
C_STRING
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -131,6 +131,30 @@ SOURCE_FILE
|
|||
LITERAL
|
||||
BYTE_STRING "br\"f\""
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
LET_STMT
|
||||
LET_KW "let"
|
||||
WHITESPACE " "
|
||||
WILDCARD_PAT
|
||||
UNDERSCORE "_"
|
||||
WHITESPACE " "
|
||||
EQ "="
|
||||
WHITESPACE " "
|
||||
LITERAL
|
||||
C_STRING "c\"g\""
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
LET_STMT
|
||||
LET_KW "let"
|
||||
WHITESPACE " "
|
||||
WILDCARD_PAT
|
||||
UNDERSCORE "_"
|
||||
WHITESPACE " "
|
||||
EQ "="
|
||||
WHITESPACE " "
|
||||
LITERAL
|
||||
C_STRING "cr\"h\""
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
|
|
|
@ -9,4 +9,6 @@ fn foo() {
|
|||
let _ = r"d";
|
||||
let _ = b"e";
|
||||
let _ = br"f";
|
||||
let _ = c"g";
|
||||
let _ = cr"h";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue