mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 14:51:48 +00:00
Don't get stuck in tuple exprs
This commit is contained in:
parent
a0a347eac9
commit
febbc9acdd
4 changed files with 484 additions and 96 deletions
|
@ -0,0 +1,7 @@
|
|||
fn f<T: (Copy) + (?Sized) + (for<'a> Trait<'a>)>() {}
|
||||
|
||||
fn main() {
|
||||
let _: Box<(Copy) + (?Sized) + (for<'a> Trait<'a>)>;
|
||||
let _: Box<(?Sized) + (for<'a> Trait<'a>) + (Copy)>;
|
||||
let _: Box<(for<'a> Trait<'a>) + (Copy) + (?Sized)>;
|
||||
}
|
|
@ -0,0 +1,310 @@
|
|||
ROOT@[0; 240)
|
||||
FN_DEF@[0; 53)
|
||||
FN_KW@[0; 2)
|
||||
WHITESPACE@[2; 3)
|
||||
NAME@[3; 4)
|
||||
IDENT@[3; 4) "f"
|
||||
TYPE_PARAM_LIST@[4; 48)
|
||||
L_ANGLE@[4; 5)
|
||||
TYPE_PARAM@[5; 47)
|
||||
NAME@[5; 6)
|
||||
IDENT@[5; 6) "T"
|
||||
COLON@[6; 7)
|
||||
WHITESPACE@[7; 8)
|
||||
L_PAREN@[8; 9)
|
||||
PATH_TYPE@[9; 13)
|
||||
PATH@[9; 13)
|
||||
PATH_SEGMENT@[9; 13)
|
||||
NAME_REF@[9; 13)
|
||||
IDENT@[9; 13) "Copy"
|
||||
R_PAREN@[13; 14)
|
||||
WHITESPACE@[14; 15)
|
||||
PLUS@[15; 16)
|
||||
WHITESPACE@[16; 17)
|
||||
L_PAREN@[17; 18)
|
||||
QUESTION@[18; 19)
|
||||
PATH_TYPE@[19; 24)
|
||||
PATH@[19; 24)
|
||||
PATH_SEGMENT@[19; 24)
|
||||
NAME_REF@[19; 24)
|
||||
IDENT@[19; 24) "Sized"
|
||||
R_PAREN@[24; 25)
|
||||
WHITESPACE@[25; 26)
|
||||
PLUS@[26; 27)
|
||||
WHITESPACE@[27; 28)
|
||||
L_PAREN@[28; 29)
|
||||
FOR_TYPE@[29; 46)
|
||||
FOR_KW@[29; 32)
|
||||
TYPE_PARAM_LIST@[32; 36)
|
||||
L_ANGLE@[32; 33)
|
||||
LIFETIME_PARAM@[33; 35)
|
||||
LIFETIME@[33; 35) "'a"
|
||||
R_ANGLE@[35; 36)
|
||||
WHITESPACE@[36; 37)
|
||||
PATH_TYPE@[37; 46)
|
||||
PATH@[37; 46)
|
||||
PATH_SEGMENT@[37; 46)
|
||||
NAME_REF@[37; 42)
|
||||
IDENT@[37; 42) "Trait"
|
||||
TYPE_ARG_LIST@[42; 46)
|
||||
L_ANGLE@[42; 43)
|
||||
LIFETIME_ARG@[43; 45)
|
||||
LIFETIME@[43; 45) "'a"
|
||||
R_ANGLE@[45; 46)
|
||||
R_PAREN@[46; 47)
|
||||
R_ANGLE@[47; 48)
|
||||
PARAM_LIST@[48; 50)
|
||||
L_PAREN@[48; 49)
|
||||
R_PAREN@[49; 50)
|
||||
WHITESPACE@[50; 51)
|
||||
BLOCK@[51; 53)
|
||||
L_CURLY@[51; 52)
|
||||
R_CURLY@[52; 53)
|
||||
WHITESPACE@[53; 55)
|
||||
FN_DEF@[55; 239)
|
||||
FN_KW@[55; 57)
|
||||
WHITESPACE@[57; 58)
|
||||
NAME@[58; 62)
|
||||
IDENT@[58; 62) "main"
|
||||
PARAM_LIST@[62; 64)
|
||||
L_PAREN@[62; 63)
|
||||
R_PAREN@[63; 64)
|
||||
WHITESPACE@[64; 65)
|
||||
BLOCK@[65; 239)
|
||||
L_CURLY@[65; 66)
|
||||
WHITESPACE@[66; 71)
|
||||
LET_STMT@[71; 121)
|
||||
LET_KW@[71; 74)
|
||||
WHITESPACE@[74; 75)
|
||||
PLACEHOLDER_PAT@[75; 76)
|
||||
UNDERSCORE@[75; 76)
|
||||
COLON@[76; 77)
|
||||
WHITESPACE@[77; 78)
|
||||
PATH_TYPE@[78; 121)
|
||||
PATH@[78; 88)
|
||||
PATH_SEGMENT@[78; 88)
|
||||
NAME_REF@[78; 81)
|
||||
IDENT@[78; 81) "Box"
|
||||
TYPE_ARG_LIST@[81; 88)
|
||||
L_ANGLE@[81; 82)
|
||||
TYPE_ARG@[82; 88)
|
||||
PAREN_TYPE@[82; 88)
|
||||
L_PAREN@[82; 83)
|
||||
PATH_TYPE@[83; 87)
|
||||
PATH@[83; 87)
|
||||
PATH_SEGMENT@[83; 87)
|
||||
NAME_REF@[83; 87)
|
||||
IDENT@[83; 87) "Copy"
|
||||
R_PAREN@[87; 88)
|
||||
err: `expected COMMA`
|
||||
err: `expected R_ANGLE`
|
||||
WHITESPACE@[88; 89)
|
||||
PLUS@[89; 90)
|
||||
WHITESPACE@[90; 91)
|
||||
L_PAREN@[91; 92)
|
||||
QUESTION@[92; 93)
|
||||
PATH_TYPE@[93; 98)
|
||||
PATH@[93; 98)
|
||||
PATH_SEGMENT@[93; 98)
|
||||
NAME_REF@[93; 98)
|
||||
IDENT@[93; 98) "Sized"
|
||||
R_PAREN@[98; 99)
|
||||
WHITESPACE@[99; 100)
|
||||
PLUS@[100; 101)
|
||||
WHITESPACE@[101; 102)
|
||||
L_PAREN@[102; 103)
|
||||
FOR_TYPE@[103; 120)
|
||||
FOR_KW@[103; 106)
|
||||
TYPE_PARAM_LIST@[106; 110)
|
||||
L_ANGLE@[106; 107)
|
||||
LIFETIME_PARAM@[107; 109)
|
||||
LIFETIME@[107; 109) "'a"
|
||||
R_ANGLE@[109; 110)
|
||||
WHITESPACE@[110; 111)
|
||||
PATH_TYPE@[111; 120)
|
||||
PATH@[111; 120)
|
||||
PATH_SEGMENT@[111; 120)
|
||||
NAME_REF@[111; 116)
|
||||
IDENT@[111; 116) "Trait"
|
||||
TYPE_ARG_LIST@[116; 120)
|
||||
L_ANGLE@[116; 117)
|
||||
LIFETIME_ARG@[117; 119)
|
||||
LIFETIME@[117; 119) "'a"
|
||||
R_ANGLE@[119; 120)
|
||||
R_PAREN@[120; 121)
|
||||
err: `expected SEMI`
|
||||
err: `expected expression`
|
||||
EXPR_STMT@[121; 123)
|
||||
ERROR@[121; 122)
|
||||
R_ANGLE@[121; 122)
|
||||
SEMI@[122; 123)
|
||||
WHITESPACE@[123; 128)
|
||||
LET_STMT@[128; 141)
|
||||
LET_KW@[128; 131)
|
||||
WHITESPACE@[131; 132)
|
||||
PLACEHOLDER_PAT@[132; 133)
|
||||
UNDERSCORE@[132; 133)
|
||||
COLON@[133; 134)
|
||||
WHITESPACE@[134; 135)
|
||||
PATH_TYPE@[135; 141)
|
||||
PATH@[135; 141)
|
||||
PATH_SEGMENT@[135; 141)
|
||||
NAME_REF@[135; 138)
|
||||
IDENT@[135; 138) "Box"
|
||||
TYPE_ARG_LIST@[138; 141)
|
||||
L_ANGLE@[138; 139)
|
||||
TYPE_ARG@[139; 141)
|
||||
PAREN_TYPE@[139; 141)
|
||||
L_PAREN@[139; 140)
|
||||
err: `expected type`
|
||||
ERROR@[140; 141)
|
||||
QUESTION@[140; 141)
|
||||
err: `expected R_PAREN`
|
||||
err: `expected COMMA`
|
||||
err: `expected R_ANGLE`
|
||||
err: `expected SEMI`
|
||||
EXPR_STMT@[141; 146)
|
||||
PATH_EXPR@[141; 146)
|
||||
PATH@[141; 146)
|
||||
PATH_SEGMENT@[141; 146)
|
||||
NAME_REF@[141; 146)
|
||||
IDENT@[141; 146) "Sized"
|
||||
err: `expected SEMI`
|
||||
err: `expected expression`
|
||||
EXPR_STMT@[146; 147)
|
||||
ERROR@[146; 147)
|
||||
R_PAREN@[146; 147)
|
||||
err: `expected SEMI`
|
||||
WHITESPACE@[147; 148)
|
||||
err: `expected expression`
|
||||
EXPR_STMT@[148; 149)
|
||||
ERROR@[148; 149)
|
||||
PLUS@[148; 149)
|
||||
err: `expected SEMI`
|
||||
WHITESPACE@[149; 150)
|
||||
EXPR_STMT@[150; 151)
|
||||
PAREN_EXPR@[150; 151)
|
||||
L_PAREN@[150; 151)
|
||||
err: `expected expression`
|
||||
err: `expected R_PAREN`
|
||||
err: `expected SEMI`
|
||||
EXPR_STMT@[151; 157)
|
||||
FOR_EXPR@[151; 157)
|
||||
FOR_KW@[151; 154)
|
||||
err: `expected pattern`
|
||||
ERROR@[154; 155)
|
||||
L_ANGLE@[154; 155)
|
||||
err: `expected IN_KW`
|
||||
err: `expected expression`
|
||||
ERROR@[155; 157)
|
||||
LIFETIME@[155; 157) "'a"
|
||||
err: `expected a block`
|
||||
err: `expected expression`
|
||||
EXPR_STMT@[157; 158)
|
||||
ERROR@[157; 158)
|
||||
R_ANGLE@[157; 158)
|
||||
err: `expected SEMI`
|
||||
WHITESPACE@[158; 159)
|
||||
EXPR_STMT@[159; 180)
|
||||
BIN_EXPR@[159; 180)
|
||||
BIN_EXPR@[159; 178)
|
||||
BIN_EXPR@[159; 169)
|
||||
BIN_EXPR@[159; 167)
|
||||
PATH_EXPR@[159; 164)
|
||||
PATH@[159; 164)
|
||||
PATH_SEGMENT@[159; 164)
|
||||
NAME_REF@[159; 164)
|
||||
IDENT@[159; 164) "Trait"
|
||||
L_ANGLE@[164; 165)
|
||||
err: `expected expression`
|
||||
ERROR@[165; 167)
|
||||
LIFETIME@[165; 167) "'a"
|
||||
R_ANGLE@[167; 168)
|
||||
err: `expected expression`
|
||||
ERROR@[168; 169)
|
||||
R_PAREN@[168; 169)
|
||||
WHITESPACE@[169; 170)
|
||||
PLUS@[170; 171)
|
||||
WHITESPACE@[171; 172)
|
||||
PAREN_EXPR@[172; 178)
|
||||
L_PAREN@[172; 173)
|
||||
PATH_EXPR@[173; 177)
|
||||
PATH@[173; 177)
|
||||
PATH_SEGMENT@[173; 177)
|
||||
NAME_REF@[173; 177)
|
||||
IDENT@[173; 177) "Copy"
|
||||
R_PAREN@[177; 178)
|
||||
R_ANGLE@[178; 179)
|
||||
err: `expected expression`
|
||||
ERROR@[179; 180)
|
||||
SEMI@[179; 180)
|
||||
err: `expected SEMI`
|
||||
WHITESPACE@[180; 185)
|
||||
LET_STMT@[185; 235)
|
||||
LET_KW@[185; 188)
|
||||
WHITESPACE@[188; 189)
|
||||
PLACEHOLDER_PAT@[189; 190)
|
||||
UNDERSCORE@[189; 190)
|
||||
COLON@[190; 191)
|
||||
WHITESPACE@[191; 192)
|
||||
PATH_TYPE@[192; 235)
|
||||
PATH@[192; 215)
|
||||
PATH_SEGMENT@[192; 215)
|
||||
NAME_REF@[192; 195)
|
||||
IDENT@[192; 195) "Box"
|
||||
TYPE_ARG_LIST@[195; 215)
|
||||
L_ANGLE@[195; 196)
|
||||
TYPE_ARG@[196; 215)
|
||||
PAREN_TYPE@[196; 215)
|
||||
L_PAREN@[196; 197)
|
||||
FOR_TYPE@[197; 214)
|
||||
FOR_KW@[197; 200)
|
||||
TYPE_PARAM_LIST@[200; 204)
|
||||
L_ANGLE@[200; 201)
|
||||
LIFETIME_PARAM@[201; 203)
|
||||
LIFETIME@[201; 203) "'a"
|
||||
R_ANGLE@[203; 204)
|
||||
WHITESPACE@[204; 205)
|
||||
PATH_TYPE@[205; 214)
|
||||
PATH@[205; 214)
|
||||
PATH_SEGMENT@[205; 214)
|
||||
NAME_REF@[205; 210)
|
||||
IDENT@[205; 210) "Trait"
|
||||
TYPE_ARG_LIST@[210; 214)
|
||||
L_ANGLE@[210; 211)
|
||||
LIFETIME_ARG@[211; 213)
|
||||
LIFETIME@[211; 213) "'a"
|
||||
R_ANGLE@[213; 214)
|
||||
R_PAREN@[214; 215)
|
||||
err: `expected COMMA`
|
||||
err: `expected R_ANGLE`
|
||||
WHITESPACE@[215; 216)
|
||||
PLUS@[216; 217)
|
||||
WHITESPACE@[217; 218)
|
||||
L_PAREN@[218; 219)
|
||||
PATH_TYPE@[219; 223)
|
||||
PATH@[219; 223)
|
||||
PATH_SEGMENT@[219; 223)
|
||||
NAME_REF@[219; 223)
|
||||
IDENT@[219; 223) "Copy"
|
||||
R_PAREN@[223; 224)
|
||||
WHITESPACE@[224; 225)
|
||||
PLUS@[225; 226)
|
||||
WHITESPACE@[226; 227)
|
||||
L_PAREN@[227; 228)
|
||||
QUESTION@[228; 229)
|
||||
PATH_TYPE@[229; 234)
|
||||
PATH@[229; 234)
|
||||
PATH_SEGMENT@[229; 234)
|
||||
NAME_REF@[229; 234)
|
||||
IDENT@[229; 234) "Sized"
|
||||
R_PAREN@[234; 235)
|
||||
err: `expected SEMI`
|
||||
err: `expected expression`
|
||||
EXPR_STMT@[235; 237)
|
||||
ERROR@[235; 236)
|
||||
R_ANGLE@[235; 236)
|
||||
SEMI@[236; 237)
|
||||
WHITESPACE@[237; 238)
|
||||
R_CURLY@[238; 239)
|
||||
WHITESPACE@[239; 240)
|
Loading…
Add table
Add a link
Reference in a new issue