46: Names r=matklad a=matklad

bors r+
This commit is contained in:
bors[bot] 2018-02-10 11:23:41 +00:00
commit b814d93151
51 changed files with 465 additions and 294 deletions

View File

@ -118,5 +118,7 @@ Grammar(
"LIFETIME_PARAM",
"TYPE_PARAM",
"ABI",
"NAME",
"NAME_REF",
]
)

View File

@ -12,7 +12,7 @@ fn const_or_static(p: &mut Parser, kw: SyntaxKind) {
assert!(p.at(kw));
p.bump();
p.eat(MUT_KW); // TODO: validator to forbid const mut
p.expect(IDENT);
name(p);
p.expect(COLON);
types::type_ref(p);
p.expect(EQ);

View File

@ -196,8 +196,9 @@ fn extern_crate_item(p: &mut Parser) {
p.bump();
assert!(p.at(CRATE_KW));
p.bump();
p.expect(IDENT) && alias(p) && p.expect(SEMI);
name(p);
alias(p);
p.expect(SEMI);
}
fn extern_block(p: &mut Parser) {
@ -210,7 +211,7 @@ fn fn_item(p: &mut Parser) {
assert!(p.at(FN_KW));
p.bump();
p.expect(IDENT);
name(p);
if p.at(L_PAREN) {
fn_value_parameters(p);
} else {
@ -235,7 +236,7 @@ fn type_item(p: &mut Parser) {
assert!(p.at(TYPE_KW));
p.bump();
p.expect(IDENT);
name(p);
// test type_item_type_params
// type Result<T> = ();
@ -254,7 +255,8 @@ fn mod_item(p: &mut Parser) {
assert!(p.at(MOD_KW));
p.bump();
if p.expect(IDENT) && !p.eat(SEMI) {
name(p);
if !p.eat(SEMI) {
if p.expect(L_CURLY) {
mod_contents(p, true);
p.expect(R_CURLY);

View File

@ -4,9 +4,7 @@ pub(super) fn struct_item(p: &mut Parser) {
assert!(p.at(STRUCT_KW));
p.bump();
if !p.expect(IDENT) {
return;
}
name(p);
type_params::list(p);
match p.current() {
WHERE_KW => {
@ -43,7 +41,7 @@ pub(super) fn struct_item(p: &mut Parser) {
pub(super) fn enum_item(p: &mut Parser) {
assert!(p.at(ENUM_KW));
p.bump();
p.expect(IDENT);
name(p);
type_params::list(p);
type_params::where_clause(p);
if p.expect(L_CURLY) {
@ -88,7 +86,8 @@ fn named_fields(p: &mut Parser) {
fn named_field(p: &mut Parser) {
let field = p.start();
visibility(p);
if p.expect(IDENT) {
if p.at(IDENT) {
name(p);
p.expect(COLON);
types::type_ref(p);
field.complete(p, NAMED_FIELD);

View File

@ -3,7 +3,7 @@
pub(super) fn trait_item(p: &mut Parser) {
assert!(p.at(TRAIT_KW));
p.bump();
p.expect(IDENT);
name(p);
p.expect(L_CURLY);
p.expect(R_CURLY);
}

View File

@ -44,12 +44,32 @@ fn alias(p: &mut Parser) -> bool {
if p.at(AS_KW) {
let alias = p.start();
p.bump();
p.expect(IDENT);
name(p);
alias.complete(p, ALIAS);
}
true //FIXME: return false if three are errors
}
fn name(p: &mut Parser) {
if p.at(IDENT) {
let m = p.start();
p.bump();
m.complete(p, NAME);
} else {
p.error("expected a name");
}
}
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();

View File

@ -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");
}

View File

@ -116,6 +116,8 @@ pub enum SyntaxKind {
LIFETIME_PARAM,
TYPE_PARAM,
ABI,
NAME,
NAME_REF,
// Technical SyntaxKinds: they appear temporally during parsing,
// but never end up in the final tree
@ -239,6 +241,8 @@ pub(crate) fn info(self) -> &'static SyntaxInfo {
LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" },
TYPE_PARAM => &SyntaxInfo { name: "TYPE_PARAM" },
ABI => &SyntaxInfo { name: "ABI" },
NAME => &SyntaxInfo { name: "NAME" },
NAME_REF => &SyntaxInfo { name: "NAME_REF" },
TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
EOF => &SyntaxInfo { name: "EOF" },

View File

@ -1,11 +1,13 @@
FILE@[0; 34)
STRUCT_ITEM@[0; 34)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 26)
NAME@[10; 16)
WHITESPACE@[10; 15)
IDENT@[15; 16) "a"
COLON@[16; 17)
@ -14,6 +16,7 @@ FILE@[0; 34)
WHITESPACE@[21; 26)
err: `expected COMMA`
NAMED_FIELD@[26; 33)
NAME@[26; 27)
IDENT@[26; 27) "b"
COLON@[27; 28)
WHITESPACE@[28; 29)

View File

@ -9,6 +9,7 @@ FILE@[0; 21)
WHITESPACE@[8; 10)
STRUCT_ITEM@[10; 21)
STRUCT_KW@[10; 16)
NAME@[16; 19)
WHITESPACE@[16; 17)
IDENT@[17; 18) "S"
WHITESPACE@[18; 19)

View File

@ -1,11 +1,13 @@
FILE@[0; 40)
STRUCT_ITEM@[0; 39)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
NAME@[10; 16)
WHITESPACE@[10; 15)
IDENT@[15; 16) "a"
COLON@[16; 17)
@ -13,6 +15,7 @@ FILE@[0; 40)
IDENT@[18; 21) "i32"
COMMA@[21; 22)
NAMED_FIELD@[22; 36)
NAME@[22; 28)
WHITESPACE@[22; 27)
IDENT@[27; 28) "b"
COLON@[28; 29)

View File

@ -5,6 +5,7 @@ FILE@[0; 12)
PATH@[3; 9)
PATH@[3; 7)
PATH_SEGMENT@[3; 7)
NAME_REF@[3; 7)
WHITESPACE@[3; 4)
IDENT@[4; 7) "foo"
COLONCOLON@[7; 9)

View File

@ -23,6 +23,7 @@ FILE@[0; 54)
R_BRACK@[17; 18)
WHITESPACE@[18; 19)
FN_KW@[19; 21)
NAME@[21; 25)
WHITESPACE@[21; 22)
IDENT@[22; 25) "foo"
L_PAREN@[25; 26)
@ -43,6 +44,7 @@ FILE@[0; 54)
WHITESPACE@[40; 41)
err: `expected R_BRACK`
FN_KW@[41; 43)
NAME@[43; 47)
WHITESPACE@[43; 44)
IDENT@[44; 47) "foo"
L_PAREN@[47; 48)

View File

@ -1,11 +1,13 @@
FILE@[0; 74)
STRUCT_ITEM@[0; 74)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 21)
NAME@[10; 16)
WHITESPACE@[10; 15)
IDENT@[15; 16) "f"
COLON@[16; 17)
@ -16,11 +18,11 @@ FILE@[0; 74)
WHITESPACE@[22; 27)
PUB_KW@[27; 30)
WHITESPACE@[30; 31)
err: `expected IDENT`
ERROR@[31; 38)
err: `expected field declaration`
INT_NUMBER@[31; 33)
WHITESPACE@[33; 38)
err: `expected COMMA`
ERROR@[38; 40)
err: `expected field declaration`
PLUS@[38; 39)
@ -37,12 +39,14 @@ FILE@[0; 74)
VISIBILITY@[48; 52)
PUB_KW@[48; 51)
WHITESPACE@[51; 52)
NAME@[52; 53)
IDENT@[52; 53) "x"
COLON@[53; 54)
WHITESPACE@[54; 55)
IDENT@[55; 58) "u32"
COMMA@[58; 59)
NAMED_FIELD@[59; 70)
NAME@[59; 65)
WHITESPACE@[59; 64)
IDENT@[64; 65) "z"
COLON@[65; 66)

View File

@ -5,6 +5,7 @@ FILE@[0; 31)
WHITESPACE@[1; 3)
STRUCT_ITEM@[3; 14)
STRUCT_KW@[3; 9)
NAME@[9; 11)
WHITESPACE@[9; 10)
IDENT@[10; 11) "S"
SEMI@[11; 12)
@ -15,6 +16,7 @@ FILE@[0; 31)
WHITESPACE@[15; 17)
FN_ITEM@[17; 29)
FN_KW@[17; 19)
NAME@[19; 23)
WHITESPACE@[19; 20)
IDENT@[20; 23) "foo"
L_PAREN@[23; 24)

View File

@ -1,6 +1,7 @@
FILE@[0; 95)
FN_ITEM@[0; 14)
FN_KW@[0; 2)
NAME@[2; 6)
WHITESPACE@[2; 3)
IDENT@[3; 6) "foo"
L_PAREN@[6; 7)
@ -50,6 +51,7 @@ FILE@[0; 95)
WHITESPACE@[80; 82)
FN_ITEM@[82; 95)
FN_KW@[82; 84)
NAME@[84; 88)
WHITESPACE@[84; 85)
IDENT@[85; 88) "baz"
L_PAREN@[88; 89)

View File

@ -1,6 +1,7 @@
FILE@[0; 43)
STRUCT_ITEM@[0; 12)
STRUCT_KW@[0; 6)
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
TYPE_PARAM_LIST@[8; 12)
@ -36,6 +37,7 @@ FILE@[0; 43)
WHITESPACE@[31; 33)
STRUCT_ITEM@[33; 43)
STRUCT_KW@[33; 39)
NAME@[39; 41)
WHITESPACE@[39; 40)
IDENT@[40; 41) "T"
SEMI@[41; 42)

View File

@ -5,6 +5,7 @@ FILE@[0; 25)
UNSAFE_KW@[6; 12)
WHITESPACE@[12; 13)
FN_KW@[13; 15)
NAME@[15; 19)
WHITESPACE@[15; 16)
IDENT@[16; 19) "foo"
L_PAREN@[19; 20)

View File

@ -3,6 +3,7 @@ FILE@[0; 18)
CONST_KW@[0; 5)
WHITESPACE@[5; 6)
FN_KW@[6; 8)
NAME@[8; 12)
WHITESPACE@[8; 9)
IDENT@[9; 12) "foo"
L_PAREN@[12; 13)

View File

@ -4,6 +4,7 @@ FILE@[0; 19)
EXTERN_KW@[0; 6)
WHITESPACE@[6; 7)
FN_KW@[7; 9)
NAME@[9; 13)
WHITESPACE@[9; 10)
IDENT@[10; 13) "foo"
L_PAREN@[13; 14)

View File

@ -3,6 +3,7 @@ FILE@[0; 18)
EXTERN_KW@[0; 6)
WHITESPACE@[6; 7)
CRATE_KW@[7; 12)
NAME@[12; 16)
WHITESPACE@[12; 13)
IDENT@[13; 16) "foo"
SEMI@[16; 17)

View File

@ -5,6 +5,7 @@ FILE@[0; 19)
err: `expected `fn` or `{``
STRUCT_ITEM@[7; 19)
STRUCT_KW@[7; 13)
NAME@[13; 17)
WHITESPACE@[13; 14)
IDENT@[14; 17) "Foo"
SEMI@[17; 18)

View File

@ -3,6 +3,7 @@ FILE@[0; 18)
UNSAFE_KW@[0; 6)
WHITESPACE@[6; 7)
TRAIT_KW@[7; 12)
NAME@[12; 15)
WHITESPACE@[12; 13)
IDENT@[13; 14) "T"
WHITESPACE@[14; 15)

View File

@ -5,6 +5,7 @@ FILE@[0; 23)
AUTO_KW@[7; 11)
WHITESPACE@[11; 12)
TRAIT_KW@[12; 17)
NAME@[17; 20)
WHITESPACE@[17; 18)
IDENT@[18; 19) "T"
WHITESPACE@[19; 20)

View File

@ -3,6 +3,7 @@ FILE@[0; 19)
UNSAFE_KW@[0; 6)
WHITESPACE@[6; 7)
FN_KW@[7; 9)
NAME@[9; 13)
WHITESPACE@[9; 10)
IDENT@[10; 13) "foo"
L_PAREN@[13; 14)

View File

@ -8,6 +8,7 @@ FILE@[0; 30)
STRING@[14; 17)
WHITESPACE@[17; 18)
FN_KW@[18; 20)
NAME@[20; 24)
WHITESPACE@[20; 21)
IDENT@[21; 24) "foo"
L_PAREN@[24; 25)

View File

@ -1,6 +1,7 @@
FILE@[0; 33)
FN_ITEM@[0; 11)
FN_KW@[0; 2)
NAME@[2; 6)
WHITESPACE@[2; 3)
IDENT@[3; 6) "foo"
L_PAREN@[6; 7)
@ -18,6 +19,7 @@ FILE@[0; 33)
WHITESPACE@[21; 22)
FN_ITEM@[22; 33)
FN_KW@[22; 24)
NAME@[24; 28)
WHITESPACE@[24; 25)
IDENT@[25; 28) "bar"
L_PAREN@[28; 29)

View File

@ -1,6 +1,7 @@
FILE@[0; 21)
TYPE_ITEM@[0; 21)
TYPE_KW@[0; 4)
NAME@[4; 11)
WHITESPACE@[4; 5)
IDENT@[5; 11) "Result"
TYPE_PARAM_LIST@[11; 15)

View File

@ -1,6 +1,7 @@
FILE@[0; 16)
TYPE_ITEM@[0; 16)
TYPE_KW@[0; 4)
NAME@[4; 9)
WHITESPACE@[4; 5)
IDENT@[5; 8) "Foo"
WHITESPACE@[8; 9)

View File

@ -1,10 +1,11 @@
FILE@[0; 31)
TYPE_ITEM@[0; 31)
TYPE_KW@[0; 4)
NAME@[4; 9)
WHITESPACE@[4; 5)
IDENT@[5; 8) "Foo"
WHERE_CLAUSE@[8; 25)
WHITESPACE@[8; 9)
WHERE_CLAUSE@[9; 25)
WHERE_KW@[9; 14)
WHITESPACE@[14; 15)
IDENT@[15; 18) "Foo"

View File

@ -1,6 +1,7 @@
FILE@[0; 13)
STRUCT_ITEM@[0; 13)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)

View File

@ -1,11 +1,13 @@
FILE@[0; 25)
STRUCT_ITEM@[0; 25)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 8) "S"
WHITESPACE@[8; 9)
L_CURLY@[9; 10)
NAMED_FIELD@[10; 24)
NAME@[10; 18)
WHITESPACE@[10; 15)
IDENT@[15; 18) "foo"
COLON@[18; 19)

View File

@ -1,6 +1,7 @@
FILE@[0; 13)
FN_ITEM@[0; 13)
FN_KW@[0; 2)
NAME@[2; 6)
WHITESPACE@[2; 3)
IDENT@[3; 6) "foo"
L_PAREN@[6; 7)

View File

@ -3,6 +3,7 @@ FILE@[0; 43)
EXTERN_KW@[0; 6)
WHITESPACE@[6; 7)
CRATE_KW@[7; 12)
NAME@[12; 16)
WHITESPACE@[12; 13)
IDENT@[13; 16) "foo"
SEMI@[16; 17)
@ -11,11 +12,13 @@ FILE@[0; 43)
EXTERN_KW@[18; 24)
WHITESPACE@[24; 25)
CRATE_KW@[25; 30)
NAME@[30; 35)
WHITESPACE@[30; 31)
IDENT@[31; 34) "foo"
ALIAS@[34; 41)
WHITESPACE@[34; 35)
ALIAS@[35; 41)
AS_KW@[35; 37)
NAME@[37; 41)
WHITESPACE@[37; 38)
IDENT@[38; 41) "bar"
SEMI@[41; 42)

View File

@ -1,12 +1,14 @@
FILE@[0; 118)
MOD_ITEM@[0; 8)
MOD_KW@[0; 3)
NAME@[3; 5)
WHITESPACE@[3; 4)
IDENT@[4; 5) "a"
SEMI@[5; 6)
WHITESPACE@[6; 8)
MOD_ITEM@[8; 19)
MOD_KW@[8; 11)
NAME@[11; 14)
WHITESPACE@[11; 12)
IDENT@[12; 13) "b"
WHITESPACE@[13; 14)
@ -16,6 +18,7 @@ FILE@[0; 118)
WHITESPACE@[17; 19)
MOD_ITEM@[19; 67)
MOD_KW@[19; 22)
NAME@[22; 25)
WHITESPACE@[22; 23)
IDENT@[23; 24) "c"
WHITESPACE@[24; 25)
@ -23,6 +26,7 @@ FILE@[0; 118)
FN_ITEM@[26; 52)
WHITESPACE@[26; 31)
FN_KW@[31; 33)
NAME@[33; 37)
WHITESPACE@[33; 34)
IDENT@[34; 37) "foo"
L_PAREN@[37; 38)
@ -34,6 +38,7 @@ FILE@[0; 118)
WHITESPACE@[47; 52)
STRUCT_ITEM@[52; 64)
STRUCT_KW@[52; 58)
NAME@[58; 61)
WHITESPACE@[58; 59)
IDENT@[59; 60) "S"
WHITESPACE@[60; 61)
@ -44,6 +49,7 @@ FILE@[0; 118)
WHITESPACE@[65; 67)
MOD_ITEM@[67; 118)
MOD_KW@[67; 70)
NAME@[70; 73)
WHITESPACE@[70; 71)
IDENT@[71; 72) "d"
WHITESPACE@[72; 73)
@ -59,12 +65,14 @@ FILE@[0; 118)
WHITESPACE@[87; 92)
MOD_ITEM@[92; 103)
MOD_KW@[92; 95)
NAME@[95; 97)
WHITESPACE@[95; 96)
IDENT@[96; 97) "e"
SEMI@[97; 98)
WHITESPACE@[98; 103)
MOD_ITEM@[103; 117)
MOD_KW@[103; 106)
NAME@[106; 109)
WHITESPACE@[106; 107)
IDENT@[107; 108) "f"
WHITESPACE@[108; 109)

View File

@ -4,6 +4,7 @@ FILE@[0; 19)
USE_TREE@[3; 7)
PATH@[3; 7)
PATH_SEGMENT@[3; 7)
NAME_REF@[3; 7)
WHITESPACE@[3; 4)
IDENT@[4; 7) "foo"
SEMI@[7; 8)
@ -15,5 +16,6 @@ FILE@[0; 19)
PATH_SEGMENT@[12; 18)
WHITESPACE@[12; 13)
COLONCOLON@[13; 15)
NAME_REF@[15; 18)
IDENT@[15; 18) "bar"
SEMI@[18; 19)

View File

@ -8,12 +8,15 @@ FILE@[0; 40)
PATH_SEGMENT@[3; 9)
WHITESPACE@[3; 4)
COLONCOLON@[4; 6)
NAME_REF@[6; 9)
IDENT@[6; 9) "foo"
COLONCOLON@[9; 11)
PATH_SEGMENT@[11; 14)
NAME_REF@[11; 14)
IDENT@[11; 14) "bar"
COLONCOLON@[14; 16)
PATH_SEGMENT@[16; 19)
NAME_REF@[16; 19)
IDENT@[16; 19) "baz"
SEMI@[19; 20)
WHITESPACE@[20; 21)
@ -24,13 +27,16 @@ FILE@[0; 40)
PATH@[24; 33)
PATH@[24; 28)
PATH_SEGMENT@[24; 28)
NAME_REF@[24; 28)
WHITESPACE@[24; 25)
IDENT@[25; 28) "foo"
COLONCOLON@[28; 30)
PATH_SEGMENT@[30; 33)
NAME_REF@[30; 33)
IDENT@[30; 33) "bar"
COLONCOLON@[33; 35)
PATH_SEGMENT@[35; 38)
NAME_REF@[35; 38)
IDENT@[35; 38) "baz"
SEMI@[38; 39)
WHITESPACE@[39; 40)

View File

@ -19,6 +19,7 @@ FILE@[0; 35)
R_BRACK@[21; 22)
WHITESPACE@[22; 23)
FN_KW@[23; 25)
NAME@[25; 29)
WHITESPACE@[25; 26)
IDENT@[26; 29) "foo"
L_PAREN@[29; 30)

View File

@ -1,6 +1,7 @@
FILE@[0; 98)
FN_ITEM@[0; 10)
FN_KW@[0; 2)
NAME@[2; 4)
WHITESPACE@[2; 3)
IDENT@[3; 4) "a"
L_PAREN@[4; 5)
@ -14,6 +15,7 @@ FILE@[0; 98)
PUB_KW@[10; 13)
WHITESPACE@[13; 14)
FN_KW@[14; 16)
NAME@[16; 18)
WHITESPACE@[16; 17)
IDENT@[17; 18) "b"
L_PAREN@[18; 19)
@ -30,6 +32,7 @@ FILE@[0; 98)
R_PAREN@[33; 34)
WHITESPACE@[34; 35)
FN_KW@[35; 37)
NAME@[37; 39)
WHITESPACE@[37; 38)
IDENT@[38; 39) "c"
L_PAREN@[39; 40)
@ -46,6 +49,7 @@ FILE@[0; 98)
R_PAREN@[54; 55)
WHITESPACE@[55; 56)
FN_KW@[56; 58)
NAME@[58; 60)
WHITESPACE@[58; 59)
IDENT@[59; 60) "d"
L_PAREN@[60; 61)
@ -63,17 +67,21 @@ FILE@[0; 98)
PATH@[72; 81)
PATH@[72; 76)
PATH_SEGMENT@[72; 76)
NAME_REF@[72; 76)
WHITESPACE@[72; 73)
IDENT@[73; 76) "foo"
COLONCOLON@[76; 78)
PATH_SEGMENT@[78; 81)
NAME_REF@[78; 81)
IDENT@[78; 81) "bar"
COLONCOLON@[81; 83)
PATH_SEGMENT@[83; 86)
NAME_REF@[83; 86)
IDENT@[83; 86) "baz"
R_PAREN@[86; 87)
WHITESPACE@[87; 88)
FN_KW@[88; 90)
NAME@[90; 92)
WHITESPACE@[90; 91)
IDENT@[91; 92) "e"
L_PAREN@[92; 93)

View File

@ -9,6 +9,7 @@ FILE@[0; 65)
SELF_KW@[4; 8)
COLONCOLON@[8; 10)
PATH_SEGMENT@[10; 13)
NAME_REF@[10; 13)
IDENT@[10; 13) "foo"
SEMI@[13; 14)
WHITESPACE@[14; 15)
@ -26,6 +27,7 @@ FILE@[0; 65)
SUPER_KW@[26; 31)
COLONCOLON@[31; 33)
PATH_SEGMENT@[33; 36)
NAME_REF@[33; 36)
IDENT@[33; 36) "bar"
SEMI@[36; 37)
WHITESPACE@[37; 38)
@ -42,12 +44,14 @@ FILE@[0; 65)
SELF_KW@[44; 48)
COLONCOLON@[48; 50)
PATH_SEGMENT@[50; 51)
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)
NAME_REF@[60; 63)
IDENT@[60; 63) "bar"
SEMI@[63; 64)
WHITESPACE@[64; 65)

View File

@ -36,6 +36,7 @@ FILE@[0; 81)
USE_TREE@[37; 44)
PATH@[37; 41)
PATH_SEGMENT@[37; 41)
NAME_REF@[37; 41)
WHITESPACE@[37; 38)
IDENT@[38; 41) "foo"
COLONCOLON@[41; 43)
@ -47,6 +48,7 @@ FILE@[0; 81)
USE_TREE@[49; 57)
PATH@[49; 53)
PATH_SEGMENT@[49; 53)
NAME_REF@[49; 53)
WHITESPACE@[49; 50)
IDENT@[50; 53) "foo"
COLONCOLON@[53; 55)
@ -61,23 +63,27 @@ FILE@[0; 81)
PATH_SEGMENT@[62; 68)
WHITESPACE@[62; 63)
COLONCOLON@[63; 65)
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)
NAME_REF@[71; 72)
IDENT@[71; 72) "a"
COMMA@[72; 73)
USE_TREE@[73; 75)
PATH@[73; 75)
PATH_SEGMENT@[73; 75)
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)
NAME_REF@[76; 78)
WHITESPACE@[76; 77)
IDENT@[77; 78) "c"
R_CURLY@[78; 79)

View File

@ -4,11 +4,13 @@ FILE@[0; 55)
USE_TREE@[3; 14)
PATH@[3; 8)
PATH_SEGMENT@[3; 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)
WHITESPACE@[10; 11)
IDENT@[11; 14) "bar"
SEMI@[14; 15)
@ -18,6 +20,7 @@ FILE@[0; 55)
USE_TREE@[19; 53)
PATH@[19; 23)
PATH_SEGMENT@[19; 23)
NAME_REF@[19; 23)
WHITESPACE@[19; 20)
IDENT@[20; 23) "foo"
COLONCOLON@[23; 25)
@ -25,10 +28,12 @@ FILE@[0; 55)
USE_TREE@[26; 32)
PATH@[26; 28)
PATH_SEGMENT@[26; 28)
NAME_REF@[26; 28)
IDENT@[26; 27) "a"
WHITESPACE@[27; 28)
ALIAS@[28; 32)
AS_KW@[28; 30)
NAME@[30; 32)
WHITESPACE@[30; 31)
IDENT@[31; 32) "b"
COMMA@[32; 33)
@ -46,10 +51,12 @@ FILE@[0; 55)
PATH_SEGMENT@[41; 48)
WHITESPACE@[41; 42)
COLONCOLON@[42; 44)
NAME_REF@[44; 48)
IDENT@[44; 47) "foo"
WHITESPACE@[47; 48)
ALIAS@[48; 52)
AS_KW@[48; 50)
NAME@[50; 52)
WHITESPACE@[50; 51)
IDENT@[51; 52) "x"
R_CURLY@[52; 53)

View File

@ -1,12 +1,14 @@
FILE@[0; 97)
STRUCT_ITEM@[0; 10)
STRUCT_KW@[0; 6)
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
SEMI@[8; 9)
WHITESPACE@[9; 10)
STRUCT_ITEM@[10; 22)
STRUCT_KW@[10; 16)
NAME@[16; 19)
WHITESPACE@[16; 17)
IDENT@[17; 18) "B"
WHITESPACE@[18; 19)
@ -15,6 +17,7 @@ FILE@[0; 97)
WHITESPACE@[21; 22)
STRUCT_ITEM@[22; 35)
STRUCT_KW@[22; 28)
NAME@[28; 30)
WHITESPACE@[28; 29)
IDENT@[29; 30) "C"
L_PAREN@[30; 31)
@ -23,11 +26,13 @@ FILE@[0; 97)
WHITESPACE@[33; 35)
STRUCT_ITEM@[35; 76)
STRUCT_KW@[35; 41)
NAME@[41; 44)
WHITESPACE@[41; 42)
IDENT@[42; 43) "D"
WHITESPACE@[43; 44)
L_CURLY@[44; 45)
NAMED_FIELD@[45; 56)
NAME@[45; 51)
WHITESPACE@[45; 50)
IDENT@[50; 51) "a"
COLON@[51; 52)
@ -39,6 +44,7 @@ FILE@[0; 97)
WHITESPACE@[57; 62)
PUB_KW@[62; 65)
WHITESPACE@[65; 66)
NAME@[66; 67)
IDENT@[66; 67) "b"
COLON@[67; 68)
WHITESPACE@[68; 69)
@ -48,6 +54,7 @@ FILE@[0; 97)
WHITESPACE@[74; 76)
STRUCT_ITEM@[76; 97)
STRUCT_KW@[76; 82)
NAME@[82; 84)
WHITESPACE@[82; 83)
IDENT@[83; 84) "E"
L_PAREN@[84; 85)

View File

@ -13,6 +13,7 @@ FILE@[0; 23)
R_BRACK@[9; 10)
WHITESPACE@[10; 11)
FN_KW@[11; 13)
NAME@[13; 17)
WHITESPACE@[13; 14)
IDENT@[14; 17) "foo"
L_PAREN@[17; 18)

View File

@ -1,6 +1,7 @@
FILE@[0; 290)
STRUCT_ITEM@[0; 14)
STRUCT_KW@[0; 6)
NAME@[6; 9)
WHITESPACE@[6; 7)
IDENT@[7; 9) "S1"
TYPE_PARAM_LIST@[9; 12)
@ -12,6 +13,7 @@ FILE@[0; 290)
WHITESPACE@[13; 14)
STRUCT_ITEM@[14; 33)
STRUCT_KW@[14; 20)
NAME@[20; 23)
WHITESPACE@[20; 21)
IDENT@[21; 23) "S2"
TYPE_PARAM_LIST@[23; 26)
@ -27,6 +29,7 @@ FILE@[0; 290)
WHITESPACE@[32; 33)
STRUCT_ITEM@[33; 58)
STRUCT_KW@[33; 39)
NAME@[39; 42)
WHITESPACE@[39; 40)
IDENT@[40; 42) "S3"
TYPE_PARAM_LIST@[42; 46)
@ -37,6 +40,7 @@ FILE@[0; 290)
WHITESPACE@[45; 46)
L_CURLY@[46; 47)
NAMED_FIELD@[47; 55)
NAME@[47; 49)
WHITESPACE@[47; 48)
IDENT@[48; 49) "u"
COLON@[49; 50)
@ -47,6 +51,7 @@ FILE@[0; 290)
WHITESPACE@[56; 58)
STRUCT_ITEM@[58; 71)
STRUCT_KW@[58; 64)
NAME@[64; 67)
WHITESPACE@[64; 65)
IDENT@[65; 67) "S4"
TYPE_PARAM_LIST@[67; 69)
@ -56,6 +61,7 @@ FILE@[0; 290)
WHITESPACE@[70; 71)
STRUCT_ITEM@[71; 86)
STRUCT_KW@[71; 77)
NAME@[77; 80)
WHITESPACE@[77; 78)
IDENT@[78; 80) "S5"
TYPE_PARAM_LIST@[80; 84)
@ -67,6 +73,7 @@ FILE@[0; 290)
WHITESPACE@[85; 86)
STRUCT_ITEM@[86; 102)
STRUCT_KW@[86; 92)
NAME@[92; 95)
WHITESPACE@[92; 93)
IDENT@[93; 95) "S6"
TYPE_PARAM_LIST@[95; 100)
@ -79,6 +86,7 @@ FILE@[0; 290)
WHITESPACE@[101; 102)
STRUCT_ITEM@[102; 121)
STRUCT_KW@[102; 108)
NAME@[108; 111)
WHITESPACE@[108; 109)
IDENT@[109; 111) "S7"
TYPE_PARAM_LIST@[111; 119)
@ -93,6 +101,7 @@ FILE@[0; 290)
WHITESPACE@[120; 121)
STRUCT_ITEM@[121; 143)
STRUCT_KW@[121; 127)
NAME@[127; 130)
WHITESPACE@[127; 128)
IDENT@[128; 130) "S8"
TYPE_PARAM_LIST@[130; 141)
@ -110,6 +119,7 @@ FILE@[0; 290)
WHITESPACE@[142; 143)
STRUCT_ITEM@[143; 167)
STRUCT_KW@[143; 149)
NAME@[149; 152)
WHITESPACE@[149; 150)
IDENT@[150; 152) "S9"
TYPE_PARAM_LIST@[152; 165)
@ -128,6 +138,7 @@ FILE@[0; 290)
WHITESPACE@[166; 167)
STRUCT_ITEM@[167; 184)
STRUCT_KW@[167; 173)
NAME@[173; 177)
WHITESPACE@[173; 174)
IDENT@[174; 177) "S10"
TYPE_PARAM_LIST@[177; 182)
@ -140,6 +151,7 @@ FILE@[0; 290)
WHITESPACE@[183; 184)
STRUCT_ITEM@[184; 204)
STRUCT_KW@[184; 190)
NAME@[190; 194)
WHITESPACE@[190; 191)
IDENT@[191; 194) "S11"
TYPE_PARAM_LIST@[194; 202)
@ -155,6 +167,7 @@ FILE@[0; 290)
WHITESPACE@[203; 204)
STRUCT_ITEM@[204; 235)
STRUCT_KW@[204; 210)
NAME@[210; 214)
WHITESPACE@[210; 211)
IDENT@[211; 214) "S12"
TYPE_PARAM_LIST@[214; 232)
@ -178,6 +191,7 @@ FILE@[0; 290)
WHITESPACE@[233; 235)
STRUCT_ITEM@[235; 250)
STRUCT_KW@[235; 241)
NAME@[241; 245)
WHITESPACE@[241; 242)
IDENT@[242; 245) "S13"
TYPE_PARAM_LIST@[245; 248)
@ -189,6 +203,7 @@ FILE@[0; 290)
WHITESPACE@[249; 250)
STRUCT_ITEM@[250; 268)
STRUCT_KW@[250; 256)
NAME@[256; 260)
WHITESPACE@[256; 257)
IDENT@[257; 260) "S14"
TYPE_PARAM_LIST@[260; 266)
@ -204,6 +219,7 @@ FILE@[0; 290)
WHITESPACE@[267; 268)
STRUCT_ITEM@[268; 290)
STRUCT_KW@[268; 274)
NAME@[274; 278)
WHITESPACE@[274; 275)
IDENT@[275; 278) "S15"
TYPE_PARAM_LIST@[278; 288)

View File

@ -1,6 +1,7 @@
FILE@[0; 182)
ENUM_ITEM@[0; 13)
ENUM_KW@[0; 4)
NAME@[4; 8)
WHITESPACE@[4; 5)
IDENT@[5; 7) "E1"
WHITESPACE@[7; 8)
@ -10,6 +11,7 @@ FILE@[0; 182)
WHITESPACE@[11; 13)
ENUM_ITEM@[13; 29)
ENUM_KW@[13; 17)
NAME@[17; 20)
WHITESPACE@[17; 18)
IDENT@[18; 20) "E2"
TYPE_PARAM_LIST@[20; 24)
@ -24,6 +26,7 @@ FILE@[0; 182)
WHITESPACE@[27; 29)
ENUM_ITEM@[29; 48)
ENUM_KW@[29; 33)
NAME@[33; 37)
WHITESPACE@[33; 34)
IDENT@[34; 36) "E3"
WHITESPACE@[36; 37)
@ -36,6 +39,7 @@ FILE@[0; 182)
WHITESPACE@[46; 48)
ENUM_ITEM@[48; 68)
ENUM_KW@[48; 52)
NAME@[52; 56)
WHITESPACE@[52; 53)
IDENT@[53; 55) "E4"
WHITESPACE@[55; 56)
@ -49,6 +53,7 @@ FILE@[0; 182)
WHITESPACE@[66; 68)
ENUM_ITEM@[68; 182)
ENUM_KW@[68; 72)
NAME@[72; 76)
WHITESPACE@[72; 73)
IDENT@[73; 75) "E5"
WHITESPACE@[75; 76)
@ -72,6 +77,7 @@ FILE@[0; 182)
WHITESPACE@[102; 103)
L_CURLY@[103; 104)
NAMED_FIELD@[104; 119)
NAME@[104; 114)
WHITESPACE@[104; 113)
IDENT@[113; 114) "a"
COLON@[114; 115)
@ -83,6 +89,7 @@ FILE@[0; 182)
WHITESPACE@[120; 129)
PUB_KW@[129; 132)
WHITESPACE@[132; 133)
NAME@[133; 134)
IDENT@[133; 134) "b"
COLON@[134; 135)
WHITESPACE@[135; 136)

View File

@ -1,6 +1,7 @@
FILE@[0; 200)
STRUCT_ITEM@[0; 13)
STRUCT_KW@[0; 6)
NAME@[6; 8)
WHITESPACE@[6; 7)
IDENT@[7; 8) "A"
TYPE_PARAM_LIST@[8; 11)
@ -12,6 +13,7 @@ FILE@[0; 200)
WHITESPACE@[12; 13)
STRUCT_ITEM@[13; 27)
STRUCT_KW@[13; 19)
NAME@[19; 21)
WHITESPACE@[19; 20)
IDENT@[20; 21) "B"
TYPE_PARAM_LIST@[21; 25)
@ -24,6 +26,7 @@ FILE@[0; 200)
WHITESPACE@[26; 27)
STRUCT_ITEM@[27; 44)
STRUCT_KW@[27; 33)
NAME@[33; 35)
WHITESPACE@[33; 34)
IDENT@[34; 35) "C"
TYPE_PARAM_LIST@[35; 42)
@ -38,6 +41,7 @@ FILE@[0; 200)
WHITESPACE@[43; 44)
STRUCT_ITEM@[44; 64)
STRUCT_KW@[44; 50)
NAME@[50; 52)
WHITESPACE@[50; 51)
IDENT@[51; 52) "D"
TYPE_PARAM_LIST@[52; 62)
@ -55,6 +59,7 @@ FILE@[0; 200)
WHITESPACE@[63; 64)
STRUCT_ITEM@[64; 87)
STRUCT_KW@[64; 70)
NAME@[70; 72)
WHITESPACE@[70; 71)
IDENT@[71; 72) "E"
TYPE_PARAM_LIST@[72; 85)
@ -74,6 +79,7 @@ FILE@[0; 200)
WHITESPACE@[86; 87)
STRUCT_ITEM@[87; 117)
STRUCT_KW@[87; 93)
NAME@[93; 95)
WHITESPACE@[93; 94)
IDENT@[94; 95) "F"
TYPE_PARAM_LIST@[95; 115)
@ -91,6 +97,7 @@ FILE@[0; 200)
PLUS@[107; 108)
PATH@[108; 114)
PATH_SEGMENT@[108; 114)
NAME_REF@[108; 114)
WHITESPACE@[108; 109)
IDENT@[109; 114) "Clone"
R_ANGLE@[114; 115)
@ -98,6 +105,7 @@ FILE@[0; 200)
WHITESPACE@[116; 117)
STRUCT_ITEM@[117; 144)
STRUCT_KW@[117; 123)
NAME@[123; 125)
WHITESPACE@[123; 124)
IDENT@[124; 125) "G"
TYPE_PARAM_LIST@[125; 142)
@ -107,12 +115,14 @@ FILE@[0; 200)
COLON@[127; 128)
PATH@[128; 135)
PATH_SEGMENT@[128; 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)
NAME_REF@[136; 141)
WHITESPACE@[136; 137)
IDENT@[137; 141) "Copy"
R_ANGLE@[141; 142)
@ -120,6 +130,7 @@ FILE@[0; 200)
WHITESPACE@[143; 144)
STRUCT_ITEM@[144; 181)
STRUCT_KW@[144; 150)
NAME@[150; 152)
WHITESPACE@[150; 151)
IDENT@[151; 152) "H"
TYPE_PARAM_LIST@[152; 179)
@ -131,6 +142,7 @@ FILE@[0; 200)
PATH_SEGMENT@[155; 162)
WHITESPACE@[155; 156)
COLONCOLON@[156; 158)
NAME_REF@[158; 162)
IDENT@[158; 161) "Foo"
WHITESPACE@[161; 162)
PLUS@[162; 163)
@ -141,6 +153,7 @@ FILE@[0; 200)
SELF_KW@[164; 168)
COLONCOLON@[168; 170)
PATH_SEGMENT@[170; 174)
NAME_REF@[170; 174)
IDENT@[170; 173) "Bar"
WHITESPACE@[173; 174)
PLUS@[174; 175)
@ -151,6 +164,7 @@ FILE@[0; 200)
WHITESPACE@[180; 181)
STRUCT_ITEM@[181; 200)
STRUCT_KW@[181; 187)
NAME@[187; 189)
WHITESPACE@[187; 188)
IDENT@[188; 189) "I"
TYPE_PARAM_LIST@[189; 198)

View File

@ -4,6 +4,7 @@ FILE@[0; 71)
EXTERN_KW@[0; 6)
WHITESPACE@[6; 7)
FN_KW@[7; 9)
NAME@[9; 13)
WHITESPACE@[9; 10)
IDENT@[10; 13) "foo"
L_PAREN@[13; 14)
@ -20,6 +21,7 @@ FILE@[0; 71)
STRING@[28; 31)
WHITESPACE@[31; 32)
FN_KW@[32; 34)
NAME@[34; 38)
WHITESPACE@[34; 35)
IDENT@[35; 38) "bar"
L_PAREN@[38; 39)
@ -36,6 +38,7 @@ FILE@[0; 71)
RAW_STRING@[53; 57)
WHITESPACE@[57; 58)
FN_KW@[58; 60)
NAME@[60; 64)
WHITESPACE@[60; 61)
IDENT@[61; 64) "baz"
L_PAREN@[64; 65)

View File

@ -1,6 +1,7 @@
FILE@[0; 47)
STATIC_ITEM@[0; 21)
STATIC_KW@[0; 6)
NAME@[6; 10)
WHITESPACE@[6; 7)
IDENT@[7; 10) "FOO"
COLON@[10; 11)
@ -17,6 +18,7 @@ FILE@[0; 47)
STATIC_KW@[21; 27)
WHITESPACE@[27; 28)
MUT_KW@[28; 31)
NAME@[31; 35)
WHITESPACE@[31; 32)
IDENT@[32; 35) "BAR"
COLON@[35; 36)

View File

@ -1,6 +1,7 @@
FILE@[0; 46)
CONST_ITEM@[0; 21)
CONST_KW@[0; 5)
NAME@[5; 9)
WHITESPACE@[5; 6)
IDENT@[6; 9) "FOO"
COLON@[9; 10)
@ -17,6 +18,7 @@ FILE@[0; 46)
CONST_KW@[21; 26)
WHITESPACE@[26; 27)
MUT_KW@[27; 30)
NAME@[30; 34)
WHITESPACE@[30; 31)
IDENT@[31; 34) "BAR"
COLON@[34; 35)

View File

@ -73,16 +73,24 @@ fn test_from_dir(dir: &Path) -> Vec<PathBuf> {
acc
}
const REWRITE: bool = false;
fn print_difference(expected: &str, actual: &str, path: &Path) {
let dir = project_dir();
let path = path.strip_prefix(&dir).unwrap_or_else(|_| path);
if expected.trim() == actual.trim() {
println!("whitespace difference, rewriting");
println!("file: {}\n", path.display());
file::put_text(path, actual).unwrap();
} else {
return;
}
if REWRITE {
println!("rewriting {}", path.display());
file::put_text(path, actual).unwrap();
return;
}
let changeset = Changeset::new(actual, expected, "\n");
print!("{}", changeset);
}
println!("file: {}\n", path.display());
panic!("Comparison failed")
}