fix suffix ranges

This commit is contained in:
Aleksey Kladov 2018-12-27 15:10:30 +03:00
parent a912b261d3
commit 49b0fe20ab
6 changed files with 95 additions and 4 deletions

View 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 {

View 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(),
));
}
}

View 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 {

View 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(),
));
}
}

View file

@ -0,0 +1,6 @@
fn main() {
let _ = 'c'u32;
let _ = "string"invalid;
let _ = b'b'_suff;
let _ = b"bs"invalid;
}

View file

@ -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)