Make attrs be a child of the let statement
This commit is contained in:
parent
55a3e21ac4
commit
7055d43c3a
3 changed files with 26 additions and 23 deletions
|
@ -45,7 +45,10 @@ pub(crate) fn block(p: &mut Parser) {
|
||||||
|
|
||||||
while !p.at(EOF) && !p.at(R_CURLY) {
|
while !p.at(EOF) && !p.at(R_CURLY) {
|
||||||
match p.current() {
|
match p.current() {
|
||||||
LET_KW => let_stmt(p),
|
LET_KW => {
|
||||||
|
let m = p.start();
|
||||||
|
let_stmt(p, m)
|
||||||
|
}
|
||||||
// test nocontentexpr
|
// test nocontentexpr
|
||||||
// fn foo(){
|
// fn foo(){
|
||||||
// ;;;some_expr();;;;{;;;};;;;Ok(())
|
// ;;;some_expr();;;;{;;;};;;;Ok(())
|
||||||
|
@ -54,8 +57,9 @@ pub(crate) fn block(p: &mut Parser) {
|
||||||
_ => {
|
_ => {
|
||||||
// test block_items
|
// test block_items
|
||||||
// fn a() { fn b() {} }
|
// fn a() { fn b() {} }
|
||||||
let has_attrs = p.at(POUND);
|
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
|
let has_attrs = p.at(POUND);
|
||||||
|
attributes::outer_attributes(p);
|
||||||
match items::maybe_item(p, items::ItemFlavor::Mod) {
|
match items::maybe_item(p, items::ItemFlavor::Mod) {
|
||||||
items::MaybeItem::Item(kind) => {
|
items::MaybeItem::Item(kind) => {
|
||||||
m.complete(p, kind);
|
m.complete(p, kind);
|
||||||
|
@ -68,10 +72,10 @@ pub(crate) fn block(p: &mut Parser) {
|
||||||
// fn foo() { pub 92; } //FIXME
|
// fn foo() { pub 92; } //FIXME
|
||||||
items::MaybeItem::None => {
|
items::MaybeItem::None => {
|
||||||
if has_attrs {
|
if has_attrs {
|
||||||
m.abandon(p);
|
|
||||||
if p.at(LET_KW) {
|
if p.at(LET_KW) {
|
||||||
let_stmt(p);
|
let_stmt(p, m);
|
||||||
} else {
|
} else {
|
||||||
|
m.abandon(p);
|
||||||
p.error("expected a let statement");
|
p.error("expected a let statement");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -116,9 +120,8 @@ pub(crate) fn block(p: &mut Parser) {
|
||||||
// let c = 92;
|
// let c = 92;
|
||||||
// let d: i32 = 92;
|
// let d: i32 = 92;
|
||||||
// }
|
// }
|
||||||
fn let_stmt(p: &mut Parser) {
|
fn let_stmt(p: &mut Parser, m: Marker) {
|
||||||
assert!(p.at(LET_KW));
|
assert!(p.at(LET_KW));
|
||||||
let m = p.start();
|
|
||||||
p.bump();
|
p.bump();
|
||||||
patterns::pattern(p);
|
patterns::pattern(p);
|
||||||
if p.at(COLON) {
|
if p.at(COLON) {
|
||||||
|
|
|
@ -36,6 +36,7 @@ pub(super) const ITEM_RECOVERY_SET: TokenSet = token_set![
|
||||||
|
|
||||||
pub(super) fn item_or_macro(p: &mut Parser, stop_on_r_curly: bool, flavor: ItemFlavor) {
|
pub(super) fn item_or_macro(p: &mut Parser, stop_on_r_curly: bool, flavor: ItemFlavor) {
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
|
attributes::outer_attributes(p);
|
||||||
match maybe_item(p, flavor) {
|
match maybe_item(p, flavor) {
|
||||||
MaybeItem::Item(kind) => {
|
MaybeItem::Item(kind) => {
|
||||||
m.complete(p, kind);
|
m.complete(p, kind);
|
||||||
|
@ -79,7 +80,6 @@ pub(super) enum MaybeItem {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn maybe_item(p: &mut Parser, flavor: ItemFlavor) -> MaybeItem {
|
pub(super) fn maybe_item(p: &mut Parser, flavor: ItemFlavor) -> MaybeItem {
|
||||||
attributes::outer_attributes(p);
|
|
||||||
opt_visibility(p);
|
opt_visibility(p);
|
||||||
if let Some(kind) = items_without_modifiers(p) {
|
if let Some(kind) = items_without_modifiers(p) {
|
||||||
return MaybeItem::Item(kind);
|
return MaybeItem::Item(kind);
|
||||||
|
|
|
@ -13,6 +13,7 @@ SOURCE_FILE@[0; 166)
|
||||||
BLOCK@[71; 165)
|
BLOCK@[71; 165)
|
||||||
L_CURLY@[71; 72)
|
L_CURLY@[71; 72)
|
||||||
WHITESPACE@[72; 77)
|
WHITESPACE@[72; 77)
|
||||||
|
LET_STMT@[77; 163)
|
||||||
ATTR@[77; 106)
|
ATTR@[77; 106)
|
||||||
POUND@[77; 78)
|
POUND@[77; 78)
|
||||||
TOKEN_TREE@[78; 106)
|
TOKEN_TREE@[78; 106)
|
||||||
|
@ -28,7 +29,6 @@ SOURCE_FILE@[0; 166)
|
||||||
R_PAREN@[104; 105)
|
R_PAREN@[104; 105)
|
||||||
R_BRACK@[105; 106)
|
R_BRACK@[105; 106)
|
||||||
WHITESPACE@[106; 111)
|
WHITESPACE@[106; 111)
|
||||||
LET_STMT@[111; 163)
|
|
||||||
LET_KW@[111; 114)
|
LET_KW@[111; 114)
|
||||||
WHITESPACE@[114; 115)
|
WHITESPACE@[114; 115)
|
||||||
BIND_PAT@[115; 124)
|
BIND_PAT@[115; 124)
|
||||||
|
|
Loading…
Add table
Reference in a new issue