mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-13 13:48:50 +00:00
Merge #2863
2863: Minimize test r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
91171dedd4
9 changed files with 89 additions and 191 deletions
|
@ -8,28 +8,6 @@ pub(super) fn inner_attributes(p: &mut Parser) {
|
|||
}
|
||||
}
|
||||
|
||||
pub(super) fn with_outer_attributes(
|
||||
p: &mut Parser,
|
||||
f: impl Fn(&mut Parser) -> Option<CompletedMarker>,
|
||||
) -> bool {
|
||||
let am = p.start();
|
||||
let has_attrs = p.at(T![#]);
|
||||
attributes::outer_attributes(p);
|
||||
let cm = f(p);
|
||||
let success = cm.is_some();
|
||||
|
||||
match (has_attrs, cm) {
|
||||
(true, Some(cm)) => {
|
||||
let kind = cm.kind();
|
||||
cm.undo_completion(p).abandon(p);
|
||||
am.complete(p, kind);
|
||||
}
|
||||
_ => am.abandon(p),
|
||||
}
|
||||
|
||||
success
|
||||
}
|
||||
|
||||
pub(super) fn outer_attributes(p: &mut Parser) {
|
||||
while p.at(T![#]) {
|
||||
attribute(p, false)
|
||||
|
|
|
@ -181,47 +181,42 @@ fn tuple_expr(p: &mut Parser) -> CompletedMarker {
|
|||
fn array_expr(p: &mut Parser) -> CompletedMarker {
|
||||
assert!(p.at(T!['[']));
|
||||
let m = p.start();
|
||||
|
||||
let mut n_exprs = 0u32;
|
||||
let mut has_semi = false;
|
||||
|
||||
p.bump(T!['[']);
|
||||
if p.eat(T![']']) {
|
||||
return m.complete(p, ARRAY_EXPR);
|
||||
}
|
||||
|
||||
// test first_array_member_attributes
|
||||
// pub const A: &[i64] = &[
|
||||
// #[cfg(test)]
|
||||
// 1,
|
||||
// 2,
|
||||
// ];
|
||||
attributes::with_outer_attributes(p, |p| expr(p).0);
|
||||
|
||||
if p.eat(T![;]) {
|
||||
expr(p);
|
||||
p.expect(T![']']);
|
||||
return m.complete(p, ARRAY_EXPR);
|
||||
}
|
||||
while !p.at(EOF) && !p.at(T![']']) {
|
||||
p.expect(T![,]);
|
||||
if p.at(T![']']) {
|
||||
break;
|
||||
n_exprs += 1;
|
||||
|
||||
// test array_attrs
|
||||
// const A: &[i64] = &[1, #[cfg(test)] 2];
|
||||
let m = p.start();
|
||||
let has_attrs = p.at(T![#]);
|
||||
attributes::outer_attributes(p);
|
||||
|
||||
let cm = expr(p).0;
|
||||
|
||||
match (has_attrs, cm) {
|
||||
(true, Some(cm)) => {
|
||||
let kind = cm.kind();
|
||||
cm.undo_completion(p).abandon(p);
|
||||
m.complete(p, kind);
|
||||
}
|
||||
_ => m.abandon(p),
|
||||
}
|
||||
|
||||
// test subsequent_array_member_attributes
|
||||
// pub const A: &[i64] = &[
|
||||
// 1,
|
||||
// #[cfg(test)]
|
||||
// 2,
|
||||
// ];
|
||||
if !attributes::with_outer_attributes(p, |p| {
|
||||
if !p.at_ts(EXPR_FIRST) {
|
||||
p.error("expected expression");
|
||||
return None;
|
||||
}
|
||||
expr(p).0
|
||||
}) {
|
||||
if n_exprs == 1 && p.eat(T![;]) {
|
||||
has_semi = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if has_semi || !p.at(T![']']) && !p.expect(T![,]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
p.expect(T![']']);
|
||||
|
||||
m.complete(p, ARRAY_EXPR)
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ SOURCE_FILE@[0; 112)
|
|||
BLOCK@[7; 33)
|
||||
L_CURLY@[7; 8) "{"
|
||||
WHITESPACE@[8; 9) " "
|
||||
EXPR_STMT@[9; 15)
|
||||
ARRAY_EXPR@[9; 15)
|
||||
EXPR_STMT@[9; 26)
|
||||
ARRAY_EXPR@[9; 26)
|
||||
L_BRACK@[9; 10) "["
|
||||
LITERAL@[10; 11)
|
||||
INT_NUMBER@[10; 11) "1"
|
||||
|
@ -22,17 +22,13 @@ SOURCE_FILE@[0; 112)
|
|||
LITERAL@[13; 14)
|
||||
INT_NUMBER@[13; 14) "2"
|
||||
COMMA@[14; 15) ","
|
||||
WHITESPACE@[15; 16) " "
|
||||
EXPR_STMT@[16; 17)
|
||||
ERROR@[16; 17)
|
||||
AT@[16; 17) "@"
|
||||
EXPR_STMT@[17; 18)
|
||||
ERROR@[17; 18)
|
||||
WHITESPACE@[15; 16) " "
|
||||
ERROR@[16; 17)
|
||||
AT@[16; 17) "@"
|
||||
COMMA@[17; 18) ","
|
||||
WHITESPACE@[18; 19) " "
|
||||
STRUCT_DEF@[19; 26)
|
||||
STRUCT_KW@[19; 25) "struct"
|
||||
ERROR@[25; 26)
|
||||
WHITESPACE@[18; 19) " "
|
||||
ERROR@[19; 25)
|
||||
STRUCT_KW@[19; 25) "struct"
|
||||
COMMA@[25; 26) ","
|
||||
WHITESPACE@[26; 27) " "
|
||||
LET_STMT@[27; 31)
|
||||
|
@ -151,15 +147,12 @@ SOURCE_FILE@[0; 112)
|
|||
WHITESPACE@[109; 110) " "
|
||||
R_CURLY@[110; 111) "}"
|
||||
WHITESPACE@[111; 112) "\n"
|
||||
error 15: expected expression
|
||||
error 15: expected R_BRACK
|
||||
error 15: expected SEMI
|
||||
error 16: expected expression
|
||||
error 17: expected SEMI
|
||||
error 17: expected expression
|
||||
error 18: expected SEMI
|
||||
error 25: expected a name
|
||||
error 26: expected `;`, `{`, or `(`
|
||||
error 19: expected expression
|
||||
error 26: expected expression
|
||||
error 26: expected COMMA
|
||||
error 26: expected R_BRACK
|
||||
error 26: expected SEMI
|
||||
error 30: expected pattern
|
||||
error 31: expected SEMI
|
||||
error 52: expected expression
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
pub const A: &[i64] = &[
|
||||
#[cfg(test)]
|
||||
1,
|
||||
2,
|
||||
];
|
|
@ -1,53 +0,0 @@
|
|||
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; 45)
|
||||
ATTR@[28; 40)
|
||||
POUND@[28; 29) "#"
|
||||
L_BRACK@[29; 30) "["
|
||||
PATH@[30; 33)
|
||||
PATH_SEGMENT@[30; 33)
|
||||
NAME_REF@[30; 33)
|
||||
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 "
|
||||
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"
|
|
@ -1,5 +0,0 @@
|
|||
pub const A: &[i64] = &[
|
||||
1,
|
||||
#[cfg(test)]
|
||||
2,
|
||||
];
|
|
@ -1,53 +0,0 @@
|
|||
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 "
|
||||
LITERAL@[34; 51)
|
||||
ATTR@[34; 46)
|
||||
POUND@[34; 35) "#"
|
||||
L_BRACK@[35; 36) "["
|
||||
PATH@[36; 39)
|
||||
PATH_SEGMENT@[36; 39)
|
||||
NAME_REF@[36; 39)
|
||||
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 "
|
||||
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 @@
|
|||
const A: &[i64] = &[1, #[cfg(test)] 2];
|
|
@ -0,0 +1,47 @@
|
|||
SOURCE_FILE@[0; 40)
|
||||
CONST_DEF@[0; 39)
|
||||
CONST_KW@[0; 5) "const"
|
||||
WHITESPACE@[5; 6) " "
|
||||
NAME@[6; 7)
|
||||
IDENT@[6; 7) "A"
|
||||
COLON@[7; 8) ":"
|
||||
WHITESPACE@[8; 9) " "
|
||||
REFERENCE_TYPE@[9; 15)
|
||||
AMP@[9; 10) "&"
|
||||
SLICE_TYPE@[10; 15)
|
||||
L_BRACK@[10; 11) "["
|
||||
PATH_TYPE@[11; 14)
|
||||
PATH@[11; 14)
|
||||
PATH_SEGMENT@[11; 14)
|
||||
NAME_REF@[11; 14)
|
||||
IDENT@[11; 14) "i64"
|
||||
R_BRACK@[14; 15) "]"
|
||||
WHITESPACE@[15; 16) " "
|
||||
EQ@[16; 17) "="
|
||||
WHITESPACE@[17; 18) " "
|
||||
REF_EXPR@[18; 38)
|
||||
AMP@[18; 19) "&"
|
||||
ARRAY_EXPR@[19; 38)
|
||||
L_BRACK@[19; 20) "["
|
||||
LITERAL@[20; 21)
|
||||
INT_NUMBER@[20; 21) "1"
|
||||
COMMA@[21; 22) ","
|
||||
WHITESPACE@[22; 23) " "
|
||||
LITERAL@[23; 37)
|
||||
ATTR@[23; 35)
|
||||
POUND@[23; 24) "#"
|
||||
L_BRACK@[24; 25) "["
|
||||
PATH@[25; 28)
|
||||
PATH_SEGMENT@[25; 28)
|
||||
NAME_REF@[25; 28)
|
||||
IDENT@[25; 28) "cfg"
|
||||
TOKEN_TREE@[28; 34)
|
||||
L_PAREN@[28; 29) "("
|
||||
IDENT@[29; 33) "test"
|
||||
R_PAREN@[33; 34) ")"
|
||||
R_BRACK@[34; 35) "]"
|
||||
WHITESPACE@[35; 36) " "
|
||||
INT_NUMBER@[36; 37) "2"
|
||||
R_BRACK@[37; 38) "]"
|
||||
SEMI@[38; 39) ";"
|
||||
WHITESPACE@[39; 40) "\n"
|
Loading…
Reference in a new issue