mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 21:13:37 +00:00
Require semi after exprs
This commit is contained in:
parent
a80c07bdff
commit
367e523442
4 changed files with 70 additions and 14 deletions
|
@ -51,10 +51,15 @@ pub(crate) fn block(p: &mut Parser) {
|
||||||
// fn foo() { pub 92; } //FIXME
|
// fn foo() { pub 92; } //FIXME
|
||||||
items::MaybeItem::None => {
|
items::MaybeItem::None => {
|
||||||
let is_blocklike = expressions::expr_stmt(p) == BlockLike::Block;
|
let is_blocklike = expressions::expr_stmt(p) == BlockLike::Block;
|
||||||
if p.eat(SEMI) || (is_blocklike && !p.at(R_CURLY)) {
|
if p.at(R_CURLY) {
|
||||||
m.complete(p, EXPR_STMT);
|
|
||||||
} else {
|
|
||||||
m.abandon(p);
|
m.abandon(p);
|
||||||
|
} else {
|
||||||
|
if is_blocklike {
|
||||||
|
p.eat(SEMI);
|
||||||
|
} else {
|
||||||
|
p.expect(SEMI);
|
||||||
|
}
|
||||||
|
m.complete(p, EXPR_STMT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,17 +11,19 @@ ROOT@[0; 42)
|
||||||
BLOCK@[10; 41)
|
BLOCK@[10; 41)
|
||||||
L_CURLY@[10; 11)
|
L_CURLY@[10; 11)
|
||||||
WHITESPACE@[11; 16)
|
WHITESPACE@[11; 16)
|
||||||
LAMBDA_EXPR@[16; 24)
|
EXPR_STMT@[16; 24)
|
||||||
PARAM_LIST@[16; 18)
|
LAMBDA_EXPR@[16; 24)
|
||||||
PIPE@[16; 17)
|
PARAM_LIST@[16; 18)
|
||||||
PIPE@[17; 18)
|
PIPE@[16; 17)
|
||||||
WHITESPACE@[18; 19)
|
PIPE@[17; 18)
|
||||||
THIN_ARROW@[19; 21)
|
WHITESPACE@[18; 19)
|
||||||
WHITESPACE@[21; 22)
|
THIN_ARROW@[19; 21)
|
||||||
TUPLE_TYPE@[22; 24)
|
WHITESPACE@[21; 22)
|
||||||
L_PAREN@[22; 23)
|
TUPLE_TYPE@[22; 24)
|
||||||
R_PAREN@[23; 24)
|
L_PAREN@[22; 23)
|
||||||
err: `expected a block`
|
R_PAREN@[23; 24)
|
||||||
|
err: `expected a block`
|
||||||
|
err: `expected SEMI`
|
||||||
WHITESPACE@[24; 25)
|
WHITESPACE@[24; 25)
|
||||||
EXPR_STMT@[25; 39)
|
EXPR_STMT@[25; 39)
|
||||||
BLOCK_EXPR@[25; 38)
|
BLOCK_EXPR@[25; 38)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
fn foo() {
|
||||||
|
foo(
|
||||||
|
1, 2
|
||||||
|
)
|
||||||
|
return 92;
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
ROOT@[0; 56)
|
||||||
|
FN_DEF@[0; 55)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
NAME@[3; 6)
|
||||||
|
IDENT@[3; 6) "foo"
|
||||||
|
PARAM_LIST@[6; 8)
|
||||||
|
L_PAREN@[6; 7)
|
||||||
|
R_PAREN@[7; 8)
|
||||||
|
WHITESPACE@[8; 9)
|
||||||
|
BLOCK@[9; 55)
|
||||||
|
L_CURLY@[9; 10)
|
||||||
|
WHITESPACE@[10; 15)
|
||||||
|
EXPR_STMT@[15; 38)
|
||||||
|
CALL_EXPR@[15; 38)
|
||||||
|
PATH_EXPR@[15; 18)
|
||||||
|
PATH@[15; 18)
|
||||||
|
PATH_SEGMENT@[15; 18)
|
||||||
|
NAME_REF@[15; 18)
|
||||||
|
IDENT@[15; 18) "foo"
|
||||||
|
ARG_LIST@[18; 38)
|
||||||
|
L_PAREN@[18; 19)
|
||||||
|
WHITESPACE@[19; 28)
|
||||||
|
LITERAL@[28; 29)
|
||||||
|
INT_NUMBER@[28; 29) "1"
|
||||||
|
COMMA@[29; 30)
|
||||||
|
WHITESPACE@[30; 31)
|
||||||
|
LITERAL@[31; 32)
|
||||||
|
INT_NUMBER@[31; 32) "2"
|
||||||
|
WHITESPACE@[32; 37)
|
||||||
|
R_PAREN@[37; 38)
|
||||||
|
err: `expected SEMI`
|
||||||
|
WHITESPACE@[38; 43)
|
||||||
|
EXPR_STMT@[43; 53)
|
||||||
|
RETURN_EXPR@[43; 52)
|
||||||
|
RETURN_KW@[43; 49)
|
||||||
|
WHITESPACE@[49; 50)
|
||||||
|
LITERAL@[50; 52)
|
||||||
|
INT_NUMBER@[50; 52) "92"
|
||||||
|
SEMI@[52; 53)
|
||||||
|
WHITESPACE@[53; 54)
|
||||||
|
R_CURLY@[54; 55)
|
||||||
|
WHITESPACE@[55; 56)
|
Loading…
Reference in a new issue