mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-14 00:47:18 +00:00
G: use name refs in paths
This commit is contained in:
parent
fa2131365e
commit
e792ec3eca
10 changed files with 93 additions and 51 deletions
|
@ -60,6 +60,16 @@ fn name(p: &mut Parser) {
|
|||
}
|
||||
}
|
||||
|
||||
fn name_ref(p: &mut Parser) {
|
||||
if p.at(IDENT) {
|
||||
let m = p.start();
|
||||
p.bump();
|
||||
m.complete(p, NAME_REF);
|
||||
} else {
|
||||
p.error("expected identifier");
|
||||
}
|
||||
}
|
||||
|
||||
fn error_block(p: &mut Parser, message: &str) {
|
||||
assert!(p.at(L_CURLY));
|
||||
let err = p.start();
|
||||
|
|
|
@ -42,7 +42,8 @@ fn path_segment(p: &mut Parser, first: bool) {
|
|||
p.eat(COLONCOLON);
|
||||
}
|
||||
match p.current() {
|
||||
IDENT | SELF_KW | SUPER_KW => p.bump(),
|
||||
IDENT => name_ref(p),
|
||||
SELF_KW | SUPER_KW => p.bump(),
|
||||
_ => {
|
||||
p.error("expected identifier");
|
||||
}
|
||||
|
|
|
@ -5,8 +5,9 @@ FILE@[0; 12)
|
|||
PATH@[3; 9)
|
||||
PATH@[3; 7)
|
||||
PATH_SEGMENT@[3; 7)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
NAME_REF@[3; 7)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
COLONCOLON@[7; 9)
|
||||
PATH_SEGMENT@[9; 9)
|
||||
err: `expected identifier`
|
||||
|
|
|
@ -4,8 +4,9 @@ FILE@[0; 19)
|
|||
USE_TREE@[3; 7)
|
||||
PATH@[3; 7)
|
||||
PATH_SEGMENT@[3; 7)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
NAME_REF@[3; 7)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
SEMI@[7; 8)
|
||||
WHITESPACE@[8; 9)
|
||||
USE_ITEM@[9; 19)
|
||||
|
@ -15,5 +16,6 @@ FILE@[0; 19)
|
|||
PATH_SEGMENT@[12; 18)
|
||||
WHITESPACE@[12; 13)
|
||||
COLONCOLON@[13; 15)
|
||||
IDENT@[15; 18) "bar"
|
||||
NAME_REF@[15; 18)
|
||||
IDENT@[15; 18) "bar"
|
||||
SEMI@[18; 19)
|
||||
|
|
|
@ -8,13 +8,16 @@ FILE@[0; 40)
|
|||
PATH_SEGMENT@[3; 9)
|
||||
WHITESPACE@[3; 4)
|
||||
COLONCOLON@[4; 6)
|
||||
IDENT@[6; 9) "foo"
|
||||
NAME_REF@[6; 9)
|
||||
IDENT@[6; 9) "foo"
|
||||
COLONCOLON@[9; 11)
|
||||
PATH_SEGMENT@[11; 14)
|
||||
IDENT@[11; 14) "bar"
|
||||
NAME_REF@[11; 14)
|
||||
IDENT@[11; 14) "bar"
|
||||
COLONCOLON@[14; 16)
|
||||
PATH_SEGMENT@[16; 19)
|
||||
IDENT@[16; 19) "baz"
|
||||
NAME_REF@[16; 19)
|
||||
IDENT@[16; 19) "baz"
|
||||
SEMI@[19; 20)
|
||||
WHITESPACE@[20; 21)
|
||||
USE_ITEM@[21; 40)
|
||||
|
@ -24,13 +27,16 @@ FILE@[0; 40)
|
|||
PATH@[24; 33)
|
||||
PATH@[24; 28)
|
||||
PATH_SEGMENT@[24; 28)
|
||||
WHITESPACE@[24; 25)
|
||||
IDENT@[25; 28) "foo"
|
||||
NAME_REF@[24; 28)
|
||||
WHITESPACE@[24; 25)
|
||||
IDENT@[25; 28) "foo"
|
||||
COLONCOLON@[28; 30)
|
||||
PATH_SEGMENT@[30; 33)
|
||||
IDENT@[30; 33) "bar"
|
||||
NAME_REF@[30; 33)
|
||||
IDENT@[30; 33) "bar"
|
||||
COLONCOLON@[33; 35)
|
||||
PATH_SEGMENT@[35; 38)
|
||||
IDENT@[35; 38) "baz"
|
||||
NAME_REF@[35; 38)
|
||||
IDENT@[35; 38) "baz"
|
||||
SEMI@[38; 39)
|
||||
WHITESPACE@[39; 40)
|
||||
|
|
|
@ -67,14 +67,17 @@ FILE@[0; 98)
|
|||
PATH@[72; 81)
|
||||
PATH@[72; 76)
|
||||
PATH_SEGMENT@[72; 76)
|
||||
WHITESPACE@[72; 73)
|
||||
IDENT@[73; 76) "foo"
|
||||
NAME_REF@[72; 76)
|
||||
WHITESPACE@[72; 73)
|
||||
IDENT@[73; 76) "foo"
|
||||
COLONCOLON@[76; 78)
|
||||
PATH_SEGMENT@[78; 81)
|
||||
IDENT@[78; 81) "bar"
|
||||
NAME_REF@[78; 81)
|
||||
IDENT@[78; 81) "bar"
|
||||
COLONCOLON@[81; 83)
|
||||
PATH_SEGMENT@[83; 86)
|
||||
IDENT@[83; 86) "baz"
|
||||
NAME_REF@[83; 86)
|
||||
IDENT@[83; 86) "baz"
|
||||
R_PAREN@[86; 87)
|
||||
WHITESPACE@[87; 88)
|
||||
FN_KW@[88; 90)
|
||||
|
|
|
@ -9,7 +9,8 @@ FILE@[0; 65)
|
|||
SELF_KW@[4; 8)
|
||||
COLONCOLON@[8; 10)
|
||||
PATH_SEGMENT@[10; 13)
|
||||
IDENT@[10; 13) "foo"
|
||||
NAME_REF@[10; 13)
|
||||
IDENT@[10; 13) "foo"
|
||||
SEMI@[13; 14)
|
||||
WHITESPACE@[14; 15)
|
||||
USE_ITEM@[15; 38)
|
||||
|
@ -26,7 +27,8 @@ FILE@[0; 65)
|
|||
SUPER_KW@[26; 31)
|
||||
COLONCOLON@[31; 33)
|
||||
PATH_SEGMENT@[33; 36)
|
||||
IDENT@[33; 36) "bar"
|
||||
NAME_REF@[33; 36)
|
||||
IDENT@[33; 36) "bar"
|
||||
SEMI@[36; 37)
|
||||
WHITESPACE@[37; 38)
|
||||
USE_ITEM@[38; 65)
|
||||
|
@ -42,12 +44,14 @@ FILE@[0; 65)
|
|||
SELF_KW@[44; 48)
|
||||
COLONCOLON@[48; 50)
|
||||
PATH_SEGMENT@[50; 51)
|
||||
IDENT@[50; 51) "a"
|
||||
NAME_REF@[50; 51)
|
||||
IDENT@[50; 51) "a"
|
||||
COLONCOLON@[51; 53)
|
||||
PATH_SEGMENT@[53; 58)
|
||||
SUPER_KW@[53; 58)
|
||||
COLONCOLON@[58; 60)
|
||||
PATH_SEGMENT@[60; 63)
|
||||
IDENT@[60; 63) "bar"
|
||||
NAME_REF@[60; 63)
|
||||
IDENT@[60; 63) "bar"
|
||||
SEMI@[63; 64)
|
||||
WHITESPACE@[64; 65)
|
||||
|
|
|
@ -36,8 +36,9 @@ FILE@[0; 81)
|
|||
USE_TREE@[37; 44)
|
||||
PATH@[37; 41)
|
||||
PATH_SEGMENT@[37; 41)
|
||||
WHITESPACE@[37; 38)
|
||||
IDENT@[38; 41) "foo"
|
||||
NAME_REF@[37; 41)
|
||||
WHITESPACE@[37; 38)
|
||||
IDENT@[38; 41) "foo"
|
||||
COLONCOLON@[41; 43)
|
||||
STAR@[43; 44)
|
||||
SEMI@[44; 45)
|
||||
|
@ -47,8 +48,9 @@ FILE@[0; 81)
|
|||
USE_TREE@[49; 57)
|
||||
PATH@[49; 53)
|
||||
PATH_SEGMENT@[49; 53)
|
||||
WHITESPACE@[49; 50)
|
||||
IDENT@[50; 53) "foo"
|
||||
NAME_REF@[49; 53)
|
||||
WHITESPACE@[49; 50)
|
||||
IDENT@[50; 53) "foo"
|
||||
COLONCOLON@[53; 55)
|
||||
L_CURLY@[55; 56)
|
||||
R_CURLY@[56; 57)
|
||||
|
@ -61,25 +63,29 @@ FILE@[0; 81)
|
|||
PATH_SEGMENT@[62; 68)
|
||||
WHITESPACE@[62; 63)
|
||||
COLONCOLON@[63; 65)
|
||||
IDENT@[65; 68) "foo"
|
||||
NAME_REF@[65; 68)
|
||||
IDENT@[65; 68) "foo"
|
||||
COLONCOLON@[68; 70)
|
||||
L_CURLY@[70; 71)
|
||||
USE_TREE@[71; 72)
|
||||
PATH@[71; 72)
|
||||
PATH_SEGMENT@[71; 72)
|
||||
IDENT@[71; 72) "a"
|
||||
NAME_REF@[71; 72)
|
||||
IDENT@[71; 72) "a"
|
||||
COMMA@[72; 73)
|
||||
USE_TREE@[73; 75)
|
||||
PATH@[73; 75)
|
||||
PATH_SEGMENT@[73; 75)
|
||||
WHITESPACE@[73; 74)
|
||||
IDENT@[74; 75) "b"
|
||||
NAME_REF@[73; 75)
|
||||
WHITESPACE@[73; 74)
|
||||
IDENT@[74; 75) "b"
|
||||
COMMA@[75; 76)
|
||||
USE_TREE@[76; 78)
|
||||
PATH@[76; 78)
|
||||
PATH_SEGMENT@[76; 78)
|
||||
WHITESPACE@[76; 77)
|
||||
IDENT@[77; 78) "c"
|
||||
NAME_REF@[76; 78)
|
||||
WHITESPACE@[76; 77)
|
||||
IDENT@[77; 78) "c"
|
||||
R_CURLY@[78; 79)
|
||||
SEMI@[79; 80)
|
||||
WHITESPACE@[80; 81)
|
||||
|
|
|
@ -4,9 +4,10 @@ FILE@[0; 55)
|
|||
USE_TREE@[3; 14)
|
||||
PATH@[3; 8)
|
||||
PATH_SEGMENT@[3; 8)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
WHITESPACE@[7; 8)
|
||||
NAME_REF@[3; 8)
|
||||
WHITESPACE@[3; 4)
|
||||
IDENT@[4; 7) "foo"
|
||||
WHITESPACE@[7; 8)
|
||||
ALIAS@[8; 14)
|
||||
AS_KW@[8; 10)
|
||||
NAME@[10; 14)
|
||||
|
@ -19,15 +20,17 @@ FILE@[0; 55)
|
|||
USE_TREE@[19; 53)
|
||||
PATH@[19; 23)
|
||||
PATH_SEGMENT@[19; 23)
|
||||
WHITESPACE@[19; 20)
|
||||
IDENT@[20; 23) "foo"
|
||||
NAME_REF@[19; 23)
|
||||
WHITESPACE@[19; 20)
|
||||
IDENT@[20; 23) "foo"
|
||||
COLONCOLON@[23; 25)
|
||||
L_CURLY@[25; 26)
|
||||
USE_TREE@[26; 32)
|
||||
PATH@[26; 28)
|
||||
PATH_SEGMENT@[26; 28)
|
||||
IDENT@[26; 27) "a"
|
||||
WHITESPACE@[27; 28)
|
||||
NAME_REF@[26; 28)
|
||||
IDENT@[26; 27) "a"
|
||||
WHITESPACE@[27; 28)
|
||||
ALIAS@[28; 32)
|
||||
AS_KW@[28; 30)
|
||||
NAME@[30; 32)
|
||||
|
@ -48,8 +51,9 @@ FILE@[0; 55)
|
|||
PATH_SEGMENT@[41; 48)
|
||||
WHITESPACE@[41; 42)
|
||||
COLONCOLON@[42; 44)
|
||||
IDENT@[44; 47) "foo"
|
||||
WHITESPACE@[47; 48)
|
||||
NAME_REF@[44; 48)
|
||||
IDENT@[44; 47) "foo"
|
||||
WHITESPACE@[47; 48)
|
||||
ALIAS@[48; 52)
|
||||
AS_KW@[48; 50)
|
||||
NAME@[50; 52)
|
||||
|
|
|
@ -97,8 +97,9 @@ FILE@[0; 200)
|
|||
PLUS@[107; 108)
|
||||
PATH@[108; 114)
|
||||
PATH_SEGMENT@[108; 114)
|
||||
WHITESPACE@[108; 109)
|
||||
IDENT@[109; 114) "Clone"
|
||||
NAME_REF@[108; 114)
|
||||
WHITESPACE@[108; 109)
|
||||
IDENT@[109; 114) "Clone"
|
||||
R_ANGLE@[114; 115)
|
||||
SEMI@[115; 116)
|
||||
WHITESPACE@[116; 117)
|
||||
|
@ -114,14 +115,16 @@ FILE@[0; 200)
|
|||
COLON@[127; 128)
|
||||
PATH@[128; 135)
|
||||
PATH_SEGMENT@[128; 135)
|
||||
WHITESPACE@[128; 129)
|
||||
IDENT@[129; 134) "Clone"
|
||||
WHITESPACE@[134; 135)
|
||||
NAME_REF@[128; 135)
|
||||
WHITESPACE@[128; 129)
|
||||
IDENT@[129; 134) "Clone"
|
||||
WHITESPACE@[134; 135)
|
||||
PLUS@[135; 136)
|
||||
PATH@[136; 141)
|
||||
PATH_SEGMENT@[136; 141)
|
||||
WHITESPACE@[136; 137)
|
||||
IDENT@[137; 141) "Copy"
|
||||
NAME_REF@[136; 141)
|
||||
WHITESPACE@[136; 137)
|
||||
IDENT@[137; 141) "Copy"
|
||||
R_ANGLE@[141; 142)
|
||||
SEMI@[142; 143)
|
||||
WHITESPACE@[143; 144)
|
||||
|
@ -139,8 +142,9 @@ FILE@[0; 200)
|
|||
PATH_SEGMENT@[155; 162)
|
||||
WHITESPACE@[155; 156)
|
||||
COLONCOLON@[156; 158)
|
||||
IDENT@[158; 161) "Foo"
|
||||
WHITESPACE@[161; 162)
|
||||
NAME_REF@[158; 162)
|
||||
IDENT@[158; 161) "Foo"
|
||||
WHITESPACE@[161; 162)
|
||||
PLUS@[162; 163)
|
||||
PATH@[163; 174)
|
||||
PATH@[163; 168)
|
||||
|
@ -149,8 +153,9 @@ FILE@[0; 200)
|
|||
SELF_KW@[164; 168)
|
||||
COLONCOLON@[168; 170)
|
||||
PATH_SEGMENT@[170; 174)
|
||||
IDENT@[170; 173) "Bar"
|
||||
WHITESPACE@[173; 174)
|
||||
NAME_REF@[170; 174)
|
||||
IDENT@[170; 173) "Bar"
|
||||
WHITESPACE@[173; 174)
|
||||
PLUS@[174; 175)
|
||||
WHITESPACE@[175; 176)
|
||||
LIFETIME@[176; 178) "'a"
|
||||
|
|
Loading…
Reference in a new issue