aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_syntax/src/grammar/expressions.rs6
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs3
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt56
3 files changed, 65 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/grammar/expressions.rs b/crates/ra_syntax/src/grammar/expressions.rs
index 1608b1a73..da78d85a2 100644
--- a/crates/ra_syntax/src/grammar/expressions.rs
+++ b/crates/ra_syntax/src/grammar/expressions.rs
@@ -42,9 +42,15 @@ pub(crate) fn block(p: &mut Parser) {
42 } 42 }
43 let m = p.start(); 43 let m = p.start();
44 p.bump(); 44 p.bump();
45
45 while !p.at(EOF) && !p.at(R_CURLY) { 46 while !p.at(EOF) && !p.at(R_CURLY) {
46 match p.current() { 47 match p.current() {
47 LET_KW => let_stmt(p), 48 LET_KW => let_stmt(p),
49 // test nocontentexpr
50 // fn foo(){
51 // ;;;some_expr();;;;{;;;};;;;Ok(())
52 // }
53 SEMI => p.bump(),
48 _ => { 54 _ => {
49 // test block_items 55 // test block_items
50 // fn a() { fn b() {} } 56 // fn a() { fn b() {} }
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs
new file mode 100644
index 000000000..bbf09e367
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.rs
@@ -0,0 +1,3 @@
1fn foo(){
2 ;;;some_expr();;;;{;;;};;;;Ok(())
3}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
new file mode 100644
index 000000000..db91e3075
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
@@ -0,0 +1,56 @@
1SOURCE_FILE@[0; 50)
2 FN_DEF@[0; 49)
3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3)
5 NAME@[3; 6)
6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7)
9 R_PAREN@[7; 8)
10 BLOCK@[8; 49)
11 L_CURLY@[8; 9)
12 WHITESPACE@[9; 14)
13 SEMI@[14; 15)
14 SEMI@[15; 16)
15 SEMI@[16; 17)
16 EXPR_STMT@[17; 29)
17 CALL_EXPR@[17; 28)
18 PATH_EXPR@[17; 26)
19 PATH@[17; 26)
20 PATH_SEGMENT@[17; 26)
21 NAME_REF@[17; 26)
22 IDENT@[17; 26) "some_expr"
23 ARG_LIST@[26; 28)
24 L_PAREN@[26; 27)
25 R_PAREN@[27; 28)
26 SEMI@[28; 29)
27 SEMI@[29; 30)
28 SEMI@[30; 31)
29 SEMI@[31; 32)
30 EXPR_STMT@[32; 38)
31 BLOCK_EXPR@[32; 37)
32 BLOCK@[32; 37)
33 L_CURLY@[32; 33)
34 SEMI@[33; 34)
35 SEMI@[34; 35)
36 SEMI@[35; 36)
37 R_CURLY@[36; 37)
38 SEMI@[37; 38)
39 SEMI@[38; 39)
40 SEMI@[39; 40)
41 SEMI@[40; 41)
42 CALL_EXPR@[41; 47)
43 PATH_EXPR@[41; 43)
44 PATH@[41; 43)
45 PATH_SEGMENT@[41; 43)
46 NAME_REF@[41; 43)
47 IDENT@[41; 43) "Ok"
48 ARG_LIST@[43; 47)
49 L_PAREN@[43; 44)
50 TUPLE_EXPR@[44; 46)
51 L_PAREN@[44; 45)
52 R_PAREN@[45; 46)
53 R_PAREN@[46; 47)
54 WHITESPACE@[47; 48)
55 R_CURLY@[48; 49)
56 WHITESPACE@[49; 50)