Don't get stuck in macros
This commit is contained in:
parent
bd3a26493f
commit
a0a347eac9
@ -355,7 +355,12 @@ pub(super) fn token_tree(p: &mut Parser) {
|
||||
while !p.at(EOF) && !p.at(closing_paren_kind) {
|
||||
match p.current() {
|
||||
L_CURLY | L_PAREN | L_BRACK => token_tree(p),
|
||||
R_CURLY | R_PAREN | R_BRACK => p.err_and_bump("unmatched brace"),
|
||||
R_CURLY => {
|
||||
p.error("unmatched `}`");
|
||||
m.complete(p, TOKEN_TREE);
|
||||
return;
|
||||
}
|
||||
R_PAREN | R_BRACK => p.err_and_bump("unmatched brace"),
|
||||
_ => p.bump()
|
||||
}
|
||||
};
|
||||
|
@ -0,0 +1,5 @@
|
||||
fn main() {
|
||||
foo! (
|
||||
bar, "baz", 1, 2.0
|
||||
} //~ ERROR incorrect close delimiter
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
ROOT@[0; 94)
|
||||
FN_DEF@[0; 55)
|
||||
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; 55)
|
||||
L_CURLY@[10; 11)
|
||||
WHITESPACE@[11; 16)
|
||||
MACRO_CALL@[16; 49)
|
||||
PATH@[16; 19)
|
||||
PATH_SEGMENT@[16; 19)
|
||||
NAME_REF@[16; 19)
|
||||
IDENT@[16; 19) "foo"
|
||||
EXCL@[19; 20)
|
||||
WHITESPACE@[20; 21)
|
||||
TOKEN_TREE@[21; 49)
|
||||
L_PAREN@[21; 22)
|
||||
WHITESPACE@[22; 31)
|
||||
IDENT@[31; 34) "bar"
|
||||
COMMA@[34; 35)
|
||||
WHITESPACE@[35; 36)
|
||||
STRING@[36; 41)
|
||||
COMMA@[41; 42)
|
||||
WHITESPACE@[42; 43)
|
||||
INT_NUMBER@[43; 44) "1"
|
||||
COMMA@[44; 45)
|
||||
WHITESPACE@[45; 46)
|
||||
FLOAT_NUMBER@[46; 49) "2.0"
|
||||
err: `unmatched `}``
|
||||
WHITESPACE@[49; 54)
|
||||
R_CURLY@[54; 55)
|
||||
WHITESPACE@[55; 56)
|
||||
COMMENT@[56; 91)
|
||||
WHITESPACE@[91; 92)
|
||||
err: `unmatched `}``
|
||||
ERROR@[92; 93)
|
||||
R_CURLY@[92; 93)
|
||||
WHITESPACE@[93; 94)
|
Loading…
Reference in New Issue
Block a user