From 73ded3c63ca2522b7bb6ca8eb7834c5adc1a3511 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 27 Dec 2018 14:42:46 +0300 Subject: dedupe literal parsers --- crates/ra_syntax/src/validation/byte_string.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_syntax/src/validation/byte_string.rs') diff --git a/crates/ra_syntax/src/validation/byte_string.rs b/crates/ra_syntax/src/validation/byte_string.rs index 7b830e97c..2f98472f4 100644 --- a/crates/ra_syntax/src/validation/byte_string.rs +++ b/crates/ra_syntax/src/validation/byte_string.rs @@ -17,15 +17,15 @@ pub(crate) fn validate_byte_string_node(node: ast::ByteString, errors: &mut Vec< let range = component.range + literal_range.start(); match component.kind { - StringComponentKind::Char(kind) => { + StringComponentKind::IgnoreNewline => { /* always valid */ } + _ => { // Chars must escape \t, \n and \r codepoints, but strings don't let text = &literal_text[component.range]; match text { "\t" | "\n" | "\r" => { /* always valid */ } - _ => byte::validate_byte_component(text, kind, range, errors), + _ => byte::validate_byte_component(text, component.kind, range, errors), } } - StringComponentKind::IgnoreNewline => { /* always valid */ } } } -- cgit v1.2.3 From 359e70d1b20402ca9cc8731909daecfab598e55d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 27 Dec 2018 15:03:18 +0300 Subject: support literal suffixes --- crates/ra_syntax/src/validation/byte_string.rs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'crates/ra_syntax/src/validation/byte_string.rs') diff --git a/crates/ra_syntax/src/validation/byte_string.rs b/crates/ra_syntax/src/validation/byte_string.rs index 2f98472f4..bf4c934a7 100644 --- a/crates/ra_syntax/src/validation/byte_string.rs +++ b/crates/ra_syntax/src/validation/byte_string.rs @@ -32,6 +32,10 @@ pub(crate) fn validate_byte_string_node(node: ast::ByteString, errors: &mut Vec< if !components.has_closing_quote { errors.push(SyntaxError::new(UnclosedString, literal_range)); } + + if let Some(range) = components.suffix { + errors.push(SyntaxError::new(InvalidSuffix, range)); + } } #[cfg(test)] -- cgit v1.2.3 From 49b0fe20ab6aa752df3764908b7c21f4b1827e52 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 27 Dec 2018 15:10:30 +0300 Subject: fix suffix ranges --- crates/ra_syntax/src/validation/byte_string.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'crates/ra_syntax/src/validation/byte_string.rs') diff --git a/crates/ra_syntax/src/validation/byte_string.rs b/crates/ra_syntax/src/validation/byte_string.rs index bf4c934a7..f7a4fb156 100644 --- a/crates/ra_syntax/src/validation/byte_string.rs +++ b/crates/ra_syntax/src/validation/byte_string.rs @@ -34,7 +34,10 @@ pub(crate) fn validate_byte_string_node(node: ast::ByteString, errors: &mut Vec< } if let Some(range) = components.suffix { - errors.push(SyntaxError::new(InvalidSuffix, range)); + errors.push(SyntaxError::new( + InvalidSuffix, + range + literal_range.start(), + )); } } -- cgit v1.2.3