mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 13:48:50 +00:00
no escape
This commit is contained in:
parent
e8dfb92641
commit
a4f140b0f3
7 changed files with 39 additions and 17 deletions
|
@ -15,23 +15,24 @@ pub(crate) fn is_string_literal_start(c: char, c1: Option<char>, c2: Option<char
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn scan_char(ptr: &mut Ptr) {
|
pub(crate) fn scan_char(ptr: &mut Ptr) {
|
||||||
loop {
|
while let Some(c) = ptr.next() {
|
||||||
if ptr.next_is('\\') {
|
match c {
|
||||||
|
'\\' => {
|
||||||
ptr.bump();
|
ptr.bump();
|
||||||
if ptr.next_is('\\') || ptr.next_is('\'') {
|
if ptr.next_is('\\') || ptr.next_is('\'') {
|
||||||
ptr.bump();
|
ptr.bump();
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
if ptr.next_is('\'') {
|
'\'' => {
|
||||||
ptr.bump();
|
ptr.bump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ptr.next_is('\n') {
|
'\n' => return,
|
||||||
break;
|
_ => {
|
||||||
}
|
|
||||||
ptr.bump();
|
ptr.bump();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind {
|
pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind {
|
||||||
|
@ -56,10 +57,22 @@ pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn scan_string(ptr: &mut Ptr) {
|
pub(crate) fn scan_string(ptr: &mut Ptr) {
|
||||||
while let Some(c) = ptr.bump() {
|
while let Some(c) = ptr.next() {
|
||||||
if c == '"' {
|
match c {
|
||||||
|
'\\' => {
|
||||||
|
ptr.bump();
|
||||||
|
if ptr.next_is('\\') || ptr.next_is('"') {
|
||||||
|
ptr.bump();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'"' => {
|
||||||
|
ptr.bump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_ => {
|
||||||
|
ptr.bump();
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
"hello" r"world"
|
"hello" r"world" "\n\"\\no escape" "multi
|
||||||
|
line"
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
STRING 7 "\"hello\""
|
STRING 7 "\"hello\""
|
||||||
WHITESPACE 1 " "
|
WHITESPACE 1 " "
|
||||||
RAW_STRING 8 "r\"world\""
|
RAW_STRING 8 "r\"world\""
|
||||||
|
WHITESPACE 1 " "
|
||||||
|
STRING 17 "\"\\n\\\"\\\\no escape\""
|
||||||
|
WHITESPACE 1 " "
|
||||||
|
STRING 12 "\"multi\nline\""
|
||||||
WHITESPACE 1 "\n"
|
WHITESPACE 1 "\n"
|
||||||
|
|
1
crates/libsyntax2/tests/data/lexer/0014_unclosed_char.rs
Normal file
1
crates/libsyntax2/tests/data/lexer/0014_unclosed_char.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
'1
|
|
@ -0,0 +1 @@
|
||||||
|
CHAR 2 "\'1"
|
|
@ -0,0 +1 @@
|
||||||
|
"hello
|
|
@ -0,0 +1 @@
|
||||||
|
STRING 7 "\"hello\n"
|
Loading…
Reference in a new issue