]> git.lizzy.rs Git - rust.git/commitdiff
fix suffix ranges
authorAleksey Kladov <aleksey.kladov@gmail.com>
Thu, 27 Dec 2018 12:10:30 +0000 (15:10 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Thu, 27 Dec 2018 12:10:30 +0000 (15:10 +0300)
crates/ra_syntax/src/validation/byte.rs
crates/ra_syntax/src/validation/byte_string.rs
crates/ra_syntax/src/validation/char.rs
crates/ra_syntax/src/validation/string.rs
crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.rs [new file with mode: 0644]
crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt [new file with mode: 0644]

index 2f9b7fac7db541bbac8d5c9bb267dfbeed3cfc97..d0897eeedb6f9d4bca775421e1d4c0c70cdd1e16 100644 (file)
@@ -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 {
index bf4c934a7e7d34b137fe09547522fba86950a786..f7a4fb156af3ef77d0ff58d1532877c5d7b75feb 100644 (file)
@@ -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(),
+        ));
     }
 }
 
index 50184aaf8151d1667032b3cd323c66e8ccc75552..19cd3830f09a57f4a5ff95b3f890a77d89434d48 100644 (file)
@@ -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 {
index ff1fb6edc4e621996030967ece896cbe9233e4c3..1371bb1f0d5ac0af7487b9f3bde6d94a6f6e64b7 100644 (file)
@@ -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 (file)
index 0000000..261aad1
--- /dev/null
@@ -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 (file)
index 0000000..dc10e9e
--- /dev/null
@@ -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)