Skip to content

Commit f4e48ad

Browse files
committed
Parse attr in rhs of let stmts
1 parent e0c6e10 commit f4e48ad

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

crates/ra_parser/src/grammar/expressions.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ pub(super) fn stmt(p: &mut Parser, with_semi: StmtWithSemi) {
169169
// let d: i32 = 92;
170170
// let e: !;
171171
// let _: ! = {};
172+
// let f = #[attr]||{};
172173
// }
173174
fn let_stmt(p: &mut Parser, m: Marker, with_semi: StmtWithSemi) {
174175
assert!(p.at(T![let]));
@@ -178,7 +179,7 @@ pub(super) fn stmt(p: &mut Parser, with_semi: StmtWithSemi) {
178179
types::ascription(p);
179180
}
180181
if p.eat(T![=]) {
181-
expressions::expr(p);
182+
expressions::expr_with_attrs(p);
182183
}
183184

184185
match with_semi {

crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ fn foo() {
55
let d: i32 = 92;
66
let e: !;
77
let _: ! = {};
8+
let f = #[attr]||{};
89
}

crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.txt

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
SOURCE_FILE@[0; 110)
2-
FN_DEF@[0; 109)
1+
SOURCE_FILE@[0; 135)
2+
FN_DEF@[0; 134)
33
FN_KW@[0; 2) "fn"
44
WHITESPACE@[2; 3) " "
55
NAME@[3; 6)
@@ -8,8 +8,8 @@ SOURCE_FILE@[0; 110)
88
L_PAREN@[6; 7) "("
99
R_PAREN@[7; 8) ")"
1010
WHITESPACE@[8; 9) " "
11-
BLOCK_EXPR@[9; 109)
12-
BLOCK@[9; 109)
11+
BLOCK_EXPR@[9; 134)
12+
BLOCK@[9; 134)
1313
L_CURLY@[9; 10) "{"
1414
WHITESPACE@[10; 15) "\n "
1515
LET_STMT@[15; 21)
@@ -97,6 +97,33 @@ SOURCE_FILE@[0; 110)
9797
L_CURLY@[104; 105) "{"
9898
R_CURLY@[105; 106) "}"
9999
SEMI@[106; 107) ";"
100-
WHITESPACE@[107; 108) "\n"
101-
R_CURLY@[108; 109) "}"
102-
WHITESPACE@[109; 110) "\n"
100+
WHITESPACE@[107; 112) "\n "
101+
LET_STMT@[112; 132)
102+
LET_KW@[112; 115) "let"
103+
WHITESPACE@[115; 116) " "
104+
BIND_PAT@[116; 117)
105+
NAME@[116; 117)
106+
IDENT@[116; 117) "f"
107+
WHITESPACE@[117; 118) " "
108+
EQ@[118; 119) "="
109+
WHITESPACE@[119; 120) " "
110+
LAMBDA_EXPR@[120; 131)
111+
ATTR@[120; 127)
112+
POUND@[120; 121) "#"
113+
L_BRACK@[121; 122) "["
114+
PATH@[122; 126)
115+
PATH_SEGMENT@[122; 126)
116+
NAME_REF@[122; 126)
117+
IDENT@[122; 126) "attr"
118+
R_BRACK@[126; 127) "]"
119+
PARAM_LIST@[127; 129)
120+
PIPE@[127; 128) "|"
121+
PIPE@[128; 129) "|"
122+
BLOCK_EXPR@[129; 131)
123+
BLOCK@[129; 131)
124+
L_CURLY@[129; 130) "{"
125+
R_CURLY@[130; 131) "}"
126+
SEMI@[131; 132) ";"
127+
WHITESPACE@[132; 133) "\n"
128+
R_CURLY@[133; 134) "}"
129+
WHITESPACE@[134; 135) "\n"

0 commit comments

Comments
 (0)