mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-26 14:43:24 +00:00
block expr
This commit is contained in:
parent
490f8ba5b7
commit
53485030dc
@ -139,7 +139,7 @@ Grammar(
|
||||
"STRUCT_LIT_FIELD",
|
||||
"IF_EXPR",
|
||||
|
||||
"EXTERN_BLOCK",
|
||||
"EXTERN_BLOCK_EXPR",
|
||||
"ENUM_VARIANT",
|
||||
"NAMED_FIELD",
|
||||
"POS_FIELD",
|
||||
@ -155,7 +155,7 @@ Grammar(
|
||||
"ABI",
|
||||
"NAME",
|
||||
"NAME_REF",
|
||||
"BLOCK",
|
||||
"BLOCK_EXPR",
|
||||
|
||||
"LET_STMT",
|
||||
"EXPR_STMT",
|
||||
|
@ -53,31 +53,9 @@ pub(super) fn expr(p: &mut Parser) {
|
||||
pub(super) fn block(p: &mut Parser) {
|
||||
if !p.at(L_CURLY) {
|
||||
p.error("expected block");
|
||||
return;
|
||||
}
|
||||
let m = p.start();
|
||||
p.bump();
|
||||
while !p.at(EOF) && !p.at(R_CURLY) {
|
||||
match p.current() {
|
||||
LET_KW => let_stmt(p),
|
||||
c => {
|
||||
// test block_items
|
||||
// fn a() { fn b() {} }
|
||||
if items::ITEM_FIRST.contains(c) {
|
||||
items::item(p)
|
||||
} else {
|
||||
let expr_stmt = p.start();
|
||||
expressions::expr(p);
|
||||
if p.eat(SEMI) {
|
||||
expr_stmt.complete(p, EXPR_STMT);
|
||||
} else {
|
||||
expr_stmt.abandon(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
p.expect(R_CURLY);
|
||||
m.complete(p, BLOCK);
|
||||
block_expr(p);
|
||||
}
|
||||
|
||||
// test let_stmt;
|
||||
@ -158,12 +136,14 @@ fn atom_expr(p: &mut Parser) -> Option<CompletedMarker> {
|
||||
if paths::is_path_start(p) {
|
||||
return Some(path_expr(p));
|
||||
}
|
||||
|
||||
let la = p.nth(1);
|
||||
let done = match p.current() {
|
||||
L_PAREN => tuple_expr(p),
|
||||
PIPE => lambda_expr(p),
|
||||
MOVE_KW if p.nth(1) == PIPE => lambda_expr(p),
|
||||
MOVE_KW if la == PIPE => lambda_expr(p),
|
||||
IF_KW => if_expr(p),
|
||||
UNSAFE_KW if la == L_CURLY => block_expr(p),
|
||||
L_CURLY => block_expr(p),
|
||||
_ => {
|
||||
p.err_and_bump("expected expression");
|
||||
return None;
|
||||
@ -223,6 +203,40 @@ fn if_expr(p: &mut Parser) -> CompletedMarker {
|
||||
m.complete(p, IF_EXPR)
|
||||
}
|
||||
|
||||
// test block_expr
|
||||
// fn foo() {
|
||||
// {};
|
||||
// unsafe {};
|
||||
// }
|
||||
fn block_expr(p: &mut Parser) -> CompletedMarker {
|
||||
assert!(p.at(L_CURLY) || p.at(UNSAFE_KW) && p.nth(1) == L_CURLY);
|
||||
let m = p.start();
|
||||
p.eat(UNSAFE_KW);
|
||||
p.bump();
|
||||
while !p.at(EOF) && !p.at(R_CURLY) {
|
||||
match p.current() {
|
||||
LET_KW => let_stmt(p),
|
||||
c => {
|
||||
// test block_items
|
||||
// fn a() { fn b() {} }
|
||||
if items::ITEM_FIRST.contains(c) {
|
||||
items::item(p)
|
||||
} else {
|
||||
let expr_stmt = p.start();
|
||||
expressions::expr(p);
|
||||
if p.eat(SEMI) {
|
||||
expr_stmt.complete(p, EXPR_STMT);
|
||||
} else {
|
||||
expr_stmt.abandon(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
p.expect(R_CURLY);
|
||||
m.complete(p, BLOCK_EXPR)
|
||||
}
|
||||
|
||||
// test call_expr
|
||||
// fn foo() {
|
||||
// let _ = f();
|
||||
|
@ -44,7 +44,7 @@ pub(super) fn item(p: &mut Parser) {
|
||||
// extern {}
|
||||
L_CURLY => {
|
||||
extern_block(p);
|
||||
EXTERN_BLOCK
|
||||
EXTERN_BLOCK_EXPR
|
||||
}
|
||||
// test extern_struct
|
||||
// extern struct Foo;
|
||||
|
@ -45,6 +45,7 @@ pub use {
|
||||
yellow::{SyntaxNode, SyntaxNodeRef, SyntaxRoot, TreeRoot},
|
||||
};
|
||||
|
||||
|
||||
pub fn parse(text: &str) -> SyntaxNode {
|
||||
let tokens = tokenize(&text);
|
||||
parser_impl::parse::<yellow::GreenBuilder>(text, &tokens)
|
||||
|
@ -129,7 +129,7 @@ pub enum SyntaxKind {
|
||||
STRUCT_LIT,
|
||||
STRUCT_LIT_FIELD,
|
||||
IF_EXPR,
|
||||
EXTERN_BLOCK,
|
||||
EXTERN_BLOCK_EXPR,
|
||||
ENUM_VARIANT,
|
||||
NAMED_FIELD,
|
||||
POS_FIELD,
|
||||
@ -145,7 +145,7 @@ pub enum SyntaxKind {
|
||||
ABI,
|
||||
NAME,
|
||||
NAME_REF,
|
||||
BLOCK,
|
||||
BLOCK_EXPR,
|
||||
LET_STMT,
|
||||
EXPR_STMT,
|
||||
TYPE_PARAM_LIST,
|
||||
@ -336,7 +336,7 @@ impl SyntaxKind {
|
||||
STRUCT_LIT => &SyntaxInfo { name: "STRUCT_LIT" },
|
||||
STRUCT_LIT_FIELD => &SyntaxInfo { name: "STRUCT_LIT_FIELD" },
|
||||
IF_EXPR => &SyntaxInfo { name: "IF_EXPR" },
|
||||
EXTERN_BLOCK => &SyntaxInfo { name: "EXTERN_BLOCK" },
|
||||
EXTERN_BLOCK_EXPR => &SyntaxInfo { name: "EXTERN_BLOCK_EXPR" },
|
||||
ENUM_VARIANT => &SyntaxInfo { name: "ENUM_VARIANT" },
|
||||
NAMED_FIELD => &SyntaxInfo { name: "NAMED_FIELD" },
|
||||
POS_FIELD => &SyntaxInfo { name: "POS_FIELD" },
|
||||
@ -352,7 +352,7 @@ impl SyntaxKind {
|
||||
ABI => &SyntaxInfo { name: "ABI" },
|
||||
NAME => &SyntaxInfo { name: "NAME" },
|
||||
NAME_REF => &SyntaxInfo { name: "NAME_REF" },
|
||||
BLOCK => &SyntaxInfo { name: "BLOCK" },
|
||||
BLOCK_EXPR => &SyntaxInfo { name: "BLOCK_EXPR" },
|
||||
LET_STMT => &SyntaxInfo { name: "LET_STMT" },
|
||||
EXPR_STMT => &SyntaxInfo { name: "EXPR_STMT" },
|
||||
TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" },
|
||||
|
@ -30,7 +30,7 @@ FILE@[0; 54)
|
||||
L_PAREN@[25; 26)
|
||||
R_PAREN@[26; 27)
|
||||
WHITESPACE@[27; 28)
|
||||
BLOCK@[28; 34)
|
||||
BLOCK_EXPR@[28; 34)
|
||||
L_CURLY@[28; 29)
|
||||
WHITESPACE@[29; 30)
|
||||
R_CURLY@[30; 31)
|
||||
@ -53,7 +53,7 @@ FILE@[0; 54)
|
||||
L_PAREN@[47; 48)
|
||||
R_PAREN@[48; 49)
|
||||
WHITESPACE@[49; 50)
|
||||
BLOCK@[50; 54)
|
||||
BLOCK_EXPR@[50; 54)
|
||||
L_CURLY@[50; 51)
|
||||
WHITESPACE@[51; 52)
|
||||
R_CURLY@[52; 53)
|
||||
|
@ -22,7 +22,7 @@ FILE@[0; 31)
|
||||
PARAM_LIST@[23; 25)
|
||||
L_PAREN@[23; 24)
|
||||
R_PAREN@[24; 25)
|
||||
BLOCK@[25; 29)
|
||||
BLOCK_EXPR@[25; 29)
|
||||
L_CURLY@[25; 26)
|
||||
R_CURLY@[26; 27)
|
||||
WHITESPACE@[27; 29)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 95)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 14)
|
||||
BLOCK_EXPR@[9; 14)
|
||||
L_CURLY@[9; 10)
|
||||
WHITESPACE@[10; 11)
|
||||
R_CURLY@[11; 12)
|
||||
@ -60,7 +60,7 @@ FILE@[0; 95)
|
||||
L_PAREN@[88; 89)
|
||||
R_PAREN@[89; 90)
|
||||
WHITESPACE@[90; 91)
|
||||
BLOCK@[91; 95)
|
||||
BLOCK_EXPR@[91; 95)
|
||||
L_CURLY@[91; 92)
|
||||
WHITESPACE@[92; 93)
|
||||
R_CURLY@[93; 94)
|
||||
|
3
tests/data/parser/err/0010_unsafe_lambda_block.rs
Normal file
3
tests/data/parser/err/0010_unsafe_lambda_block.rs
Normal file
@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
|| -> () unsafe { () };
|
||||
}
|
40
tests/data/parser/err/0010_unsafe_lambda_block.txt
Normal file
40
tests/data/parser/err/0010_unsafe_lambda_block.txt
Normal file
@ -0,0 +1,40 @@
|
||||
FILE@[0; 42)
|
||||
FN_ITEM@[0; 42)
|
||||
FN_KW@[0; 2)
|
||||
NAME@[2; 7)
|
||||
WHITESPACE@[2; 3)
|
||||
IDENT@[3; 7) "main"
|
||||
PARAM_LIST@[7; 10)
|
||||
L_PAREN@[7; 8)
|
||||
R_PAREN@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
BLOCK_EXPR@[10; 42)
|
||||
L_CURLY@[10; 11)
|
||||
LAMBDA_EXPR@[11; 25)
|
||||
PARAM_LIST@[11; 19)
|
||||
WHITESPACE@[11; 16)
|
||||
PIPE@[16; 17)
|
||||
PIPE@[17; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
THIN_ARROW@[19; 21)
|
||||
TUPLE_TYPE@[21; 25)
|
||||
WHITESPACE@[21; 22)
|
||||
L_PAREN@[22; 23)
|
||||
R_PAREN@[23; 24)
|
||||
WHITESPACE@[24; 25)
|
||||
err: `expected block`
|
||||
EXPR_STMT@[25; 40)
|
||||
BLOCK_EXPR@[25; 38)
|
||||
UNSAFE_KW@[25; 31)
|
||||
WHITESPACE@[31; 32)
|
||||
L_CURLY@[32; 33)
|
||||
TUPLE_EXPR@[33; 37)
|
||||
WHITESPACE@[33; 34)
|
||||
L_PAREN@[34; 35)
|
||||
R_PAREN@[35; 36)
|
||||
WHITESPACE@[36; 37)
|
||||
R_CURLY@[37; 38)
|
||||
SEMI@[38; 39)
|
||||
WHITESPACE@[39; 40)
|
||||
R_CURLY@[40; 41)
|
||||
WHITESPACE@[41; 42)
|
@ -12,7 +12,7 @@ FILE@[0; 25)
|
||||
L_PAREN@[19; 20)
|
||||
R_PAREN@[20; 21)
|
||||
WHITESPACE@[21; 22)
|
||||
BLOCK@[22; 25)
|
||||
BLOCK_EXPR@[22; 25)
|
||||
L_CURLY@[22; 23)
|
||||
R_CURLY@[23; 24)
|
||||
WHITESPACE@[24; 25)
|
||||
|
@ -10,7 +10,7 @@ FILE@[0; 18)
|
||||
L_PAREN@[12; 13)
|
||||
R_PAREN@[13; 14)
|
||||
WHITESPACE@[14; 15)
|
||||
BLOCK@[15; 18)
|
||||
BLOCK_EXPR@[15; 18)
|
||||
L_CURLY@[15; 16)
|
||||
R_CURLY@[16; 17)
|
||||
WHITESPACE@[17; 18)
|
||||
|
@ -1,5 +1,5 @@
|
||||
FILE@[0; 10)
|
||||
EXTERN_BLOCK@[0; 10)
|
||||
EXTERN_BLOCK_EXPR@[0; 10)
|
||||
ABI@[0; 7)
|
||||
EXTERN_KW@[0; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
|
@ -11,7 +11,7 @@ FILE@[0; 19)
|
||||
L_PAREN@[13; 14)
|
||||
R_PAREN@[14; 15)
|
||||
WHITESPACE@[15; 16)
|
||||
BLOCK@[16; 19)
|
||||
BLOCK_EXPR@[16; 19)
|
||||
L_CURLY@[16; 17)
|
||||
R_CURLY@[17; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
|
@ -10,7 +10,7 @@ FILE@[0; 19)
|
||||
L_PAREN@[13; 14)
|
||||
R_PAREN@[14; 15)
|
||||
WHITESPACE@[15; 16)
|
||||
BLOCK@[16; 19)
|
||||
BLOCK_EXPR@[16; 19)
|
||||
L_CURLY@[16; 17)
|
||||
R_CURLY@[17; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
|
@ -15,7 +15,7 @@ FILE@[0; 30)
|
||||
L_PAREN@[24; 25)
|
||||
R_PAREN@[25; 26)
|
||||
WHITESPACE@[26; 27)
|
||||
BLOCK@[27; 30)
|
||||
BLOCK_EXPR@[27; 30)
|
||||
L_CURLY@[27; 28)
|
||||
R_CURLY@[28; 29)
|
||||
WHITESPACE@[29; 30)
|
||||
|
@ -7,7 +7,7 @@ FILE@[0; 33)
|
||||
PARAM_LIST@[6; 8)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
BLOCK@[8; 11)
|
||||
BLOCK_EXPR@[8; 11)
|
||||
L_CURLY@[8; 9)
|
||||
R_CURLY@[9; 10)
|
||||
WHITESPACE@[10; 11)
|
||||
@ -27,7 +27,7 @@ FILE@[0; 33)
|
||||
PARAM_LIST@[28; 30)
|
||||
L_PAREN@[28; 29)
|
||||
R_PAREN@[29; 30)
|
||||
BLOCK@[30; 33)
|
||||
BLOCK_EXPR@[30; 33)
|
||||
L_CURLY@[30; 31)
|
||||
R_CURLY@[31; 32)
|
||||
WHITESPACE@[32; 33)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 146)
|
||||
L_PAREN@[7; 8)
|
||||
R_PAREN@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
BLOCK@[10; 146)
|
||||
BLOCK_EXPR@[10; 146)
|
||||
L_CURLY@[10; 11)
|
||||
LET_STMT@[11; 32)
|
||||
WHITESPACE@[11; 16)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 52)
|
||||
L_PAREN@[7; 8)
|
||||
R_PAREN@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
BLOCK@[10; 52)
|
||||
BLOCK_EXPR@[10; 52)
|
||||
L_CURLY@[10; 11)
|
||||
LET_STMT@[11; 33)
|
||||
WHITESPACE@[11; 16)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 26)
|
||||
L_PAREN@[7; 8)
|
||||
R_PAREN@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
BLOCK@[10; 26)
|
||||
BLOCK_EXPR@[10; 26)
|
||||
L_CURLY@[10; 11)
|
||||
LET_STMT@[11; 24)
|
||||
WHITESPACE@[11; 12)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 30)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 12)
|
||||
BLOCK_EXPR@[9; 12)
|
||||
L_CURLY@[9; 10)
|
||||
R_CURLY@[10; 11)
|
||||
WHITESPACE@[11; 12)
|
||||
@ -27,7 +27,7 @@ FILE@[0; 30)
|
||||
L_PAREN@[24; 25)
|
||||
R_PAREN@[25; 26)
|
||||
WHITESPACE@[26; 27)
|
||||
BLOCK@[27; 30)
|
||||
BLOCK_EXPR@[27; 30)
|
||||
L_CURLY@[27; 28)
|
||||
R_CURLY@[28; 29)
|
||||
WHITESPACE@[29; 30)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 68)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 68)
|
||||
BLOCK_EXPR@[9; 68)
|
||||
L_CURLY@[9; 10)
|
||||
LET_STMT@[10; 30)
|
||||
WHITESPACE@[10; 15)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 189)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 189)
|
||||
BLOCK_EXPR@[9; 189)
|
||||
L_CURLY@[9; 10)
|
||||
LET_STMT@[10; 33)
|
||||
WHITESPACE@[10; 15)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 57)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 57)
|
||||
BLOCK_EXPR@[9; 57)
|
||||
L_CURLY@[9; 10)
|
||||
LET_STMT@[10; 32)
|
||||
WHITESPACE@[10; 15)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 52)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 52)
|
||||
BLOCK_EXPR@[9; 52)
|
||||
L_CURLY@[9; 10)
|
||||
LET_STMT@[10; 31)
|
||||
WHITESPACE@[10; 15)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 65)
|
||||
L_PAREN@[4; 5)
|
||||
R_PAREN@[5; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
BLOCK@[7; 10)
|
||||
BLOCK_EXPR@[7; 10)
|
||||
L_CURLY@[7; 8)
|
||||
R_CURLY@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
@ -21,7 +21,7 @@ FILE@[0; 65)
|
||||
L_PAREN@[14; 15)
|
||||
R_PAREN@[15; 16)
|
||||
WHITESPACE@[16; 17)
|
||||
BLOCK@[17; 32)
|
||||
BLOCK_EXPR@[17; 32)
|
||||
L_CURLY@[17; 18)
|
||||
LET_STMT@[18; 30)
|
||||
WHITESPACE@[18; 19)
|
||||
@ -47,7 +47,7 @@ FILE@[0; 65)
|
||||
L_PAREN@[36; 37)
|
||||
R_PAREN@[37; 38)
|
||||
WHITESPACE@[38; 39)
|
||||
BLOCK@[39; 49)
|
||||
BLOCK_EXPR@[39; 49)
|
||||
L_CURLY@[39; 40)
|
||||
EXPR_STMT@[40; 44)
|
||||
LITERAL@[40; 42)
|
||||
@ -71,7 +71,7 @@ FILE@[0; 65)
|
||||
L_PAREN@[53; 54)
|
||||
R_PAREN@[54; 55)
|
||||
WHITESPACE@[55; 56)
|
||||
BLOCK@[56; 65)
|
||||
BLOCK_EXPR@[56; 65)
|
||||
L_CURLY@[56; 57)
|
||||
EXPR_STMT@[57; 61)
|
||||
LITERAL@[57; 59)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 77)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 77)
|
||||
BLOCK_EXPR@[9; 77)
|
||||
L_CURLY@[9; 10)
|
||||
LET_STMT@[10; 26)
|
||||
WHITESPACE@[10; 15)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 44)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 44)
|
||||
BLOCK_EXPR@[9; 44)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 28)
|
||||
METHOD_CALL_EXPR@[10; 22)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 37)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 37)
|
||||
BLOCK_EXPR@[9; 37)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 26)
|
||||
FIELD_EXPR@[10; 20)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 21)
|
||||
L_PAREN@[4; 5)
|
||||
R_PAREN@[5; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
BLOCK@[7; 21)
|
||||
BLOCK_EXPR@[7; 21)
|
||||
L_CURLY@[7; 8)
|
||||
FN_ITEM@[8; 19)
|
||||
WHITESPACE@[8; 9)
|
||||
@ -20,7 +20,7 @@ FILE@[0; 21)
|
||||
L_PAREN@[13; 14)
|
||||
R_PAREN@[14; 15)
|
||||
WHITESPACE@[15; 16)
|
||||
BLOCK@[16; 19)
|
||||
BLOCK_EXPR@[16; 19)
|
||||
L_CURLY@[16; 17)
|
||||
R_CURLY@[17; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
|
@ -53,7 +53,7 @@ FILE@[0; 89)
|
||||
L_PAREN@[60; 61)
|
||||
R_PAREN@[61; 62)
|
||||
WHITESPACE@[62; 63)
|
||||
BLOCK@[63; 70)
|
||||
BLOCK_EXPR@[63; 70)
|
||||
L_CURLY@[63; 64)
|
||||
R_CURLY@[64; 65)
|
||||
WHITESPACE@[65; 70)
|
||||
@ -69,7 +69,7 @@ FILE@[0; 89)
|
||||
SELF_KW@[78; 82)
|
||||
R_PAREN@[82; 83)
|
||||
WHITESPACE@[83; 84)
|
||||
BLOCK@[84; 87)
|
||||
BLOCK_EXPR@[84; 87)
|
||||
L_CURLY@[84; 85)
|
||||
R_CURLY@[85; 86)
|
||||
WHITESPACE@[86; 87)
|
||||
|
@ -21,7 +21,7 @@ FILE@[0; 106)
|
||||
SELF_KW@[18; 22)
|
||||
R_PAREN@[22; 23)
|
||||
WHITESPACE@[23; 24)
|
||||
BLOCK@[24; 31)
|
||||
BLOCK_EXPR@[24; 31)
|
||||
L_CURLY@[24; 25)
|
||||
R_CURLY@[25; 26)
|
||||
WHITESPACE@[26; 31)
|
||||
@ -38,7 +38,7 @@ FILE@[0; 106)
|
||||
COMMA@[41; 42)
|
||||
R_PAREN@[42; 43)
|
||||
WHITESPACE@[43; 44)
|
||||
BLOCK@[44; 51)
|
||||
BLOCK_EXPR@[44; 51)
|
||||
L_CURLY@[44; 45)
|
||||
R_CURLY@[45; 46)
|
||||
WHITESPACE@[46; 51)
|
||||
@ -57,7 +57,7 @@ FILE@[0; 106)
|
||||
COMMA@[64; 65)
|
||||
R_PAREN@[65; 66)
|
||||
WHITESPACE@[66; 67)
|
||||
BLOCK@[67; 74)
|
||||
BLOCK_EXPR@[67; 74)
|
||||
L_CURLY@[67; 68)
|
||||
R_CURLY@[68; 69)
|
||||
WHITESPACE@[69; 74)
|
||||
@ -90,7 +90,7 @@ FILE@[0; 106)
|
||||
IDENT@[96; 99) "i32"
|
||||
R_PAREN@[99; 100)
|
||||
WHITESPACE@[100; 101)
|
||||
BLOCK@[101; 104)
|
||||
BLOCK_EXPR@[101; 104)
|
||||
L_CURLY@[101; 102)
|
||||
R_CURLY@[102; 103)
|
||||
WHITESPACE@[103; 104)
|
||||
|
@ -22,7 +22,7 @@ FILE@[0; 29)
|
||||
WHITESPACE@[20; 21)
|
||||
IDENT@[21; 25) "Copy"
|
||||
WHITESPACE@[25; 26)
|
||||
BLOCK@[26; 29)
|
||||
BLOCK_EXPR@[26; 29)
|
||||
L_CURLY@[26; 27)
|
||||
R_CURLY@[27; 28)
|
||||
WHITESPACE@[28; 29)
|
||||
|
@ -26,7 +26,7 @@ FILE@[0; 28)
|
||||
PARAM_LIST@[23; 25)
|
||||
L_PAREN@[23; 24)
|
||||
R_PAREN@[24; 25)
|
||||
BLOCK@[25; 28)
|
||||
BLOCK_EXPR@[25; 28)
|
||||
L_CURLY@[25; 26)
|
||||
R_CURLY@[26; 27)
|
||||
WHITESPACE@[27; 28)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 86)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 86)
|
||||
BLOCK_EXPR@[9; 86)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 25)
|
||||
STRUCT_LIT@[10; 19)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 23)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 23)
|
||||
BLOCK_EXPR@[9; 23)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 21)
|
||||
DEREF_EXPR@[10; 19)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 74)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 74)
|
||||
BLOCK_EXPR@[9; 74)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 26)
|
||||
LAMBDA_EXPR@[10; 20)
|
||||
@ -36,7 +36,7 @@ FILE@[0; 74)
|
||||
WHITESPACE@[31; 32)
|
||||
IDENT@[32; 35) "i32"
|
||||
WHITESPACE@[35; 36)
|
||||
BLOCK@[36; 42)
|
||||
BLOCK_EXPR@[36; 42)
|
||||
L_CURLY@[36; 37)
|
||||
LITERAL@[37; 41)
|
||||
WHITESPACE@[37; 38)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 67)
|
||||
L_PAREN@[4; 5)
|
||||
R_PAREN@[5; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
BLOCK@[7; 10)
|
||||
BLOCK_EXPR@[7; 10)
|
||||
L_CURLY@[7; 8)
|
||||
R_CURLY@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
@ -32,7 +32,7 @@ FILE@[0; 67)
|
||||
IDENT@[18; 21) "i32"
|
||||
R_PAREN@[21; 22)
|
||||
WHITESPACE@[22; 23)
|
||||
BLOCK@[23; 26)
|
||||
BLOCK_EXPR@[23; 26)
|
||||
L_CURLY@[23; 24)
|
||||
R_CURLY@[24; 25)
|
||||
WHITESPACE@[25; 26)
|
||||
@ -58,7 +58,7 @@ FILE@[0; 67)
|
||||
WHITESPACE@[38; 39)
|
||||
R_PAREN@[39; 40)
|
||||
WHITESPACE@[40; 41)
|
||||
BLOCK@[41; 44)
|
||||
BLOCK_EXPR@[41; 44)
|
||||
L_CURLY@[41; 42)
|
||||
R_CURLY@[42; 43)
|
||||
WHITESPACE@[43; 44)
|
||||
@ -93,7 +93,7 @@ FILE@[0; 67)
|
||||
R_PAREN@[61; 62)
|
||||
R_PAREN@[62; 63)
|
||||
WHITESPACE@[63; 64)
|
||||
BLOCK@[64; 67)
|
||||
BLOCK_EXPR@[64; 67)
|
||||
L_CURLY@[64; 65)
|
||||
R_CURLY@[65; 66)
|
||||
WHITESPACE@[66; 67)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 93)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 93)
|
||||
BLOCK_EXPR@[9; 93)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 31)
|
||||
IF_EXPR@[10; 25)
|
||||
@ -18,7 +18,7 @@ FILE@[0; 93)
|
||||
WHITESPACE@[17; 18)
|
||||
TRUE_KW@[18; 22)
|
||||
WHITESPACE@[22; 23)
|
||||
BLOCK@[23; 25)
|
||||
BLOCK_EXPR@[23; 25)
|
||||
L_CURLY@[23; 24)
|
||||
R_CURLY@[24; 25)
|
||||
SEMI@[25; 26)
|
||||
@ -30,12 +30,12 @@ FILE@[0; 93)
|
||||
WHITESPACE@[33; 34)
|
||||
TRUE_KW@[34; 38)
|
||||
WHITESPACE@[38; 39)
|
||||
BLOCK@[39; 42)
|
||||
BLOCK_EXPR@[39; 42)
|
||||
L_CURLY@[39; 40)
|
||||
R_CURLY@[40; 41)
|
||||
WHITESPACE@[41; 42)
|
||||
ELSE_KW@[42; 46)
|
||||
BLOCK@[46; 49)
|
||||
BLOCK_EXPR@[46; 49)
|
||||
WHITESPACE@[46; 47)
|
||||
L_CURLY@[47; 48)
|
||||
R_CURLY@[48; 49)
|
||||
@ -47,7 +47,7 @@ FILE@[0; 93)
|
||||
WHITESPACE@[57; 58)
|
||||
TRUE_KW@[58; 62)
|
||||
WHITESPACE@[62; 63)
|
||||
BLOCK@[63; 66)
|
||||
BLOCK_EXPR@[63; 66)
|
||||
L_CURLY@[63; 64)
|
||||
R_CURLY@[64; 65)
|
||||
WHITESPACE@[65; 66)
|
||||
@ -59,12 +59,12 @@ FILE@[0; 93)
|
||||
WHITESPACE@[73; 74)
|
||||
FALSE_KW@[74; 79)
|
||||
WHITESPACE@[79; 80)
|
||||
BLOCK@[80; 83)
|
||||
BLOCK_EXPR@[80; 83)
|
||||
L_CURLY@[80; 81)
|
||||
R_CURLY@[81; 82)
|
||||
WHITESPACE@[82; 83)
|
||||
ELSE_KW@[83; 87)
|
||||
BLOCK@[87; 91)
|
||||
BLOCK_EXPR@[87; 91)
|
||||
WHITESPACE@[87; 88)
|
||||
L_CURLY@[88; 89)
|
||||
R_CURLY@[89; 90)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 79)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 79)
|
||||
BLOCK_EXPR@[9; 79)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 26)
|
||||
LAMBDA_EXPR@[10; 20)
|
||||
@ -36,7 +36,7 @@ FILE@[0; 79)
|
||||
WHITESPACE@[31; 32)
|
||||
IDENT@[32; 35) "i32"
|
||||
WHITESPACE@[35; 36)
|
||||
BLOCK@[36; 42)
|
||||
BLOCK_EXPR@[36; 42)
|
||||
L_CURLY@[36; 37)
|
||||
LITERAL@[37; 41)
|
||||
WHITESPACE@[37; 38)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 25)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 25)
|
||||
BLOCK_EXPR@[9; 25)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 23)
|
||||
NOT_EXPR@[10; 21)
|
||||
|
4
tests/data/parser/inline/0067_block_expr.rs
Normal file
4
tests/data/parser/inline/0067_block_expr.rs
Normal file
@ -0,0 +1,4 @@
|
||||
fn foo() {
|
||||
{};
|
||||
unsafe {};
|
||||
}
|
29
tests/data/parser/inline/0067_block_expr.txt
Normal file
29
tests/data/parser/inline/0067_block_expr.txt
Normal file
@ -0,0 +1,29 @@
|
||||
FILE@[0; 36)
|
||||
FN_ITEM@[0; 36)
|
||||
FN_KW@[0; 2)
|
||||
NAME@[2; 6)
|
||||
WHITESPACE@[2; 3)
|
||||
IDENT@[3; 6) "foo"
|
||||
PARAM_LIST@[6; 9)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK_EXPR@[9; 36)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 23)
|
||||
BLOCK_EXPR@[10; 17)
|
||||
WHITESPACE@[10; 15)
|
||||
L_CURLY@[15; 16)
|
||||
R_CURLY@[16; 17)
|
||||
SEMI@[17; 18)
|
||||
WHITESPACE@[18; 23)
|
||||
EXPR_STMT@[23; 34)
|
||||
BLOCK_EXPR@[23; 32)
|
||||
UNSAFE_KW@[23; 29)
|
||||
WHITESPACE@[29; 30)
|
||||
L_CURLY@[30; 31)
|
||||
R_CURLY@[31; 32)
|
||||
SEMI@[32; 33)
|
||||
WHITESPACE@[33; 34)
|
||||
R_CURLY@[34; 35)
|
||||
WHITESPACE@[35; 36)
|
@ -8,7 +8,7 @@ FILE@[0; 13)
|
||||
L_PAREN@[6; 7)
|
||||
R_PAREN@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
BLOCK@[9; 13)
|
||||
BLOCK_EXPR@[9; 13)
|
||||
L_CURLY@[9; 10)
|
||||
WHITESPACE@[10; 11)
|
||||
R_CURLY@[11; 12)
|
||||
|
@ -33,7 +33,7 @@ FILE@[0; 118)
|
||||
L_PAREN@[37; 38)
|
||||
R_PAREN@[38; 39)
|
||||
WHITESPACE@[39; 40)
|
||||
BLOCK@[40; 52)
|
||||
BLOCK_EXPR@[40; 52)
|
||||
L_CURLY@[40; 41)
|
||||
WHITESPACE@[41; 46)
|
||||
R_CURLY@[46; 47)
|
||||
|
@ -26,7 +26,7 @@ FILE@[0; 35)
|
||||
L_PAREN@[29; 30)
|
||||
R_PAREN@[30; 31)
|
||||
WHITESPACE@[31; 32)
|
||||
BLOCK@[32; 35)
|
||||
BLOCK_EXPR@[32; 35)
|
||||
L_CURLY@[32; 33)
|
||||
R_CURLY@[33; 34)
|
||||
WHITESPACE@[34; 35)
|
||||
|
@ -8,7 +8,7 @@ FILE@[0; 98)
|
||||
L_PAREN@[4; 5)
|
||||
R_PAREN@[5; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
BLOCK@[7; 10)
|
||||
BLOCK_EXPR@[7; 10)
|
||||
L_CURLY@[7; 8)
|
||||
R_CURLY@[8; 9)
|
||||
WHITESPACE@[9; 10)
|
||||
@ -24,7 +24,7 @@ FILE@[0; 98)
|
||||
L_PAREN@[18; 19)
|
||||
R_PAREN@[19; 20)
|
||||
WHITESPACE@[20; 21)
|
||||
BLOCK@[21; 24)
|
||||
BLOCK_EXPR@[21; 24)
|
||||
L_CURLY@[21; 22)
|
||||
R_CURLY@[22; 23)
|
||||
WHITESPACE@[23; 24)
|
||||
@ -43,7 +43,7 @@ FILE@[0; 98)
|
||||
L_PAREN@[39; 40)
|
||||
R_PAREN@[40; 41)
|
||||
WHITESPACE@[41; 42)
|
||||
BLOCK@[42; 45)
|
||||
BLOCK_EXPR@[42; 45)
|
||||
L_CURLY@[42; 43)
|
||||
R_CURLY@[43; 44)
|
||||
WHITESPACE@[44; 45)
|
||||
@ -62,7 +62,7 @@ FILE@[0; 98)
|
||||
L_PAREN@[60; 61)
|
||||
R_PAREN@[61; 62)
|
||||
WHITESPACE@[62; 63)
|
||||
BLOCK@[63; 66)
|
||||
BLOCK_EXPR@[63; 66)
|
||||
L_CURLY@[63; 64)
|
||||
R_CURLY@[64; 65)
|
||||
WHITESPACE@[65; 66)
|
||||
@ -96,7 +96,7 @@ FILE@[0; 98)
|
||||
L_PAREN@[92; 93)
|
||||
R_PAREN@[93; 94)
|
||||
WHITESPACE@[94; 95)
|
||||
BLOCK@[95; 98)
|
||||
BLOCK_EXPR@[95; 98)
|
||||
L_CURLY@[95; 96)
|
||||
R_CURLY@[96; 97)
|
||||
WHITESPACE@[97; 98)
|
||||
|
@ -20,7 +20,7 @@ FILE@[0; 23)
|
||||
L_PAREN@[17; 18)
|
||||
R_PAREN@[18; 19)
|
||||
WHITESPACE@[19; 20)
|
||||
BLOCK@[20; 23)
|
||||
BLOCK_EXPR@[20; 23)
|
||||
L_CURLY@[20; 21)
|
||||
R_CURLY@[21; 22)
|
||||
WHITESPACE@[22; 23)
|
||||
|
@ -11,7 +11,7 @@ FILE@[0; 71)
|
||||
L_PAREN@[13; 14)
|
||||
R_PAREN@[14; 15)
|
||||
WHITESPACE@[15; 16)
|
||||
BLOCK@[16; 21)
|
||||
BLOCK_EXPR@[16; 21)
|
||||
L_CURLY@[16; 17)
|
||||
WHITESPACE@[17; 18)
|
||||
R_CURLY@[18; 19)
|
||||
@ -30,7 +30,7 @@ FILE@[0; 71)
|
||||
L_PAREN@[38; 39)
|
||||
R_PAREN@[39; 40)
|
||||
WHITESPACE@[40; 41)
|
||||
BLOCK@[41; 46)
|
||||
BLOCK_EXPR@[41; 46)
|
||||
L_CURLY@[41; 42)
|
||||
WHITESPACE@[42; 43)
|
||||
R_CURLY@[43; 44)
|
||||
@ -49,7 +49,7 @@ FILE@[0; 71)
|
||||
L_PAREN@[64; 65)
|
||||
R_PAREN@[65; 66)
|
||||
WHITESPACE@[66; 67)
|
||||
BLOCK@[67; 71)
|
||||
BLOCK_EXPR@[67; 71)
|
||||
L_CURLY@[67; 68)
|
||||
WHITESPACE@[68; 69)
|
||||
R_CURLY@[69; 70)
|
||||
|
@ -1,5 +1,5 @@
|
||||
FILE@[0; 27)
|
||||
EXTERN_BLOCK@[0; 12)
|
||||
EXTERN_BLOCK_EXPR@[0; 12)
|
||||
ABI@[0; 7)
|
||||
EXTERN_KW@[0; 6)
|
||||
WHITESPACE@[6; 7)
|
||||
@ -7,7 +7,7 @@ FILE@[0; 27)
|
||||
WHITESPACE@[8; 9)
|
||||
R_CURLY@[9; 10)
|
||||
WHITESPACE@[10; 12)
|
||||
EXTERN_BLOCK@[12; 27)
|
||||
EXTERN_BLOCK_EXPR@[12; 27)
|
||||
ABI@[12; 23)
|
||||
EXTERN_KW@[12; 18)
|
||||
WHITESPACE@[18; 19)
|
||||
|
Loading…
Reference in New Issue
Block a user