Skip to content

Commit 3a859e5

Browse files
committed
Nest attrs into exprs in function args
1 parent b7c45fb commit 3a859e5

File tree

3 files changed

+23
-32
lines changed

3 files changed

+23
-32
lines changed

crates/ra_parser/src/grammar/expressions.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -564,12 +564,9 @@ fn arg_list(p: &mut Parser) {
564564
// fn main() {
565565
// foo(#[attr] 92)
566566
// }
567-
attributes::outer_attributes(p);
568-
if !p.at_ts(EXPR_FIRST) {
569-
p.error("expected expression");
567+
if !expr_with_attrs(p) {
570568
break;
571569
}
572-
expr(p);
573570
if !p.at(T![')']) && !p.expect(T![,]) {
574571
break;
575572
}

crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ SOURCE_FILE@[0; 112)
5454
BLOCK@[41; 68)
5555
L_CURLY@[41; 42) "{"
5656
WHITESPACE@[42; 43) " "
57-
EXPR_STMT@[43; 52)
58-
CALL_EXPR@[43; 52)
57+
EXPR_STMT@[43; 54)
58+
CALL_EXPR@[43; 54)
5959
PATH_EXPR@[43; 46)
6060
PATH@[43; 46)
6161
PATH_SEGMENT@[43; 46)
6262
NAME_REF@[43; 46)
6363
IDENT@[43; 46) "foo"
64-
ARG_LIST@[46; 52)
64+
ARG_LIST@[46; 54)
6565
L_PAREN@[46; 47) "("
6666
LITERAL@[47; 48)
6767
INT_NUMBER@[47; 48) "1"
@@ -70,10 +70,9 @@ SOURCE_FILE@[0; 112)
7070
LITERAL@[50; 51)
7171
INT_NUMBER@[50; 51) "2"
7272
COMMA@[51; 52) ","
73-
WHITESPACE@[52; 53) " "
74-
EXPR_STMT@[53; 54)
75-
ERROR@[53; 54)
76-
AT@[53; 54) "@"
73+
WHITESPACE@[52; 53) " "
74+
ERROR@[53; 54)
75+
AT@[53; 54) "@"
7776
EXPR_STMT@[54; 55)
7877
ERROR@[54; 55)
7978
COMMA@[54; 55) ","
@@ -104,8 +103,8 @@ SOURCE_FILE@[0; 112)
104103
BLOCK@[76; 111)
105104
L_CURLY@[76; 77) "{"
106105
WHITESPACE@[77; 78) " "
107-
EXPR_STMT@[78; 91)
108-
METHOD_CALL_EXPR@[78; 91)
106+
EXPR_STMT@[78; 93)
107+
METHOD_CALL_EXPR@[78; 93)
109108
PATH_EXPR@[78; 81)
110109
PATH@[78; 81)
111110
PATH_SEGMENT@[78; 81)
@@ -114,7 +113,7 @@ SOURCE_FILE@[0; 112)
114113
DOT@[81; 82) "."
115114
NAME_REF@[82; 85)
116115
IDENT@[82; 85) "bar"
117-
ARG_LIST@[85; 91)
116+
ARG_LIST@[85; 93)
118117
L_PAREN@[85; 86) "("
119118
LITERAL@[86; 87)
120119
INT_NUMBER@[86; 87) "1"
@@ -123,10 +122,9 @@ SOURCE_FILE@[0; 112)
123122
LITERAL@[89; 90)
124123
INT_NUMBER@[89; 90) "2"
125124
COMMA@[90; 91) ","
126-
WHITESPACE@[91; 92) " "
127-
EXPR_STMT@[92; 93)
128-
ERROR@[92; 93)
129-
AT@[92; 93) "@"
125+
WHITESPACE@[91; 92) " "
126+
ERROR@[92; 93)
127+
AT@[92; 93) "@"
130128
EXPR_STMT@[93; 94)
131129
ERROR@[93; 94)
132130
COMMA@[93; 94) ","
@@ -159,8 +157,6 @@ error 25: expected a name
159157
error 26: expected `;`, `{`, or `(`
160158
error 30: expected pattern
161159
error 31: expected SEMI
162-
error 52: expected expression
163-
error 52: expected SEMI
164160
error 53: expected expression
165161
error 54: expected SEMI
166162
error 54: expected expression
@@ -172,8 +168,6 @@ error 61: expected SEMI
172168
error 65: expected pattern
173169
error 65: expected SEMI
174170
error 65: expected expression
175-
error 91: expected expression
176-
error 91: expected SEMI
177171
error 92: expected expression
178172
error 93: expected SEMI
179173
error 93: expected expression

crates/ra_syntax/test_data/parser/inline/ok/0152_arg_with_attr.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ SOURCE_FILE@[0; 34)
2020
IDENT@[16; 19) "foo"
2121
ARG_LIST@[19; 31)
2222
L_PAREN@[19; 20) "("
23-
ATTR@[20; 27)
24-
POUND@[20; 21) "#"
25-
L_BRACK@[21; 22) "["
26-
PATH@[22; 26)
27-
PATH_SEGMENT@[22; 26)
28-
NAME_REF@[22; 26)
29-
IDENT@[22; 26) "attr"
30-
R_BRACK@[26; 27) "]"
31-
WHITESPACE@[27; 28) " "
32-
LITERAL@[28; 30)
23+
LITERAL@[20; 30)
24+
ATTR@[20; 27)
25+
POUND@[20; 21) "#"
26+
L_BRACK@[21; 22) "["
27+
PATH@[22; 26)
28+
PATH_SEGMENT@[22; 26)
29+
NAME_REF@[22; 26)
30+
IDENT@[22; 26) "attr"
31+
R_BRACK@[26; 27) "]"
32+
WHITESPACE@[27; 28) " "
3333
INT_NUMBER@[28; 30) "92"
3434
R_PAREN@[30; 31) ")"
3535
WHITESPACE@[31; 32) "\n"

0 commit comments

Comments
 (0)