Stop using let_stmt twice

This commit is contained in:
DJMcNab 2019-01-27 09:00:57 +00:00
parent 7055d43c3a
commit 4d35cc3875

View file

@ -45,10 +45,6 @@ pub(crate) fn block(p: &mut Parser) {
while !p.at(EOF) && !p.at(R_CURLY) {
match p.current() {
LET_KW => {
let m = p.start();
let_stmt(p, m)
}
// test nocontentexpr
// fn foo(){
// ;;;some_expr();;;;{;;;};;;;Ok(())
@ -60,6 +56,9 @@ pub(crate) fn block(p: &mut Parser) {
let m = p.start();
let has_attrs = p.at(POUND);
attributes::outer_attributes(p);
if p.at(LET_KW) {
let_stmt(p, m);
} else {
match items::maybe_item(p, items::ItemFlavor::Mod) {
items::MaybeItem::Item(kind) => {
m.complete(p, kind);
@ -72,12 +71,10 @@ pub(crate) fn block(p: &mut Parser) {
// fn foo() { pub 92; } //FIXME
items::MaybeItem::None => {
if has_attrs {
if p.at(LET_KW) {
let_stmt(p, m);
} else {
m.abandon(p);
p.error("expected a let statement");
}
p.error(
"expected a let statement or an item after attributes in block",
);
} else {
let is_blocklike = expressions::expr_stmt(p) == BlockLike::Block;
if p.at(R_CURLY) {
@ -110,6 +107,7 @@ pub(crate) fn block(p: &mut Parser) {
}
}
}
}
p.expect(R_CURLY);
m.complete(p, BLOCK);