From 7055d43c3a1edca16cf5625f1b908643fa0bf21a Mon Sep 17 00:00:00 2001 From: DJMcNab <36049421+DJMcNab@users.noreply.github.com> Date: Sat, 26 Jan 2019 22:02:23 +0000 Subject: Make attrs be a child of the let statement --- crates/ra_syntax/src/grammar/expressions.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'crates/ra_syntax/src/grammar/expressions.rs') diff --git a/crates/ra_syntax/src/grammar/expressions.rs b/crates/ra_syntax/src/grammar/expressions.rs index 0b2f7b116..8dd9587d0 100644 --- a/crates/ra_syntax/src/grammar/expressions.rs +++ b/crates/ra_syntax/src/grammar/expressions.rs @@ -45,7 +45,10 @@ pub(crate) fn block(p: &mut Parser) { while !p.at(EOF) && !p.at(R_CURLY) { match p.current() { - LET_KW => let_stmt(p), + LET_KW => { + let m = p.start(); + let_stmt(p, m) + } // test nocontentexpr // fn foo(){ // ;;;some_expr();;;;{;;;};;;;Ok(()) @@ -54,8 +57,9 @@ pub(crate) fn block(p: &mut Parser) { _ => { // test block_items // fn a() { fn b() {} } - let has_attrs = p.at(POUND); let m = p.start(); + let has_attrs = p.at(POUND); + attributes::outer_attributes(p); match items::maybe_item(p, items::ItemFlavor::Mod) { items::MaybeItem::Item(kind) => { m.complete(p, kind); @@ -68,10 +72,10 @@ pub(crate) fn block(p: &mut Parser) { // fn foo() { pub 92; } //FIXME items::MaybeItem::None => { if has_attrs { - m.abandon(p); if p.at(LET_KW) { - let_stmt(p); + let_stmt(p, m); } else { + m.abandon(p); p.error("expected a let statement"); } } else { @@ -116,9 +120,8 @@ pub(crate) fn block(p: &mut Parser) { // let c = 92; // let d: i32 = 92; // } - fn let_stmt(p: &mut Parser) { + fn let_stmt(p: &mut Parser, m: Marker) { assert!(p.at(LET_KW)); - let m = p.start(); p.bump(); patterns::pattern(p); if p.at(COLON) { -- cgit v1.2.3