Merge #1461
1461: Support attributes on array members r=matklad a=etaoins Array members are allowed to have attributes such as `#[cfg]`. Co-authored-by: Ryan Cumming <etaoins@gmail.com>
This commit is contained in:
commit
e18389d268
@ -170,6 +170,15 @@ fn array_expr(p: &mut Parser) -> CompletedMarker {
|
||||
if p.eat(T![']']) {
|
||||
return m.complete(p, ARRAY_EXPR);
|
||||
}
|
||||
|
||||
// test first_array_member_attributes
|
||||
// pub const A: &[i64] = &[
|
||||
// #[cfg(test)]
|
||||
// 1,
|
||||
// 2,
|
||||
// ];
|
||||
attributes::outer_attributes(p);
|
||||
|
||||
expr(p);
|
||||
if p.eat(T![;]) {
|
||||
expr(p);
|
||||
@ -181,6 +190,14 @@ fn array_expr(p: &mut Parser) -> CompletedMarker {
|
||||
if p.at(T![']']) {
|
||||
break;
|
||||
}
|
||||
|
||||
// test subsequent_array_member_attributes
|
||||
// pub const A: &[i64] = &[
|
||||
// 1,
|
||||
// #[cfg(test)]
|
||||
// 2,
|
||||
// ];
|
||||
attributes::outer_attributes(p);
|
||||
if !p.at_ts(EXPR_FIRST) {
|
||||
p.error("expected expression");
|
||||
break;
|
||||
|
@ -0,0 +1,5 @@
|
||||
pub const A: &[i64] = &[
|
||||
#[cfg(test)]
|
||||
1,
|
||||
2,
|
||||
];
|
@ -0,0 +1,51 @@
|
||||
SOURCE_FILE@[0; 56)
|
||||
CONST_DEF@[0; 55)
|
||||
VISIBILITY@[0; 3)
|
||||
PUB_KW@[0; 3) "pub"
|
||||
WHITESPACE@[3; 4) " "
|
||||
CONST_KW@[4; 9) "const"
|
||||
WHITESPACE@[9; 10) " "
|
||||
NAME@[10; 11)
|
||||
IDENT@[10; 11) "A"
|
||||
COLON@[11; 12) ":"
|
||||
WHITESPACE@[12; 13) " "
|
||||
REFERENCE_TYPE@[13; 19)
|
||||
AMP@[13; 14) "&"
|
||||
SLICE_TYPE@[14; 19)
|
||||
L_BRACK@[14; 15) "["
|
||||
PATH_TYPE@[15; 18)
|
||||
PATH@[15; 18)
|
||||
PATH_SEGMENT@[15; 18)
|
||||
NAME_REF@[15; 18)
|
||||
IDENT@[15; 18) "i64"
|
||||
R_BRACK@[18; 19) "]"
|
||||
WHITESPACE@[19; 20) " "
|
||||
EQ@[20; 21) "="
|
||||
WHITESPACE@[21; 22) " "
|
||||
REF_EXPR@[22; 54)
|
||||
AMP@[22; 23) "&"
|
||||
ARRAY_EXPR@[23; 54)
|
||||
L_BRACK@[23; 24) "["
|
||||
WHITESPACE@[24; 28) "\n "
|
||||
ATTR@[28; 40)
|
||||
POUND@[28; 29) "#"
|
||||
TOKEN_TREE@[29; 40)
|
||||
L_BRACK@[29; 30) "["
|
||||
IDENT@[30; 33) "cfg"
|
||||
TOKEN_TREE@[33; 39)
|
||||
L_PAREN@[33; 34) "("
|
||||
IDENT@[34; 38) "test"
|
||||
R_PAREN@[38; 39) ")"
|
||||
R_BRACK@[39; 40) "]"
|
||||
WHITESPACE@[40; 44) "\n "
|
||||
LITERAL@[44; 45)
|
||||
INT_NUMBER@[44; 45) "1"
|
||||
COMMA@[45; 46) ","
|
||||
WHITESPACE@[46; 50) "\n "
|
||||
LITERAL@[50; 51)
|
||||
INT_NUMBER@[50; 51) "2"
|
||||
COMMA@[51; 52) ","
|
||||
WHITESPACE@[52; 53) "\n"
|
||||
R_BRACK@[53; 54) "]"
|
||||
SEMI@[54; 55) ";"
|
||||
WHITESPACE@[55; 56) "\n"
|
@ -0,0 +1,5 @@
|
||||
pub const A: &[i64] = &[
|
||||
1,
|
||||
#[cfg(test)]
|
||||
2,
|
||||
];
|
@ -0,0 +1,51 @@
|
||||
SOURCE_FILE@[0; 56)
|
||||
CONST_DEF@[0; 55)
|
||||
VISIBILITY@[0; 3)
|
||||
PUB_KW@[0; 3) "pub"
|
||||
WHITESPACE@[3; 4) " "
|
||||
CONST_KW@[4; 9) "const"
|
||||
WHITESPACE@[9; 10) " "
|
||||
NAME@[10; 11)
|
||||
IDENT@[10; 11) "A"
|
||||
COLON@[11; 12) ":"
|
||||
WHITESPACE@[12; 13) " "
|
||||
REFERENCE_TYPE@[13; 19)
|
||||
AMP@[13; 14) "&"
|
||||
SLICE_TYPE@[14; 19)
|
||||
L_BRACK@[14; 15) "["
|
||||
PATH_TYPE@[15; 18)
|
||||
PATH@[15; 18)
|
||||
PATH_SEGMENT@[15; 18)
|
||||
NAME_REF@[15; 18)
|
||||
IDENT@[15; 18) "i64"
|
||||
R_BRACK@[18; 19) "]"
|
||||
WHITESPACE@[19; 20) " "
|
||||
EQ@[20; 21) "="
|
||||
WHITESPACE@[21; 22) " "
|
||||
REF_EXPR@[22; 54)
|
||||
AMP@[22; 23) "&"
|
||||
ARRAY_EXPR@[23; 54)
|
||||
L_BRACK@[23; 24) "["
|
||||
WHITESPACE@[24; 28) "\n "
|
||||
LITERAL@[28; 29)
|
||||
INT_NUMBER@[28; 29) "1"
|
||||
COMMA@[29; 30) ","
|
||||
WHITESPACE@[30; 34) "\n "
|
||||
ATTR@[34; 46)
|
||||
POUND@[34; 35) "#"
|
||||
TOKEN_TREE@[35; 46)
|
||||
L_BRACK@[35; 36) "["
|
||||
IDENT@[36; 39) "cfg"
|
||||
TOKEN_TREE@[39; 45)
|
||||
L_PAREN@[39; 40) "("
|
||||
IDENT@[40; 44) "test"
|
||||
R_PAREN@[44; 45) ")"
|
||||
R_BRACK@[45; 46) "]"
|
||||
WHITESPACE@[46; 50) "\n "
|
||||
LITERAL@[50; 51)
|
||||
INT_NUMBER@[50; 51) "2"
|
||||
COMMA@[51; 52) ","
|
||||
WHITESPACE@[52; 53) "\n"
|
||||
R_BRACK@[53; 54) "]"
|
||||
SEMI@[54; 55) ";"
|
||||
WHITESPACE@[55; 56) "\n"
|
Loading…
x
Reference in New Issue
Block a user