aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_parser/src/grammar
diff options
context:
space:
mode:
authorzjy <[email protected]>2019-06-26 04:36:14 +0100
committerzjy <[email protected]>2019-06-28 08:22:17 +0100
commitde930237ffb5bec9489443477a5b4ff964f56b0e (patch)
tree69e7567d0a561beea270892ab989d19f08fac3b6 /crates/ra_parser/src/grammar
parent0129790a8f84a0858abcb1448e1052caa01fc41c (diff)
fixed #1384
Diffstat (limited to 'crates/ra_parser/src/grammar')
-rw-r--r--crates/ra_parser/src/grammar/expressions.rs11
-rw-r--r--crates/ra_parser/src/grammar/items.rs16
2 files changed, 20 insertions, 7 deletions
diff --git a/crates/ra_parser/src/grammar/expressions.rs b/crates/ra_parser/src/grammar/expressions.rs
index 795dccea1..298030cb9 100644
--- a/crates/ra_parser/src/grammar/expressions.rs
+++ b/crates/ra_parser/src/grammar/expressions.rs
@@ -181,6 +181,17 @@ pub(crate) fn expr_block_contents(p: &mut Parser) {
181 // fn foo(){ 181 // fn foo(){
182 // ;;;some_expr();;;;{;;;};;;;Ok(()) 182 // ;;;some_expr();;;;{;;;};;;;Ok(())
183 // } 183 // }
184
185 // test nocontentexpr_after_item
186 // fn simple_function() {
187 // enum LocalEnum {
188 // One,
189 // Two,
190 // };
191 // fn f() {};
192 // struct S {};
193 // }
194
184 if p.current() == T![;] { 195 if p.current() == T![;] {
185 p.bump(); 196 p.bump();
186 continue; 197 continue;
diff --git a/crates/ra_parser/src/grammar/items.rs b/crates/ra_parser/src/grammar/items.rs
index 424d0476d..543af7c4b 100644
--- a/crates/ra_parser/src/grammar/items.rs
+++ b/crates/ra_parser/src/grammar/items.rs
@@ -38,7 +38,15 @@ pub(super) fn item_or_macro(p: &mut Parser, stop_on_r_curly: bool, flavor: ItemF
38 let m = p.start(); 38 let m = p.start();
39 attributes::outer_attributes(p); 39 attributes::outer_attributes(p);
40 let m = match maybe_item(p, m, flavor) { 40 let m = match maybe_item(p, m, flavor) {
41 Ok(()) => return, 41 Ok(()) => {
42 if p.at(T![;]) {
43 p.err_and_bump(
44 "expected item, found `;`\n\
45 consider removing this semicolon",
46 );
47 }
48 return;
49 }
42 Err(m) => m, 50 Err(m) => m,
43 }; 51 };
44 if paths::is_path_start(p) { 52 if paths::is_path_start(p) {
@@ -263,12 +271,6 @@ fn items_without_modifiers(p: &mut Parser, m: Marker) -> Result<(), Marker> {
263 } 271 }
264 _ => return Err(m), 272 _ => return Err(m),
265 }; 273 };
266 if p.at(T![;]) {
267 p.err_and_bump(
268 "expected item, found `;`\n\
269 consider removing this semicolon",
270 );
271 }
272 Ok(()) 274 Ok(())
273} 275}
274 276