From 53485030dc49aa7cd66e36c8a1e1abf1bf08020c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 1 Aug 2018 10:51:42 +0300 Subject: block expr --- src/grammar.ron | 4 +- src/grammar/expressions.rs | 66 +++++++++++++--------- src/grammar/items/mod.rs | 2 +- src/lib.rs | 1 + src/syntax_kinds/generated.rs | 8 +-- tests/data/parser/err/0005_attribute_recover.txt | 4 +- tests/data/parser/err/0007_stray_curly_in_file.txt | 2 +- tests/data/parser/err/0008_item_block_recovery.txt | 4 +- tests/data/parser/err/0010_unsafe_lambda_block.rs | 3 + tests/data/parser/err/0010_unsafe_lambda_block.txt | 40 +++++++++++++ tests/data/parser/inline/0001_const_unsafe_fn.txt | 2 +- tests/data/parser/inline/0002_const_fn.txt | 2 +- tests/data/parser/inline/0003_extern_block.txt | 2 +- tests/data/parser/inline/0004_extern_fn.txt | 2 +- tests/data/parser/inline/0011_unsafe_fn.txt | 2 +- tests/data/parser/inline/0012_unsafe_extern_fn.txt | 2 +- .../parser/inline/0013_unsafe_block_in_mod.txt | 4 +- tests/data/parser/inline/0034_bind_pat.txt | 2 +- tests/data/parser/inline/0035_ref_pat.txt | 2 +- tests/data/parser/inline/0036_placeholder_pat.txt | 2 +- tests/data/parser/inline/0038_fn_item_ret_type.txt | 4 +- tests/data/parser/inline/0039_path_expr.txt | 2 +- tests/data/parser/inline/0040_expr_literals.txt | 2 +- tests/data/parser/inline/0043_call_expr.txt | 2 +- tests/data/parser/inline/0044_ref_expr.txt | 2 +- tests/data/parser/inline/0045_block.txt | 8 +-- tests/data/parser/inline/0050_let_stmt;.txt | 2 +- tests/data/parser/inline/0051_method_call_expr.txt | 2 +- tests/data/parser/inline/0052_field_expr.txt | 2 +- tests/data/parser/inline/0053_block_items.txt | 4 +- tests/data/parser/inline/0054_impl_item_items.txt | 4 +- tests/data/parser/inline/0055_self_param.txt | 8 +-- .../parser/inline/0059_fn_item_where_clause.txt | 2 +- .../parser/inline/0060_fn_item_type_params.txt | 2 +- tests/data/parser/inline/0061_struct_lit.txt | 2 +- tests/data/parser/inline/0062_deref_expr.txt | 2 +- tests/data/parser/inline/0063_lambda_expr.txt | 4 +- tests/data/parser/inline/0064_param_list.txt | 8 +-- tests/data/parser/inline/0065_if_expr.txt | 14 ++--- tests/data/parser/inline/0066_lambda_expr.txt | 4 +- tests/data/parser/inline/0066_not_expr.txt | 2 +- tests/data/parser/inline/0067_block_expr.rs | 4 ++ tests/data/parser/inline/0067_block_expr.txt | 29 ++++++++++ tests/data/parser/ok/0005_fn_item.txt | 2 +- tests/data/parser/ok/0008_mod_item.txt | 2 +- tests/data/parser/ok/0011_outer_attribute.txt | 2 +- tests/data/parser/ok/0012_visibility.txt | 10 ++-- tests/data/parser/ok/0017_attr_trailing_comma.txt | 2 +- tests/data/parser/ok/0021_extern_fn.txt | 6 +- tests/data/parser/ok/0022_empty_extern_block.txt | 4 +- 50 files changed, 195 insertions(+), 104 deletions(-) create mode 100644 tests/data/parser/err/0010_unsafe_lambda_block.rs create mode 100644 tests/data/parser/err/0010_unsafe_lambda_block.txt create mode 100644 tests/data/parser/inline/0067_block_expr.rs create mode 100644 tests/data/parser/inline/0067_block_expr.txt diff --git a/src/grammar.ron b/src/grammar.ron index b4c121f4d..109556561 100644 --- a/src/grammar.ron +++ b/src/grammar.ron @@ -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", diff --git a/src/grammar/expressions.rs b/src/grammar/expressions.rs index c0eb0e756..5c59843a4 100644 --- a/src/grammar/expressions.rs +++ b/src/grammar/expressions.rs @@ -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 { 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(); diff --git a/src/grammar/items/mod.rs b/src/grammar/items/mod.rs index d5f75f13d..a1150e2ac 100644 --- a/src/grammar/items/mod.rs +++ b/src/grammar/items/mod.rs @@ -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; diff --git a/src/lib.rs b/src/lib.rs index 611b87492..1cd45690a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,6 +45,7 @@ pub use { yellow::{SyntaxNode, SyntaxNodeRef, SyntaxRoot, TreeRoot}, }; + pub fn parse(text: &str) -> SyntaxNode { let tokens = tokenize(&text); parser_impl::parse::(text, &tokens) diff --git a/src/syntax_kinds/generated.rs b/src/syntax_kinds/generated.rs index cbcd0c4e1..5f26cbf0a 100644 --- a/src/syntax_kinds/generated.rs +++ b/src/syntax_kinds/generated.rs @@ -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" }, diff --git a/tests/data/parser/err/0005_attribute_recover.txt b/tests/data/parser/err/0005_attribute_recover.txt index 9dea0f7d9..0ab73b46d 100644 --- a/tests/data/parser/err/0005_attribute_recover.txt +++ b/tests/data/parser/err/0005_attribute_recover.txt @@ -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) diff --git a/tests/data/parser/err/0007_stray_curly_in_file.txt b/tests/data/parser/err/0007_stray_curly_in_file.txt index 07c99e9fc..9758a969f 100644 --- a/tests/data/parser/err/0007_stray_curly_in_file.txt +++ b/tests/data/parser/err/0007_stray_curly_in_file.txt @@ -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) diff --git a/tests/data/parser/err/0008_item_block_recovery.txt b/tests/data/parser/err/0008_item_block_recovery.txt index 81a5dd4c3..5bc62b6e1 100644 --- a/tests/data/parser/err/0008_item_block_recovery.txt +++ b/tests/data/parser/err/0008_item_block_recovery.txt @@ -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) diff --git a/tests/data/parser/err/0010_unsafe_lambda_block.rs b/tests/data/parser/err/0010_unsafe_lambda_block.rs new file mode 100644 index 000000000..985775282 --- /dev/null +++ b/tests/data/parser/err/0010_unsafe_lambda_block.rs @@ -0,0 +1,3 @@ +fn main() { + || -> () unsafe { () }; +} diff --git a/tests/data/parser/err/0010_unsafe_lambda_block.txt b/tests/data/parser/err/0010_unsafe_lambda_block.txt new file mode 100644 index 000000000..a8791a595 --- /dev/null +++ b/tests/data/parser/err/0010_unsafe_lambda_block.txt @@ -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) diff --git a/tests/data/parser/inline/0001_const_unsafe_fn.txt b/tests/data/parser/inline/0001_const_unsafe_fn.txt index a06674e61..e5819919f 100644 --- a/tests/data/parser/inline/0001_const_unsafe_fn.txt +++ b/tests/data/parser/inline/0001_const_unsafe_fn.txt @@ -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) diff --git a/tests/data/parser/inline/0002_const_fn.txt b/tests/data/parser/inline/0002_const_fn.txt index 8feacb191..aa7747f51 100644 --- a/tests/data/parser/inline/0002_const_fn.txt +++ b/tests/data/parser/inline/0002_const_fn.txt @@ -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) diff --git a/tests/data/parser/inline/0003_extern_block.txt b/tests/data/parser/inline/0003_extern_block.txt index 588502932..24ef8f5ac 100644 --- a/tests/data/parser/inline/0003_extern_block.txt +++ b/tests/data/parser/inline/0003_extern_block.txt @@ -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) diff --git a/tests/data/parser/inline/0004_extern_fn.txt b/tests/data/parser/inline/0004_extern_fn.txt index ca79112b9..3c4663da9 100644 --- a/tests/data/parser/inline/0004_extern_fn.txt +++ b/tests/data/parser/inline/0004_extern_fn.txt @@ -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) diff --git a/tests/data/parser/inline/0011_unsafe_fn.txt b/tests/data/parser/inline/0011_unsafe_fn.txt index b0ef1e2cd..1fdff8d4b 100644 --- a/tests/data/parser/inline/0011_unsafe_fn.txt +++ b/tests/data/parser/inline/0011_unsafe_fn.txt @@ -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) diff --git a/tests/data/parser/inline/0012_unsafe_extern_fn.txt b/tests/data/parser/inline/0012_unsafe_extern_fn.txt index 3fef8ec22..ad3bd8542 100644 --- a/tests/data/parser/inline/0012_unsafe_extern_fn.txt +++ b/tests/data/parser/inline/0012_unsafe_extern_fn.txt @@ -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) diff --git a/tests/data/parser/inline/0013_unsafe_block_in_mod.txt b/tests/data/parser/inline/0013_unsafe_block_in_mod.txt index 77644d52c..e5581d615 100644 --- a/tests/data/parser/inline/0013_unsafe_block_in_mod.txt +++ b/tests/data/parser/inline/0013_unsafe_block_in_mod.txt @@ -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) diff --git a/tests/data/parser/inline/0034_bind_pat.txt b/tests/data/parser/inline/0034_bind_pat.txt index f4eb8bc4d..d23678fbe 100644 --- a/tests/data/parser/inline/0034_bind_pat.txt +++ b/tests/data/parser/inline/0034_bind_pat.txt @@ -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) diff --git a/tests/data/parser/inline/0035_ref_pat.txt b/tests/data/parser/inline/0035_ref_pat.txt index 83700c1d8..27a31d2ab 100644 --- a/tests/data/parser/inline/0035_ref_pat.txt +++ b/tests/data/parser/inline/0035_ref_pat.txt @@ -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) diff --git a/tests/data/parser/inline/0036_placeholder_pat.txt b/tests/data/parser/inline/0036_placeholder_pat.txt index 8bc547510..2d7fd0627 100644 --- a/tests/data/parser/inline/0036_placeholder_pat.txt +++ b/tests/data/parser/inline/0036_placeholder_pat.txt @@ -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) diff --git a/tests/data/parser/inline/0038_fn_item_ret_type.txt b/tests/data/parser/inline/0038_fn_item_ret_type.txt index 5f77cf595..391971721 100644 --- a/tests/data/parser/inline/0038_fn_item_ret_type.txt +++ b/tests/data/parser/inline/0038_fn_item_ret_type.txt @@ -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) diff --git a/tests/data/parser/inline/0039_path_expr.txt b/tests/data/parser/inline/0039_path_expr.txt index c3fc0c4bf..a646f523f 100644 --- a/tests/data/parser/inline/0039_path_expr.txt +++ b/tests/data/parser/inline/0039_path_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0040_expr_literals.txt b/tests/data/parser/inline/0040_expr_literals.txt index 94f738397..f6a843a48 100644 --- a/tests/data/parser/inline/0040_expr_literals.txt +++ b/tests/data/parser/inline/0040_expr_literals.txt @@ -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) diff --git a/tests/data/parser/inline/0043_call_expr.txt b/tests/data/parser/inline/0043_call_expr.txt index fe5380cab..5df6bb6d5 100644 --- a/tests/data/parser/inline/0043_call_expr.txt +++ b/tests/data/parser/inline/0043_call_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0044_ref_expr.txt b/tests/data/parser/inline/0044_ref_expr.txt index b25769972..65cdfb665 100644 --- a/tests/data/parser/inline/0044_ref_expr.txt +++ b/tests/data/parser/inline/0044_ref_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0045_block.txt b/tests/data/parser/inline/0045_block.txt index 1f65cf92c..25ed3fe5a 100644 --- a/tests/data/parser/inline/0045_block.txt +++ b/tests/data/parser/inline/0045_block.txt @@ -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) diff --git a/tests/data/parser/inline/0050_let_stmt;.txt b/tests/data/parser/inline/0050_let_stmt;.txt index c909302bb..de218cb8d 100644 --- a/tests/data/parser/inline/0050_let_stmt;.txt +++ b/tests/data/parser/inline/0050_let_stmt;.txt @@ -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) diff --git a/tests/data/parser/inline/0051_method_call_expr.txt b/tests/data/parser/inline/0051_method_call_expr.txt index 319d142e0..bf3705878 100644 --- a/tests/data/parser/inline/0051_method_call_expr.txt +++ b/tests/data/parser/inline/0051_method_call_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0052_field_expr.txt b/tests/data/parser/inline/0052_field_expr.txt index 7e79c396c..79d2fbc19 100644 --- a/tests/data/parser/inline/0052_field_expr.txt +++ b/tests/data/parser/inline/0052_field_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0053_block_items.txt b/tests/data/parser/inline/0053_block_items.txt index 1b1158aa5..3d14144d8 100644 --- a/tests/data/parser/inline/0053_block_items.txt +++ b/tests/data/parser/inline/0053_block_items.txt @@ -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) diff --git a/tests/data/parser/inline/0054_impl_item_items.txt b/tests/data/parser/inline/0054_impl_item_items.txt index dd17a8ebb..ee98619b4 100644 --- a/tests/data/parser/inline/0054_impl_item_items.txt +++ b/tests/data/parser/inline/0054_impl_item_items.txt @@ -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) diff --git a/tests/data/parser/inline/0055_self_param.txt b/tests/data/parser/inline/0055_self_param.txt index 96114d4cc..18760b7b6 100644 --- a/tests/data/parser/inline/0055_self_param.txt +++ b/tests/data/parser/inline/0055_self_param.txt @@ -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) diff --git a/tests/data/parser/inline/0059_fn_item_where_clause.txt b/tests/data/parser/inline/0059_fn_item_where_clause.txt index c904d171f..f38e8ccea 100644 --- a/tests/data/parser/inline/0059_fn_item_where_clause.txt +++ b/tests/data/parser/inline/0059_fn_item_where_clause.txt @@ -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) diff --git a/tests/data/parser/inline/0060_fn_item_type_params.txt b/tests/data/parser/inline/0060_fn_item_type_params.txt index 0b0f8352b..28a857ed3 100644 --- a/tests/data/parser/inline/0060_fn_item_type_params.txt +++ b/tests/data/parser/inline/0060_fn_item_type_params.txt @@ -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) diff --git a/tests/data/parser/inline/0061_struct_lit.txt b/tests/data/parser/inline/0061_struct_lit.txt index 336583004..5a56fd739 100644 --- a/tests/data/parser/inline/0061_struct_lit.txt +++ b/tests/data/parser/inline/0061_struct_lit.txt @@ -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) diff --git a/tests/data/parser/inline/0062_deref_expr.txt b/tests/data/parser/inline/0062_deref_expr.txt index 10ff50e8b..c7e61992a 100644 --- a/tests/data/parser/inline/0062_deref_expr.txt +++ b/tests/data/parser/inline/0062_deref_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0063_lambda_expr.txt b/tests/data/parser/inline/0063_lambda_expr.txt index 1a9a28524..9d2c0f8fc 100644 --- a/tests/data/parser/inline/0063_lambda_expr.txt +++ b/tests/data/parser/inline/0063_lambda_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0064_param_list.txt b/tests/data/parser/inline/0064_param_list.txt index eebed8177..d88f8aa4e 100644 --- a/tests/data/parser/inline/0064_param_list.txt +++ b/tests/data/parser/inline/0064_param_list.txt @@ -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) diff --git a/tests/data/parser/inline/0065_if_expr.txt b/tests/data/parser/inline/0065_if_expr.txt index 5d9bdfb13..dafe536d2 100644 --- a/tests/data/parser/inline/0065_if_expr.txt +++ b/tests/data/parser/inline/0065_if_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0066_lambda_expr.txt b/tests/data/parser/inline/0066_lambda_expr.txt index 8c6bc7522..83f4165df 100644 --- a/tests/data/parser/inline/0066_lambda_expr.txt +++ b/tests/data/parser/inline/0066_lambda_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0066_not_expr.txt b/tests/data/parser/inline/0066_not_expr.txt index 3e950969e..bd8d760f4 100644 --- a/tests/data/parser/inline/0066_not_expr.txt +++ b/tests/data/parser/inline/0066_not_expr.txt @@ -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) diff --git a/tests/data/parser/inline/0067_block_expr.rs b/tests/data/parser/inline/0067_block_expr.rs new file mode 100644 index 000000000..ec3780a04 --- /dev/null +++ b/tests/data/parser/inline/0067_block_expr.rs @@ -0,0 +1,4 @@ +fn foo() { + {}; + unsafe {}; +} diff --git a/tests/data/parser/inline/0067_block_expr.txt b/tests/data/parser/inline/0067_block_expr.txt new file mode 100644 index 000000000..2ba46ec56 --- /dev/null +++ b/tests/data/parser/inline/0067_block_expr.txt @@ -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) diff --git a/tests/data/parser/ok/0005_fn_item.txt b/tests/data/parser/ok/0005_fn_item.txt index 130571f60..d4ecc61b6 100644 --- a/tests/data/parser/ok/0005_fn_item.txt +++ b/tests/data/parser/ok/0005_fn_item.txt @@ -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) diff --git a/tests/data/parser/ok/0008_mod_item.txt b/tests/data/parser/ok/0008_mod_item.txt index 3a2e83654..8d07a2f9a 100644 --- a/tests/data/parser/ok/0008_mod_item.txt +++ b/tests/data/parser/ok/0008_mod_item.txt @@ -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) diff --git a/tests/data/parser/ok/0011_outer_attribute.txt b/tests/data/parser/ok/0011_outer_attribute.txt index b1e997617..b94ba758a 100644 --- a/tests/data/parser/ok/0011_outer_attribute.txt +++ b/tests/data/parser/ok/0011_outer_attribute.txt @@ -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) diff --git a/tests/data/parser/ok/0012_visibility.txt b/tests/data/parser/ok/0012_visibility.txt index b0164f26d..141f03c60 100644 --- a/tests/data/parser/ok/0012_visibility.txt +++ b/tests/data/parser/ok/0012_visibility.txt @@ -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) diff --git a/tests/data/parser/ok/0017_attr_trailing_comma.txt b/tests/data/parser/ok/0017_attr_trailing_comma.txt index b043973af..3b8b53634 100644 --- a/tests/data/parser/ok/0017_attr_trailing_comma.txt +++ b/tests/data/parser/ok/0017_attr_trailing_comma.txt @@ -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) diff --git a/tests/data/parser/ok/0021_extern_fn.txt b/tests/data/parser/ok/0021_extern_fn.txt index 502b0181d..c623253a4 100644 --- a/tests/data/parser/ok/0021_extern_fn.txt +++ b/tests/data/parser/ok/0021_extern_fn.txt @@ -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) diff --git a/tests/data/parser/ok/0022_empty_extern_block.txt b/tests/data/parser/ok/0022_empty_extern_block.txt index 789cba364..2f79d5749 100644 --- a/tests/data/parser/ok/0022_empty_extern_block.txt +++ b/tests/data/parser/ok/0022_empty_extern_block.txt @@ -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) -- cgit v1.2.3