From 49b0fe20ab6aa752df3764908b7c21f4b1827e52 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov <aleksey.kladov@gmail.com> Date: Thu, 27 Dec 2018 15:10:30 +0300 Subject: fix suffix ranges --- crates/ra_syntax/src/validation/byte.rs | 5 +- crates/ra_syntax/src/validation/byte_string.rs | 5 +- crates/ra_syntax/src/validation/char.rs | 5 +- crates/ra_syntax/src/validation/string.rs | 5 +- .../tests/data/parser/err/0030_string_suffixes.rs | 6 ++ .../tests/data/parser/err/0030_string_suffixes.txt | 73 ++++++++++++++++++++++ 6 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt (limited to 'crates/ra_syntax') diff --git a/crates/ra_syntax/src/validation/byte.rs b/crates/ra_syntax/src/validation/byte.rs index 2f9b7fac7..d0897eeed 100644 --- a/crates/ra_syntax/src/validation/byte.rs +++ b/crates/ra_syntax/src/validation/byte.rs @@ -28,7 +28,10 @@ pub(super) fn validate_byte_node(node: ast::Byte, errors: &mut Vec<SyntaxError>) } if let Some(range) = components.suffix { - errors.push(SyntaxError::new(InvalidSuffix, range)); + errors.push(SyntaxError::new( + InvalidSuffix, + range + literal_range.start(), + )); } if len == 0 { 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(), + )); } } diff --git a/crates/ra_syntax/src/validation/char.rs b/crates/ra_syntax/src/validation/char.rs index 50184aaf8..19cd3830f 100644 --- a/crates/ra_syntax/src/validation/char.rs +++ b/crates/ra_syntax/src/validation/char.rs @@ -31,7 +31,10 @@ pub(super) fn validate_char_node(node: ast::Char, errors: &mut Vec<SyntaxError>) } if let Some(range) = components.suffix { - errors.push(SyntaxError::new(InvalidSuffix, range)); + errors.push(SyntaxError::new( + InvalidSuffix, + range + literal_range.start(), + )); } if len == 0 { diff --git a/crates/ra_syntax/src/validation/string.rs b/crates/ra_syntax/src/validation/string.rs index ff1fb6edc..1371bb1f0 100644 --- a/crates/ra_syntax/src/validation/string.rs +++ b/crates/ra_syntax/src/validation/string.rs @@ -29,7 +29,10 @@ pub(crate) fn validate_string_node(node: ast::String, errors: &mut Vec<SyntaxErr } if let Some(range) = components.suffix { - errors.push(SyntaxError::new(InvalidSuffix, range)); + errors.push(SyntaxError::new( + InvalidSuffix, + range + literal_range.start(), + )); } } diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs new file mode 100644 index 000000000..261aad1fb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs @@ -0,0 +1,6 @@ +fn main() { + let _ = 'c'u32; + let _ = "string"invalid; + let _ = b'b'_suff; + let _ = b"bs"invalid; +} diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt new file mode 100644 index 000000000..dc10e9ee7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt @@ -0,0 +1,73 @@ +SOURCE_FILE@[0; 112) + FN_DEF@[0; 111) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 7) + IDENT@[3; 7) "main" + PARAM_LIST@[7; 9) + L_PAREN@[7; 8) + R_PAREN@[8; 9) + WHITESPACE@[9; 10) + BLOCK@[10; 111) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + LET_STMT@[16; 27) + LET_KW@[16; 19) + WHITESPACE@[19; 20) + PLACEHOLDER_PAT@[20; 21) + UNDERSCORE@[20; 21) + WHITESPACE@[21; 22) + EQ@[22; 23) + WHITESPACE@[23; 24) + LITERAL@[24; 27) + CHAR@[24; 27) + err: `expected SEMI` + EXPR_STMT@[27; 31) + PATH_EXPR@[27; 30) + PATH@[27; 30) + PATH_SEGMENT@[27; 30) + NAME_REF@[27; 30) + IDENT@[27; 30) "u32" + SEMI@[30; 31) + WHITESPACE@[31; 36) + LET_STMT@[36; 60) + LET_KW@[36; 39) + WHITESPACE@[39; 40) + PLACEHOLDER_PAT@[40; 41) + UNDERSCORE@[40; 41) + WHITESPACE@[41; 42) + EQ@[42; 43) + WHITESPACE@[43; 44) + LITERAL@[44; 59) + STRING@[44; 59) + err: `Invalid literal suffix` + SEMI@[59; 60) + WHITESPACE@[60; 65) + LET_STMT@[65; 83) + LET_KW@[65; 68) + WHITESPACE@[68; 69) + PLACEHOLDER_PAT@[69; 70) + UNDERSCORE@[69; 70) + WHITESPACE@[70; 71) + EQ@[71; 72) + WHITESPACE@[72; 73) + LITERAL@[73; 82) + BYTE@[73; 82) + err: `Invalid literal suffix` + SEMI@[82; 83) + WHITESPACE@[83; 88) + LET_STMT@[88; 109) + LET_KW@[88; 91) + WHITESPACE@[91; 92) + PLACEHOLDER_PAT@[92; 93) + UNDERSCORE@[92; 93) + WHITESPACE@[93; 94) + EQ@[94; 95) + WHITESPACE@[95; 96) + LITERAL@[96; 108) + BYTE_STRING@[96; 108) + err: `Invalid literal suffix` + SEMI@[108; 109) + WHITESPACE@[109; 110) + R_CURLY@[110; 111) + WHITESPACE@[111; 112) -- cgit v1.2.3