internal: move outlined parser tests

This commit is contained in:
Aleksey Kladov 2021-12-26 17:58:33 +03:00
parent f4cb0ff9be
commit 0f74758fea
353 changed files with 13703 additions and 10 deletions

View file

@ -0,0 +1,34 @@
SOURCE_FILE@0..34
STRUCT@0..34
STRUCT_KW@0..6 "struct"
WHITESPACE@6..7 " "
NAME@7..8
IDENT@7..8 "S"
WHITESPACE@8..9 " "
RECORD_FIELD_LIST@9..34
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
RECORD_FIELD@15..21
NAME@15..16
IDENT@15..16 "a"
COLON@16..17 ":"
WHITESPACE@17..18 " "
PATH_TYPE@18..21
PATH@18..21
PATH_SEGMENT@18..21
NAME_REF@18..21
IDENT@18..21 "u32"
WHITESPACE@21..26 "\n "
RECORD_FIELD@26..32
NAME@26..27
IDENT@26..27 "b"
COLON@27..28 ":"
WHITESPACE@28..29 " "
PATH_TYPE@29..32
PATH@29..32
PATH_SEGMENT@29..32
NAME_REF@29..32
IDENT@29..32 "u32"
WHITESPACE@32..33 "\n"
R_CURLY@33..34 "}"
error 21..21: expected COMMA

View file

@ -0,0 +1,4 @@
struct S {
a: u32
b: u32
}

View file

@ -0,0 +1,34 @@
SOURCE_FILE
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "a"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "u32"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "b"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "u32"
WHITESPACE "\n"
R_CURLY "}"
error 21: expected COMMA

View file

@ -0,0 +1,18 @@
SOURCE_FILE@0..21
ERROR@0..2
IF_KW@0..2 "if"
WHITESPACE@2..3 " "
ERROR@3..8
MATCH_KW@3..8 "match"
WHITESPACE@8..10 "\n\n"
STRUCT@10..21
STRUCT_KW@10..16 "struct"
WHITESPACE@16..17 " "
NAME@17..18
IDENT@17..18 "S"
WHITESPACE@18..19 " "
RECORD_FIELD_LIST@19..21
L_CURLY@19..20 "{"
R_CURLY@20..21 "}"
error 0..0: expected an item
error 3..3: expected an item

View file

@ -0,0 +1,3 @@
if match
struct S {}

View file

@ -0,0 +1,18 @@
SOURCE_FILE
ERROR
IF_KW "if"
WHITESPACE " "
ERROR
MATCH_KW "match"
WHITESPACE "\n\n"
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
R_CURLY "}"
error 0: expected an item
error 3: expected an item

View file

@ -0,0 +1,45 @@
SOURCE_FILE@0..42
SHEBANG@0..20 "#!/use/bin/env rusti"
WHITESPACE@20..21 "\n"
ATTR@21..23
POUND@21..22 "#"
BANG@22..23 "!"
ERROR@23..24
SLASH@23..24 "/"
USE@24..28
USE_KW@24..27 "use"
ERROR@27..28
SLASH@27..28 "/"
MACRO_CALL@28..31
PATH@28..31
PATH_SEGMENT@28..31
NAME_REF@28..31
IDENT@28..31 "bin"
ERROR@31..32
SLASH@31..32 "/"
MACRO_CALL@32..35
PATH@32..35
PATH_SEGMENT@32..35
NAME_REF@32..35
IDENT@32..35 "env"
WHITESPACE@35..36 " "
MACRO_CALL@36..41
PATH@36..41
PATH_SEGMENT@36..41
NAME_REF@36..41
IDENT@36..41 "rusti"
WHITESPACE@41..42 "\n"
error 23..23: expected `[`
error 23..23: expected an item
error 27..27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 28..28: expected SEMICOLON
error 31..31: expected BANG
error 31..31: expected `{`, `[`, `(`
error 31..31: expected SEMICOLON
error 31..31: expected an item
error 35..35: expected BANG
error 35..35: expected `{`, `[`, `(`
error 35..35: expected SEMICOLON
error 41..41: expected BANG
error 41..41: expected `{`, `[`, `(`
error 41..41: expected SEMICOLON

View file

@ -0,0 +1,2 @@
#!/use/bin/env rusti
#!/use/bin/env rusti

View file

@ -0,0 +1,45 @@
SOURCE_FILE
SHEBANG "#!/use/bin/env rusti"
WHITESPACE "\n"
ATTR
POUND "#"
BANG "!"
ERROR
SLASH "/"
USE
USE_KW "use"
ERROR
SLASH "/"
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "bin"
ERROR
SLASH "/"
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "env"
WHITESPACE " "
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "rusti"
WHITESPACE "\n"
error 23: expected `[`
error 23: expected an item
error 27: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 28: expected SEMICOLON
error 31: expected BANG
error 31: expected `{`, `[`, `(`
error 31: expected SEMICOLON
error 31: expected an item
error 35: expected BANG
error 35: expected `{`, `[`, `(`
error 35: expected SEMICOLON
error 41: expected BANG
error 41: expected `{`, `[`, `(`
error 41: expected SEMICOLON

View file

@ -0,0 +1,39 @@
SOURCE_FILE@0..40
STRUCT@0..39
STRUCT_KW@0..6 "struct"
WHITESPACE@6..7 " "
NAME@7..8
IDENT@7..8 "S"
WHITESPACE@8..9 " "
RECORD_FIELD_LIST@9..39
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
RECORD_FIELD@15..21
NAME@15..16
IDENT@15..16 "a"
COLON@16..17 ":"
WHITESPACE@17..18 " "
PATH_TYPE@18..21
PATH@18..21
PATH_SEGMENT@18..21
NAME_REF@18..21
IDENT@18..21 "i32"
COMMA@21..22 ","
WHITESPACE@22..27 "\n "
RECORD_FIELD@27..36
NAME@27..28
IDENT@27..28 "b"
COLON@28..29 ":"
WHITESPACE@29..30 " "
PATH_TYPE@30..36
PATH@30..36
PATH_SEGMENT@30..36
NAME_REF@30..36
IDENT@30..36 "String"
COMMA@36..37 ","
WHITESPACE@37..38 "\n"
R_CURLY@38..39 "}"
ERROR@39..40
SEMICOLON@39..40 ";"
error 39..39: expected item, found `;`
consider removing this semicolon

View file

@ -0,0 +1,4 @@
struct S {
a: i32,
b: String,
};

View file

@ -0,0 +1,39 @@
SOURCE_FILE
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "a"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i32"
COMMA ","
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "b"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "String"
COMMA ","
WHITESPACE "\n"
R_CURLY "}"
ERROR
SEMICOLON ";"
error 39: expected item, found `;`
consider removing this semicolon

View file

@ -0,0 +1,15 @@
SOURCE_FILE@0..12
USE@0..12
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..11
PATH@4..11
PATH@4..7
PATH_SEGMENT@4..7
NAME_REF@4..7
IDENT@4..7 "foo"
COLON2@7..9 "::"
ERROR@9..11
INT_NUMBER@9..11 "92"
SEMICOLON@11..12 ";"
error 9..9: expected identifier

View file

@ -0,0 +1 @@
use foo::92;

View file

@ -0,0 +1,15 @@
SOURCE_FILE
USE
USE_KW "use"
WHITESPACE " "
USE_TREE
PATH
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
COLON2 "::"
ERROR
INT_NUMBER "92"
SEMICOLON ";"
error 9: expected identifier

View file

@ -0,0 +1,62 @@
SOURCE_FILE@0..54
FN@0..31
ATTR@0..18
POUND@0..1 "#"
L_BRACK@1..2 "["
META@2..17
PATH@2..5
PATH_SEGMENT@2..5
NAME_REF@2..5
IDENT@2..5 "foo"
TOKEN_TREE@5..17
L_PAREN@5..6 "("
IDENT@6..9 "foo"
COMMA@9..10 ","
WHITESPACE@10..11 " "
PLUS@11..12 "+"
COMMA@12..13 ","
WHITESPACE@13..14 " "
INT_NUMBER@14..16 "92"
R_PAREN@16..17 ")"
R_BRACK@17..18 "]"
WHITESPACE@18..19 "\n"
FN_KW@19..21 "fn"
WHITESPACE@21..22 " "
NAME@22..25
IDENT@22..25 "foo"
PARAM_LIST@25..27
L_PAREN@25..26 "("
R_PAREN@26..27 ")"
WHITESPACE@27..28 " "
BLOCK_EXPR@28..31
STMT_LIST@28..31
L_CURLY@28..29 "{"
WHITESPACE@29..30 "\n"
R_CURLY@30..31 "}"
WHITESPACE@31..34 "\n\n\n"
ATTR@34..53
POUND@34..35 "#"
L_BRACK@35..36 "["
META@36..53
PATH@36..39
PATH_SEGMENT@36..39
NAME_REF@36..39
IDENT@36..39 "foo"
TOKEN_TREE@39..53
L_PAREN@39..40 "("
WHITESPACE@40..41 "\n"
FN_KW@41..43 "fn"
WHITESPACE@43..44 " "
IDENT@44..47 "foo"
TOKEN_TREE@47..49
L_PAREN@47..48 "("
R_PAREN@48..49 ")"
WHITESPACE@49..50 " "
TOKEN_TREE@50..53
L_CURLY@50..51 "{"
WHITESPACE@51..52 "\n"
R_CURLY@52..53 "}"
WHITESPACE@53..54 "\n"
error 53..53: expected R_PAREN
error 53..53: expected `]`
error 53..53: expected an item

View file

@ -0,0 +1,8 @@
#[foo(foo, +, 92)]
fn foo() {
}
#[foo(
fn foo() {
}

View file

@ -0,0 +1,62 @@
SOURCE_FILE
FN
ATTR
POUND "#"
L_BRACK "["
META
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
TOKEN_TREE
L_PAREN "("
IDENT "foo"
COMMA ","
WHITESPACE " "
PLUS "+"
COMMA ","
WHITESPACE " "
INT_NUMBER "92"
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n"
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n\n\n"
ATTR
POUND "#"
L_BRACK "["
META
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
TOKEN_TREE
L_PAREN "("
WHITESPACE "\n"
FN_KW "fn"
WHITESPACE " "
IDENT "foo"
TOKEN_TREE
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
TOKEN_TREE
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 53: expected R_PAREN
error 53: expected `]`
error 53: expected an item

View file

@ -0,0 +1,74 @@
SOURCE_FILE@0..74
STRUCT@0..73
STRUCT_KW@0..6 "struct"
WHITESPACE@6..7 " "
NAME@7..8
IDENT@7..8 "S"
WHITESPACE@8..9 " "
RECORD_FIELD_LIST@9..73
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
RECORD_FIELD@15..21
NAME@15..16
IDENT@15..16 "f"
COLON@16..17 ":"
WHITESPACE@17..18 " "
PATH_TYPE@18..21
PATH@18..21
PATH_SEGMENT@18..21
NAME_REF@18..21
IDENT@18..21 "u32"
COMMA@21..22 ","
WHITESPACE@22..27 "\n "
VISIBILITY@27..30
PUB_KW@27..30 "pub"
WHITESPACE@30..31 " "
ERROR@31..33
INT_NUMBER@31..33 "92"
WHITESPACE@33..38 "\n "
ERROR@38..39
PLUS@38..39 "+"
WHITESPACE@39..40 " "
ERROR@40..41
MINUS@40..41 "-"
WHITESPACE@41..42 " "
ERROR@42..43
STAR@42..43 "*"
WHITESPACE@43..48 "\n "
RECORD_FIELD@48..58
VISIBILITY@48..51
PUB_KW@48..51 "pub"
WHITESPACE@51..52 " "
NAME@52..53
IDENT@52..53 "x"
COLON@53..54 ":"
WHITESPACE@54..55 " "
PATH_TYPE@55..58
PATH@55..58
PATH_SEGMENT@55..58
NAME_REF@55..58
IDENT@55..58 "u32"
COMMA@58..59 ","
WHITESPACE@59..64 "\n "
RECORD_FIELD@64..70
NAME@64..65
IDENT@64..65 "z"
COLON@65..66 ":"
WHITESPACE@66..67 " "
PATH_TYPE@67..70
PATH@67..70
PATH_SEGMENT@67..70
NAME_REF@67..70
IDENT@67..70 "f64"
COMMA@70..71 ","
WHITESPACE@71..72 "\n"
R_CURLY@72..73 "}"
WHITESPACE@73..74 "\n"
error 31..31: expected field declaration
error 33..33: expected COMMA
error 38..38: expected field declaration
error 39..39: expected COMMA
error 40..40: expected field declaration
error 41..41: expected COMMA
error 42..42: expected field declaration
error 43..43: expected COMMA

View file

@ -0,0 +1,7 @@
struct S {
f: u32,
pub 92
+ - *
pub x: u32,
z: f64,
}

View file

@ -0,0 +1,74 @@
SOURCE_FILE
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "f"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "u32"
COMMA ","
WHITESPACE "\n "
VISIBILITY
PUB_KW "pub"
WHITESPACE " "
ERROR
INT_NUMBER "92"
WHITESPACE "\n "
ERROR
PLUS "+"
WHITESPACE " "
ERROR
MINUS "-"
WHITESPACE " "
ERROR
STAR "*"
WHITESPACE "\n "
RECORD_FIELD
VISIBILITY
PUB_KW "pub"
WHITESPACE " "
NAME
IDENT "x"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "u32"
COMMA ","
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "z"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "f64"
COMMA ","
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 31: expected field declaration
error 33: expected COMMA
error 38: expected field declaration
error 39: expected COMMA
error 40: expected field declaration
error 41: expected COMMA
error 42: expected field declaration
error 43: expected COMMA

View file

@ -0,0 +1,33 @@
SOURCE_FILE@0..31
ERROR@0..1
R_CURLY@0..1 "}"
WHITESPACE@1..3 "\n\n"
STRUCT@3..12
STRUCT_KW@3..9 "struct"
WHITESPACE@9..10 " "
NAME@10..11
IDENT@10..11 "S"
SEMICOLON@11..12 ";"
WHITESPACE@12..14 "\n\n"
ERROR@14..15
R_CURLY@14..15 "}"
WHITESPACE@15..17 "\n\n"
FN@17..27
FN_KW@17..19 "fn"
WHITESPACE@19..20 " "
NAME@20..23
IDENT@20..23 "foo"
PARAM_LIST@23..25
L_PAREN@23..24 "("
R_PAREN@24..25 ")"
BLOCK_EXPR@25..27
STMT_LIST@25..27
L_CURLY@25..26 "{"
R_CURLY@26..27 "}"
WHITESPACE@27..29 "\n\n"
ERROR@29..30
R_CURLY@29..30 "}"
WHITESPACE@30..31 "\n"
error 0..0: unmatched `}`
error 14..14: unmatched `}`
error 29..29: unmatched `}`

View file

@ -0,0 +1,9 @@
}
struct S;
}
fn foo(){}
}

View file

@ -0,0 +1,33 @@
SOURCE_FILE
ERROR
R_CURLY "}"
WHITESPACE "\n\n"
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
SEMICOLON ";"
WHITESPACE "\n\n"
ERROR
R_CURLY "}"
WHITESPACE "\n\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n\n"
ERROR
R_CURLY "}"
WHITESPACE "\n"
error 0: unmatched `}`
error 14: unmatched `}`
error 29: unmatched `}`

View file

@ -0,0 +1,81 @@
SOURCE_FILE@0..95
FN@0..12
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..12
STMT_LIST@9..12
L_CURLY@9..10 "{"
WHITESPACE@10..11 "\n"
R_CURLY@11..12 "}"
WHITESPACE@12..14 "\n\n"
MACRO_CALL@14..19
PATH@14..17
PATH_SEGMENT@14..17
NAME_REF@14..17
IDENT@14..17 "bar"
TOKEN_TREE@17..19
L_PAREN@17..18 "("
R_PAREN@18..19 ")"
WHITESPACE@19..20 " "
ERROR@20..80
L_CURLY@20..21 "{"
WHITESPACE@21..26 "\n "
IF_EXPR@26..78
IF_KW@26..28 "if"
WHITESPACE@28..29 " "
CONDITION@29..33
LITERAL@29..33
TRUE_KW@29..33 "true"
WHITESPACE@33..34 " "
BLOCK_EXPR@34..51
STMT_LIST@34..51
L_CURLY@34..35 "{"
WHITESPACE@35..44 "\n "
LITERAL@44..45
INT_NUMBER@44..45 "1"
WHITESPACE@45..50 "\n "
R_CURLY@50..51 "}"
WHITESPACE@51..52 " "
ELSE_KW@52..56 "else"
WHITESPACE@56..57 " "
BLOCK_EXPR@57..78
STMT_LIST@57..78
L_CURLY@57..58 "{"
WHITESPACE@58..67 "\n "
BIN_EXPR@67..72
LITERAL@67..68
INT_NUMBER@67..68 "2"
WHITESPACE@68..69 " "
PLUS@69..70 "+"
WHITESPACE@70..71 " "
LITERAL@71..72
INT_NUMBER@71..72 "3"
WHITESPACE@72..77 "\n "
R_CURLY@77..78 "}"
WHITESPACE@78..79 "\n"
R_CURLY@79..80 "}"
WHITESPACE@80..82 "\n\n"
FN@82..94
FN_KW@82..84 "fn"
WHITESPACE@84..85 " "
NAME@85..88
IDENT@85..88 "baz"
PARAM_LIST@88..90
L_PAREN@88..89 "("
R_PAREN@89..90 ")"
WHITESPACE@90..91 " "
BLOCK_EXPR@91..94
STMT_LIST@91..94
L_CURLY@91..92 "{"
WHITESPACE@92..93 "\n"
R_CURLY@93..94 "}"
WHITESPACE@94..95 "\n"
error 17..17: expected BANG
error 19..19: expected SEMICOLON
error 20..20: expected an item

View file

@ -0,0 +1,13 @@
fn foo() {
}
bar() {
if true {
1
} else {
2 + 3
}
}
fn baz() {
}

View file

@ -0,0 +1,81 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n\n"
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "bar"
TOKEN_TREE
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
ERROR
L_CURLY "{"
WHITESPACE "\n "
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LITERAL
INT_NUMBER "1"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE " "
ELSE_KW "else"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
BIN_EXPR
LITERAL
INT_NUMBER "2"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
LITERAL
INT_NUMBER "3"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "baz"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 17: expected BANG
error 19: expected SEMICOLON
error 20: expected an item

View file

@ -0,0 +1,56 @@
SOURCE_FILE@0..43
STRUCT@0..11
STRUCT_KW@0..6 "struct"
WHITESPACE@6..7 " "
NAME@7..8
IDENT@7..8 "S"
GENERIC_PARAM_LIST@8..11
L_ANGLE@8..9 "<"
ERROR@9..11
INT_NUMBER@9..11 "90"
WHITESPACE@11..12 " "
ERROR@12..13
PLUS@12..13 "+"
WHITESPACE@13..14 " "
ERROR@14..15
INT_NUMBER@14..15 "2"
ERROR@15..16
R_ANGLE@15..16 ">"
WHITESPACE@16..17 " "
ERROR@17..31
L_CURLY@17..18 "{"
WHITESPACE@18..23 "\n "
EXPR_STMT@23..24
PATH_EXPR@23..24
PATH@23..24
PATH_SEGMENT@23..24
NAME_REF@23..24
IDENT@23..24 "f"
ERROR@24..25
COLON@24..25 ":"
WHITESPACE@25..26 " "
PATH_EXPR@26..29
PATH@26..29
PATH_SEGMENT@26..29
NAME_REF@26..29
IDENT@26..29 "u32"
WHITESPACE@29..30 "\n"
R_CURLY@30..31 "}"
WHITESPACE@31..33 "\n\n"
STRUCT@33..42
STRUCT_KW@33..39 "struct"
WHITESPACE@39..40 " "
NAME@40..41
IDENT@40..41 "T"
SEMICOLON@41..42 ";"
WHITESPACE@42..43 "\n"
error 9..9: expected type parameter
error 11..11: expected COMMA
error 11..11: expected R_ANGLE
error 11..11: expected `;`, `{`, or `(`
error 12..12: expected an item
error 14..14: expected an item
error 15..15: expected an item
error 17..17: expected an item
error 24..24: expected SEMICOLON
error 24..24: expected expression

View file

@ -0,0 +1,5 @@
struct S<90 + 2> {
f: u32
}
struct T;

View file

@ -0,0 +1,56 @@
SOURCE_FILE
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "S"
GENERIC_PARAM_LIST
L_ANGLE "<"
ERROR
INT_NUMBER "90"
WHITESPACE " "
ERROR
PLUS "+"
WHITESPACE " "
ERROR
INT_NUMBER "2"
ERROR
R_ANGLE ">"
WHITESPACE " "
ERROR
L_CURLY "{"
WHITESPACE "\n "
EXPR_STMT
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "f"
ERROR
COLON ":"
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "u32"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n\n"
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "T"
SEMICOLON ";"
WHITESPACE "\n"
error 9: expected type parameter
error 11: expected COMMA
error 11: expected R_ANGLE
error 11: expected `;`, `{`, or `(`
error 12: expected an item
error 14: expected an item
error 15: expected an item
error 17: expected an item
error 24: expected SEMICOLON
error 24: expected expression

View file

@ -0,0 +1,45 @@
SOURCE_FILE@0..42
FN@0..41
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..7
IDENT@3..7 "main"
PARAM_LIST@7..9
L_PAREN@7..8 "("
R_PAREN@8..9 ")"
WHITESPACE@9..10 " "
BLOCK_EXPR@10..41
STMT_LIST@10..41
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
EXPR_STMT@16..24
CLOSURE_EXPR@16..24
PARAM_LIST@16..18
PIPE@16..17 "|"
PIPE@17..18 "|"
WHITESPACE@18..19 " "
RET_TYPE@19..24
THIN_ARROW@19..21 "->"
WHITESPACE@21..22 " "
TUPLE_TYPE@22..24
L_PAREN@22..23 "("
R_PAREN@23..24 ")"
WHITESPACE@24..25 " "
EXPR_STMT@25..39
BLOCK_EXPR@25..38
UNSAFE_KW@25..31 "unsafe"
WHITESPACE@31..32 " "
STMT_LIST@32..38
L_CURLY@32..33 "{"
WHITESPACE@33..34 " "
TUPLE_EXPR@34..36
L_PAREN@34..35 "("
R_PAREN@35..36 ")"
WHITESPACE@36..37 " "
R_CURLY@37..38 "}"
SEMICOLON@38..39 ";"
WHITESPACE@39..40 "\n"
R_CURLY@40..41 "}"
WHITESPACE@41..42 "\n"
error 24..24: expected a block
error 24..24: expected SEMICOLON

View file

@ -0,0 +1,3 @@
fn main() {
|| -> () unsafe { () };
}

View file

@ -0,0 +1,45 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "main"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
EXPR_STMT
CLOSURE_EXPR
PARAM_LIST
PIPE "|"
PIPE "|"
WHITESPACE " "
RET_TYPE
THIN_ARROW "->"
WHITESPACE " "
TUPLE_TYPE
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
EXPR_STMT
BLOCK_EXPR
UNSAFE_KW "unsafe"
WHITESPACE " "
STMT_LIST
L_CURLY "{"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
R_CURLY "}"
SEMICOLON ";"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 24: expected a block
error 24: expected SEMICOLON

View file

@ -0,0 +1,13 @@
SOURCE_FILE@0..19
ERROR@0..6
ABI@0..6
EXTERN_KW@0..6 "extern"
WHITESPACE@6..7 " "
STRUCT@7..18
STRUCT_KW@7..13 "struct"
WHITESPACE@13..14 " "
NAME@14..17
IDENT@14..17 "Foo"
SEMICOLON@17..18 ";"
WHITESPACE@18..19 "\n"
error 6..6: expected existential, fn, trait or impl

View file

@ -0,0 +1 @@
extern struct Foo;

View file

@ -0,0 +1,13 @@
SOURCE_FILE
ERROR
ABI
EXTERN_KW "extern"
WHITESPACE " "
STRUCT
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "Foo"
SEMICOLON ";"
WHITESPACE "\n"
error 6: expected existential, fn, trait or impl

View file

@ -0,0 +1,387 @@
SOURCE_FILE@0..389
FN@0..389
VISIBILITY@0..10
PUB_KW@0..3
L_PAREN@3..4
SUPER_KW@4..9
R_PAREN@9..10
WHITESPACE@10..11
FN_KW@11..13
WHITESPACE@13..14
NAME@14..21
IDENT@14..21 "process"
GENERIC_PARAM_LIST@21..38
L_ANGLE@21..22
LIFETIME_PARAM@22..24
LIFETIME@22..24 "'a"
COMMA@24..25
WHITESPACE@25..26
TYPE_PARAM@26..37
NAME@26..27
IDENT@26..27 "S"
COLON@27..28
WHITESPACE@28..29
PATH@29..37
PATH_SEGMENT@29..37
NAME_REF@29..33
IDENT@29..33 "Sink"
GENERIC_ARG_LIST@33..37
L_ANGLE@33..34
LIFETIME_ARG@34..36
LIFETIME@34..36 "'a"
R_ANGLE@36..37
R_ANGLE@37..38
PARAM_LIST@38..93
L_PAREN@38..39
PARAM@39..54
IDENT_PAT@39..46
NAME@39..46
IDENT@39..46 "builder"
COLON@46..47
WHITESPACE@47..48
REF_TYPE@48..54
AMP@48..49
MUT_KW@49..52
WHITESPACE@52..53
PATH_TYPE@53..54
PATH@53..54
PATH_SEGMENT@53..54
NAME_REF@53..54
IDENT@53..54 "S"
COMMA@54..55
WHITESPACE@55..56
PARAM@56..72
IDENT_PAT@56..62
NAME@56..62
IDENT@56..62 "tokens"
COLON@62..63
WHITESPACE@63..64
REF_TYPE@64..72
AMP@64..65
SLICE_TYPE@65..72
L_BRACK@65..66
PATH_TYPE@66..71
PATH@66..71
PATH_SEGMENT@66..71
NAME_REF@66..71
IDENT@66..71 "Token"
R_BRACK@71..72
COMMA@72..73
WHITESPACE@73..74
PARAM@74..92
IDENT_PAT@74..80
NAME@74..80
IDENT@74..80 "events"
COLON@80..81
WHITESPACE@81..82
PATH_TYPE@82..92
PATH@82..92
PATH_SEGMENT@82..92
NAME_REF@82..85
IDENT@82..85 "Vec"
GENERIC_ARG_LIST@85..92
L_ANGLE@85..86
TYPE_ARG@86..91
PATH_TYPE@86..91
PATH@86..91
PATH_SEGMENT@86..91
NAME_REF@86..91
IDENT@86..91 "Event"
R_ANGLE@91..92
R_PAREN@92..93
WHITESPACE@93..94
BLOCK_EXPR@94..389
L_CURLY@94..95
WHITESPACE@95..100
LET_STMT@100..125
LET_KW@100..103
WHITESPACE@103..104
IDENT_PAT@104..120
MUT_KW@104..107
WHITESPACE@107..108
NAME@108..120
IDENT@108..120 "next_tok_idx"
WHITESPACE@120..121
EQ@121..122
WHITESPACE@122..123
LITERAL@123..124
INT_NUMBER@123..124 "0"
SEMICOLON@124..125
WHITESPACE@125..130
LET_STMT@130..389
LET_KW@130..133
WHITESPACE@133..134
IDENT_PAT@134..140
NAME@134..140
IDENT@134..140 "eat_ws"
WHITESPACE@140..141
EQ@141..142
WHITESPACE@142..143
CLOSURE_EXPR@143..389
PARAM_LIST@143..388
PIPE@143..144
PARAM@144..159
IDENT_PAT@144..147
NAME@144..147
IDENT@144..147 "idx"
COLON@147..148
WHITESPACE@148..149
REF_TYPE@149..159
AMP@149..150
MUT_KW@150..153
WHITESPACE@153..154
PATH_TYPE@154..159
PATH@154..159
PATH_SEGMENT@154..159
NAME_REF@154..159
IDENT@154..159 "usize"
COMMA@159..160
WHITESPACE@160..161
PARAM@161..167
REF_PAT@161..167
AMP@161..162
MUT_KW@162..165
WHITESPACE@165..166
err: `expected pattern`
ERROR@166..167
PIPE@166..167
err: `expected COMMA`
WHITESPACE@167..168
err: `expected pattern`
PARAM@168..169
ERROR@168..169
L_CURLY@168..169
err: `expected COMMA`
WHITESPACE@169..178
err: `expected pattern`
PARAM@178..183
ERROR@178..183
WHILE_KW@178..183
err: `expected COMMA`
WHITESPACE@183..184
err: `expected pattern`
PARAM@184..187
ERROR@184..187
LET_KW@184..187
err: `expected COMMA`
WHITESPACE@187..188
PARAM@188..199
TUPLE_STRUCT_PAT@188..199
PATH@188..192
PATH_SEGMENT@188..192
NAME_REF@188..192
IDENT@188..192 "Some"
L_PAREN@192..193
IDENT_PAT@193..198
NAME@193..198
IDENT@193..198 "token"
R_PAREN@198..199
err: `expected COMMA`
WHITESPACE@199..200
err: `expected pattern`
PARAM@200..201
ERROR@200..201
EQ@200..201
err: `expected COMMA`
WHITESPACE@201..202
PARAM@202..208
IDENT_PAT@202..208
NAME@202..208
IDENT@202..208 "tokens"
err: `expected COMMA`
err: `expected pattern`
PARAM@208..209
ERROR@208..209
DOT@208..209
err: `expected COMMA`
PARAM@209..218
TUPLE_STRUCT_PAT@209..218
PATH@209..212
PATH_SEGMENT@209..212
NAME_REF@209..212
IDENT@209..212 "get"
L_PAREN@212..213
err: `expected pattern`
ERROR@213..214
STAR@213..214
err: `expected COMMA`
IDENT_PAT@214..217
NAME@214..217
IDENT@214..217 "idx"
R_PAREN@217..218
err: `expected COMMA`
WHITESPACE@218..219
err: `expected pattern`
PARAM@219..220
ERROR@219..220
L_CURLY@219..220
err: `expected COMMA`
WHITESPACE@220..233
err: `expected pattern`
PARAM@233..235
ERROR@233..235
IF_KW@233..235
err: `expected COMMA`
WHITESPACE@235..236
err: `expected pattern`
PARAM@236..237
ERROR@236..237
BANG@236..237
err: `expected COMMA`
PARAM@237..242
IDENT_PAT@237..242
NAME@237..242
IDENT@237..242 "token"
err: `expected COMMA`
err: `expected pattern`
PARAM@242..243
ERROR@242..243
DOT@242..243
err: `expected COMMA`
PARAM@243..247
IDENT_PAT@243..247
NAME@243..247
IDENT@243..247 "kind"
err: `expected COMMA`
err: `expected pattern`
PARAM@247..248
ERROR@247..248
DOT@247..248
err: `expected COMMA`
PARAM@248..259
TUPLE_STRUCT_PAT@248..259
PATH@248..257
PATH_SEGMENT@248..257
NAME_REF@248..257
IDENT@248..257 "is_trivia"
L_PAREN@257..258
R_PAREN@258..259
err: `expected COMMA`
WHITESPACE@259..260
err: `expected pattern`
PARAM@260..261
ERROR@260..261
L_CURLY@260..261
err: `expected COMMA`
WHITESPACE@261..278
PARAM@278..283
IDENT_PAT@278..283
NAME@278..283
IDENT@278..283 "break"
err: `expected COMMA`
err: `expected pattern`
PARAM@283..284
ERROR@283..284
SEMICOLON@283..284
err: `expected COMMA`
WHITESPACE@284..297
err: `expected pattern`
PARAM@297..298
ERROR@297..298
R_CURLY@297..298
err: `expected COMMA`
WHITESPACE@298..311
PARAM@311..318
IDENT_PAT@311..318
NAME@311..318
IDENT@311..318 "builder"
err: `expected COMMA`
err: `expected pattern`
PARAM@318..319
ERROR@318..319
DOT@318..319
err: `expected COMMA`
PARAM@319..346
TUPLE_STRUCT_PAT@319..346
PATH@319..323
PATH_SEGMENT@319..323
NAME_REF@319..323
IDENT@319..323 "leaf"
L_PAREN@323..324
IDENT_PAT@324..329
NAME@324..329
IDENT@324..329 "token"
err: `expected COMMA`
err: `expected pattern`
ERROR@329..330
DOT@329..330
err: `expected COMMA`
IDENT_PAT@330..334
NAME@330..334
IDENT@330..334 "kind"
COMMA@334..335
WHITESPACE@335..336
IDENT_PAT@336..341
NAME@336..341
IDENT@336..341 "token"
err: `expected COMMA`
err: `expected pattern`
ERROR@341..342
DOT@341..342
err: `expected COMMA`
IDENT_PAT@342..345
NAME@342..345
IDENT@342..345 "len"
R_PAREN@345..346
err: `expected COMMA`
err: `expected pattern`
PARAM@346..347
ERROR@346..347
SEMICOLON@346..347
err: `expected COMMA`
WHITESPACE@347..360
err: `expected pattern`
PARAM@360..361
ERROR@360..361
STAR@360..361
err: `expected COMMA`
PARAM@361..364
IDENT_PAT@361..364
NAME@361..364
IDENT@361..364 "idx"
err: `expected COMMA`
WHITESPACE@364..365
err: `expected pattern`
PARAM@365..366
ERROR@365..366
PLUS@365..366
err: `expected COMMA`
err: `expected pattern`
PARAM@366..367
ERROR@366..367
EQ@366..367
err: `expected COMMA`
WHITESPACE@367..368
PARAM@368..369
LITERAL@368..369
INT_NUMBER@368..369 "1"
err: `expected COMMA`
WHITESPACE@369..378
err: `expected pattern`
PARAM@378..379
ERROR@378..379
R_CURLY@378..379
err: `expected COMMA`
WHITESPACE@379..384
err: `expected pattern`
PARAM@384..385
ERROR@384..385
R_CURLY@384..385
err: `expected COMMA`
err: `expected pattern`
PARAM@385..386
ERROR@385..386
SEMICOLON@385..386
err: `expected COMMA`
WHITESPACE@386..387
err: `expected pattern`
PARAM@387..388
ERROR@387..388
R_CURLY@387..388
err: `expected COMMA`
err: `expected PIPE`
WHITESPACE@388..389
err: `expected expression`
err: `expected SEMI`
err: `expected R_CURLY`
ERROR@389..389

View file

@ -0,0 +1,89 @@
SOURCE_FILE@0..86
STRUCT@0..72
VISIBILITY@0..3
PUB_KW@0..3 "pub"
WHITESPACE@3..4 " "
STRUCT_KW@4..10 "struct"
WHITESPACE@10..11 " "
NAME@11..16
IDENT@11..16 "Cache"
TUPLE_FIELD_LIST@16..72
L_PAREN@16..17 "("
WHITESPACE@17..22 "\n "
TUPLE_FIELD@22..68
PATH_TYPE@22..68
PATH@22..68
PATH_SEGMENT@22..68
NAME_REF@22..29
IDENT@22..29 "RefCell"
GENERIC_ARG_LIST@29..68
L_ANGLE@29..30 "<"
TYPE_ARG@30..68
PATH_TYPE@30..68
PATH@30..68
PATH_SEGMENT@30..68
NAME_REF@30..37
IDENT@30..37 "HashMap"
GENERIC_ARG_LIST@37..68
L_ANGLE@37..38 "<"
WHITESPACE@38..47 "\n "
TYPE_ARG@47..53
PATH_TYPE@47..53
PATH@47..53
PATH_SEGMENT@47..53
NAME_REF@47..53
IDENT@47..53 "TypeId"
COMMA@53..54 ","
WHITESPACE@54..63 "\n "
TYPE_ARG@63..68
PATH_TYPE@63..68
PATH@63..68
PATH_SEGMENT@63..68
NAME_REF@63..66
IDENT@63..66 "Box"
GENERIC_ARG_LIST@66..68
L_ANGLE@66..67 "<"
TYPE_ARG@67..68
ERROR@67..68
AT@67..68 "@"
WHITESPACE@68..69 " "
TUPLE_FIELD@69..72
PATH_TYPE@69..72
PATH@69..72
PATH_SEGMENT@69..72
NAME_REF@69..72
IDENT@69..72 "Any"
ERROR@72..72
ERROR@72..73
R_ANGLE@72..73 ">"
ERROR@73..74
COMMA@73..74 ","
WHITESPACE@74..79 "\n "
ERROR@79..80
R_ANGLE@79..80 ">"
ERROR@80..81
R_ANGLE@80..81 ">"
WHITESPACE@81..82 "\n"
ERROR@82..83
R_PAREN@82..83 ")"
ERROR@83..84
SEMICOLON@83..84 ";"
WHITESPACE@84..86 "\n\n"
error 67..67: expected type
error 68..68: expected COMMA
error 68..68: expected R_ANGLE
error 68..68: expected COMMA
error 68..68: expected R_ANGLE
error 68..68: expected COMMA
error 68..68: expected R_ANGLE
error 68..68: expected COMMA
error 72..72: expected COMMA
error 72..72: expected a type
error 72..72: expected R_PAREN
error 72..72: expected SEMICOLON
error 72..72: expected an item
error 73..73: expected an item
error 79..79: expected an item
error 80..80: expected an item
error 82..82: expected an item
error 83..83: expected an item

View file

@ -0,0 +1,7 @@
pub struct Cache(
RefCell<HashMap<
TypeId,
Box<@ Any>,
>>
);

View file

@ -0,0 +1,89 @@
SOURCE_FILE
STRUCT
VISIBILITY
PUB_KW "pub"
WHITESPACE " "
STRUCT_KW "struct"
WHITESPACE " "
NAME
IDENT "Cache"
TUPLE_FIELD_LIST
L_PAREN "("
WHITESPACE "\n "
TUPLE_FIELD
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "RefCell"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "HashMap"
GENERIC_ARG_LIST
L_ANGLE "<"
WHITESPACE "\n "
TYPE_ARG
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "TypeId"
COMMA ","
WHITESPACE "\n "
TYPE_ARG
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Box"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
ERROR
AT "@"
WHITESPACE " "
TUPLE_FIELD
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Any"
ERROR
ERROR
R_ANGLE ">"
ERROR
COMMA ","
WHITESPACE "\n "
ERROR
R_ANGLE ">"
ERROR
R_ANGLE ">"
WHITESPACE "\n"
ERROR
R_PAREN ")"
ERROR
SEMICOLON ";"
WHITESPACE "\n\n"
error 67: expected type
error 68: expected COMMA
error 68: expected R_ANGLE
error 68: expected COMMA
error 68: expected R_ANGLE
error 68: expected COMMA
error 68: expected R_ANGLE
error 68: expected COMMA
error 72: expected COMMA
error 72: expected a type
error 72: expected R_PAREN
error 72: expected SEMICOLON
error 72: expected an item
error 73: expected an item
error 79: expected an item
error 80: expected an item
error 82: expected an item
error 83: expected an item

View file

@ -0,0 +1,32 @@
SOURCE_FILE@0..23
FN@0..22
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
GENERIC_PARAM_LIST@6..9
L_ANGLE@6..7 "<"
TYPE_PARAM@7..8
NAME@7..8
IDENT@7..8 "T"
R_ANGLE@8..9 ">"
PARAM_LIST@9..11
L_PAREN@9..10 "("
R_PAREN@10..11 ")"
WHITESPACE@11..12 " "
WHERE_CLAUSE@12..19
WHERE_KW@12..17 "where"
WHITESPACE@17..18 " "
WHERE_PRED@18..19
PATH_TYPE@18..19
PATH@18..19
PATH_SEGMENT@18..19
NAME_REF@18..19
IDENT@18..19 "T"
WHITESPACE@19..20 " "
BLOCK_EXPR@20..22
STMT_LIST@20..22
L_CURLY@20..21 "{"
R_CURLY@21..22 "}"
WHITESPACE@22..23 "\n"
error 19..19: expected colon

View file

@ -0,0 +1 @@
fn foo<T>() where T {}

View file

@ -0,0 +1,32 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
GENERIC_PARAM_LIST
L_ANGLE "<"
TYPE_PARAM
NAME
IDENT "T"
R_ANGLE ">"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
WHERE_CLAUSE
WHERE_KW "where"
WHITESPACE " "
WHERE_PRED
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "T"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
error 19: expected colon

View file

@ -0,0 +1,24 @@
SOURCE_FILE@0..14
FN@0..7
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..7
L_PAREN@6..7 "("
ERROR@7..8
R_CURLY@7..8 "}"
ERROR@8..9
R_PAREN@8..9 ")"
WHITESPACE@9..10 " "
ERROR@10..13
L_CURLY@10..11 "{"
WHITESPACE@11..12 "\n"
R_CURLY@12..13 "}"
WHITESPACE@13..14 "\n"
error 7..7: expected value parameter
error 7..7: expected R_PAREN
error 7..7: expected a block
error 7..7: unmatched `}`
error 8..8: expected an item
error 10..10: expected an item

View file

@ -0,0 +1,2 @@
fn foo(}) {
}

View file

@ -0,0 +1,24 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
ERROR
R_CURLY "}"
ERROR
R_PAREN ")"
WHITESPACE " "
ERROR
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 7: expected value parameter
error 7: expected R_PAREN
error 7: expected a block
error 7: unmatched `}`
error 8: expected an item
error 10: expected an item

View file

@ -0,0 +1,44 @@
SOURCE_FILE@0..56
FN@0..55
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..55
STMT_LIST@9..55
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..38
CALL_EXPR@15..38
PATH_EXPR@15..18
PATH@15..18
PATH_SEGMENT@15..18
NAME_REF@15..18
IDENT@15..18 "foo"
ARG_LIST@18..38
L_PAREN@18..19 "("
WHITESPACE@19..28 "\n "
LITERAL@28..29
INT_NUMBER@28..29 "1"
COMMA@29..30 ","
WHITESPACE@30..31 " "
LITERAL@31..32
INT_NUMBER@31..32 "2"
WHITESPACE@32..37 "\n "
R_PAREN@37..38 ")"
WHITESPACE@38..43 "\n "
EXPR_STMT@43..53
RETURN_EXPR@43..52
RETURN_KW@43..49 "return"
WHITESPACE@49..50 " "
LITERAL@50..52
INT_NUMBER@50..52 "92"
SEMICOLON@52..53 ";"
WHITESPACE@53..54 "\n"
R_CURLY@54..55 "}"
WHITESPACE@55..56 "\n"
error 38..38: expected SEMICOLON

View file

@ -0,0 +1,6 @@
fn foo() {
foo(
1, 2
)
return 92;
}

View file

@ -0,0 +1,44 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
EXPR_STMT
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
ARG_LIST
L_PAREN "("
WHITESPACE "\n "
LITERAL
INT_NUMBER "1"
COMMA ","
WHITESPACE " "
LITERAL
INT_NUMBER "2"
WHITESPACE "\n "
R_PAREN ")"
WHITESPACE "\n "
EXPR_STMT
RETURN_EXPR
RETURN_KW "return"
WHITESPACE " "
LITERAL
INT_NUMBER "92"
SEMICOLON ";"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 38: expected SEMICOLON

View file

@ -0,0 +1,47 @@
SOURCE_FILE@0..47
FN@0..46
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..16
L_PAREN@6..7 "("
PARAM@7..15
IDENT_PAT@7..10
NAME@7..10
IDENT@7..10 "foo"
COLON@10..11 ":"
WHITESPACE@11..12 " "
PATH_TYPE@12..15
PATH@12..15
PATH_SEGMENT@12..15
NAME_REF@12..15
IDENT@12..15 "i32"
R_PAREN@15..16 ")"
WHITESPACE@16..17 " "
BLOCK_EXPR@17..46
STMT_LIST@17..46
L_CURLY@17..18 "{"
WHITESPACE@18..23 "\n "
LET_STMT@23..36
LET_KW@23..26 "let"
WHITESPACE@26..27 " "
IDENT_PAT@27..30
NAME@27..30
IDENT@27..30 "bar"
WHITESPACE@30..31 " "
EQ@31..32 "="
WHITESPACE@32..33 " "
LITERAL@33..35
INT_NUMBER@33..35 "92"
SEMICOLON@35..36 ";"
WHITESPACE@36..41 "\n "
BIN_EXPR@41..44
LITERAL@41..42
INT_NUMBER@41..42 "1"
WHITESPACE@42..43 " "
PLUS@43..44 "+"
WHITESPACE@44..45 "\n"
R_CURLY@45..46 "}"
WHITESPACE@46..47 "\n"
error 44..44: expected expression

View file

@ -0,0 +1,4 @@
fn foo(foo: i32) {
let bar = 92;
1 +
}

View file

@ -0,0 +1,47 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
PARAM
IDENT_PAT
NAME
IDENT "foo"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i32"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "bar"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "92"
SEMICOLON ";"
WHITESPACE "\n "
BIN_EXPR
LITERAL
INT_NUMBER "1"
WHITESPACE " "
PLUS "+"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 44: expected expression

View file

@ -0,0 +1,133 @@
SOURCE_FILE@0..183
IMPL@0..182
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..13
PATH@5..13
PATH_SEGMENT@5..13
NAME_REF@5..13
IDENT@5..13 "FnScopes"
WHITESPACE@13..14 " "
ASSOC_ITEM_LIST@14..182
L_CURLY@14..15 "{"
WHITESPACE@15..20 "\n "
FN@20..161
FN_KW@20..22 "fn"
WHITESPACE@22..23 " "
NAME@23..32
IDENT@23..32 "new_scope"
PARAM_LIST@32..35
L_PAREN@32..33 "("
PARAM@33..34
REF_PAT@33..34
AMP@33..34 "&"
R_PAREN@34..35 ")"
WHITESPACE@35..36 " "
RET_TYPE@36..46
THIN_ARROW@36..38 "->"
WHITESPACE@38..39 " "
PATH_TYPE@39..46
PATH@39..46
PATH_SEGMENT@39..46
NAME_REF@39..46
IDENT@39..46 "ScopeId"
WHITESPACE@46..47 " "
BLOCK_EXPR@47..161
STMT_LIST@47..161
L_CURLY@47..48 "{"
WHITESPACE@48..57 "\n "
LET_STMT@57..85
LET_KW@57..60 "let"
WHITESPACE@60..61 " "
IDENT_PAT@61..64
NAME@61..64
IDENT@61..64 "res"
WHITESPACE@64..65 " "
EQ@65..66 "="
WHITESPACE@66..67 " "
METHOD_CALL_EXPR@67..84
FIELD_EXPR@67..78
PATH_EXPR@67..71
PATH@67..71
PATH_SEGMENT@67..71
NAME_REF@67..71
SELF_KW@67..71 "self"
DOT@71..72 "."
NAME_REF@72..78
IDENT@72..78 "scopes"
DOT@78..79 "."
NAME_REF@79..82
IDENT@79..82 "len"
ARG_LIST@82..84
L_PAREN@82..83 "("
R_PAREN@83..84 ")"
SEMICOLON@84..85 ";"
WHITESPACE@85..94 "\n "
METHOD_CALL_EXPR@94..155
FIELD_EXPR@94..105
PATH_EXPR@94..98
PATH@94..98
PATH_SEGMENT@94..98
NAME_REF@94..98
SELF_KW@94..98 "self"
DOT@98..99 "."
NAME_REF@99..105
IDENT@99..105 "scopes"
DOT@105..106 "."
NAME_REF@106..110
IDENT@106..110 "push"
ARG_LIST@110..155
L_PAREN@110..111 "("
RECORD_EXPR@111..154
PATH@111..120
PATH_SEGMENT@111..120
NAME_REF@111..120
IDENT@111..120 "ScopeData"
WHITESPACE@120..121 " "
RECORD_EXPR_FIELD_LIST@121..154
L_CURLY@121..122 "{"
WHITESPACE@122..123 " "
RECORD_EXPR_FIELD@123..135
NAME_REF@123..129
IDENT@123..129 "parent"
COLON@129..130 ":"
WHITESPACE@130..131 " "
PATH_EXPR@131..135
PATH@131..135
PATH_SEGMENT@131..135
NAME_REF@131..135
IDENT@131..135 "None"
COMMA@135..136 ","
WHITESPACE@136..137 " "
RECORD_EXPR_FIELD@137..152
NAME_REF@137..144
IDENT@137..144 "entries"
COLON@144..145 ":"
WHITESPACE@145..146 " "
MACRO_CALL@146..152
PATH@146..149
PATH_SEGMENT@146..149
NAME_REF@146..149
IDENT@146..149 "vec"
BANG@149..150 "!"
TOKEN_TREE@150..152
L_BRACK@150..151 "["
R_BRACK@151..152 "]"
WHITESPACE@152..153 " "
R_CURLY@153..154 "}"
R_PAREN@154..155 ")"
WHITESPACE@155..160 "\n "
R_CURLY@160..161 "}"
WHITESPACE@161..167 "\n\n "
FN@167..180
FN_KW@167..169 "fn"
WHITESPACE@169..170 " "
NAME@170..180
IDENT@170..180 "set_parent"
WHITESPACE@180..181 "\n"
R_CURLY@181..182 "}"
WHITESPACE@182..183 "\n"
error 34..34: expected pattern
error 34..34: missing type for function parameter
error 180..180: expected function arguments
error 180..180: expected a block

View file

@ -0,0 +1,8 @@
impl FnScopes {
fn new_scope(&) -> ScopeId {
let res = self.scopes.len();
self.scopes.push(ScopeData { parent: None, entries: vec![] })
}
fn set_parent
}

View file

@ -0,0 +1,133 @@
SOURCE_FILE
IMPL
IMPL_KW "impl"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "FnScopes"
WHITESPACE " "
ASSOC_ITEM_LIST
L_CURLY "{"
WHITESPACE "\n "
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "new_scope"
PARAM_LIST
L_PAREN "("
PARAM
REF_PAT
AMP "&"
R_PAREN ")"
WHITESPACE " "
RET_TYPE
THIN_ARROW "->"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "ScopeId"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "res"
WHITESPACE " "
EQ "="
WHITESPACE " "
METHOD_CALL_EXPR
FIELD_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
SELF_KW "self"
DOT "."
NAME_REF
IDENT "scopes"
DOT "."
NAME_REF
IDENT "len"
ARG_LIST
L_PAREN "("
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n "
METHOD_CALL_EXPR
FIELD_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
SELF_KW "self"
DOT "."
NAME_REF
IDENT "scopes"
DOT "."
NAME_REF
IDENT "push"
ARG_LIST
L_PAREN "("
RECORD_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "ScopeData"
WHITESPACE " "
RECORD_EXPR_FIELD_LIST
L_CURLY "{"
WHITESPACE " "
RECORD_EXPR_FIELD
NAME_REF
IDENT "parent"
COLON ":"
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
COMMA ","
WHITESPACE " "
RECORD_EXPR_FIELD
NAME_REF
IDENT "entries"
COLON ":"
WHITESPACE " "
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "vec"
BANG "!"
TOKEN_TREE
L_BRACK "["
R_BRACK "]"
WHITESPACE " "
R_CURLY "}"
R_PAREN ")"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "set_parent"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 34: expected pattern
error 34: missing type for function parameter
error 180: expected function arguments
error 180: expected a block

View file

@ -0,0 +1,107 @@
SOURCE_FILE@0..139
FN@0..138
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..138
STMT_LIST@9..138
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LET_STMT@15..24
LET_KW@15..18 "let"
WHITESPACE@18..19 " "
IDENT_PAT@19..22
NAME@19..22
IDENT@19..22 "foo"
WHITESPACE@22..23 " "
EQ@23..24 "="
WHITESPACE@24..29 "\n "
LET_STMT@29..41
LET_KW@29..32 "let"
WHITESPACE@32..33 " "
IDENT_PAT@33..36
NAME@33..36
IDENT@33..36 "bar"
WHITESPACE@36..37 " "
EQ@37..38 "="
WHITESPACE@38..39 " "
LITERAL@39..40
INT_NUMBER@39..40 "1"
SEMICOLON@40..41 ";"
WHITESPACE@41..46 "\n "
LET_STMT@46..49
LET_KW@46..49 "let"
WHITESPACE@49..54 "\n "
LET_STMT@54..67
LET_KW@54..57 "let"
WHITESPACE@57..58 " "
IDENT_PAT@58..61
NAME@58..61
IDENT@58..61 "baz"
WHITESPACE@61..62 " "
EQ@62..63 "="
WHITESPACE@63..64 " "
LITERAL@64..66
INT_NUMBER@64..66 "92"
SEMICOLON@66..67 ";"
WHITESPACE@67..72 "\n "
LET_STMT@72..75
LET_KW@72..75 "let"
WHITESPACE@75..80 "\n "
EXPR_STMT@80..90
IF_EXPR@80..90
IF_KW@80..82 "if"
WHITESPACE@82..83 " "
CONDITION@83..87
LITERAL@83..87
TRUE_KW@83..87 "true"
WHITESPACE@87..88 " "
BLOCK_EXPR@88..90
STMT_LIST@88..90
L_CURLY@88..89 "{"
R_CURLY@89..90 "}"
WHITESPACE@90..95 "\n "
LET_STMT@95..98
LET_KW@95..98 "let"
WHITESPACE@98..103 "\n "
EXPR_STMT@103..116
WHILE_EXPR@103..116
WHILE_KW@103..108 "while"
WHITESPACE@108..109 " "
CONDITION@109..113
LITERAL@109..113
TRUE_KW@109..113 "true"
WHITESPACE@113..114 " "
BLOCK_EXPR@114..116
STMT_LIST@114..116
L_CURLY@114..115 "{"
R_CURLY@115..116 "}"
WHITESPACE@116..121 "\n "
LET_STMT@121..124
LET_KW@121..124 "let"
WHITESPACE@124..129 "\n "
LOOP_EXPR@129..136
LOOP_KW@129..133 "loop"
WHITESPACE@133..134 " "
BLOCK_EXPR@134..136
STMT_LIST@134..136
L_CURLY@134..135 "{"
R_CURLY@135..136 "}"
WHITESPACE@136..137 "\n"
R_CURLY@137..138 "}"
WHITESPACE@138..139 "\n"
error 24..24: expected expression
error 24..24: expected SEMICOLON
error 49..49: expected pattern
error 49..49: expected SEMICOLON
error 75..75: expected pattern
error 75..75: expected SEMICOLON
error 98..98: expected pattern
error 98..98: expected SEMICOLON
error 124..124: expected pattern
error 124..124: expected SEMICOLON

View file

@ -0,0 +1,12 @@
fn foo() {
let foo =
let bar = 1;
let
let baz = 92;
let
if true {}
let
while true {}
let
loop {}
}

View file

@ -0,0 +1,107 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "foo"
WHITESPACE " "
EQ "="
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "bar"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "baz"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "92"
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE "\n "
EXPR_STMT
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE "\n "
EXPR_STMT
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE "\n "
LOOP_EXPR
LOOP_KW "loop"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 24: expected expression
error 24: expected SEMICOLON
error 49: expected pattern
error 49: expected SEMICOLON
error 75: expected pattern
error 75: expected SEMICOLON
error 98: expected pattern
error 98: expected SEMICOLON
error 124: expected pattern
error 124: expected SEMICOLON

View file

@ -0,0 +1,21 @@
SOURCE_FILE@0..16
FN@0..2
FN_KW@0..2 "fn"
WHITESPACE@2..4 "\n\n"
FN@4..15
FN_KW@4..6 "fn"
WHITESPACE@6..7 " "
NAME@7..10
IDENT@7..10 "foo"
PARAM_LIST@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
WHITESPACE@12..13 " "
BLOCK_EXPR@13..15
STMT_LIST@13..15
L_CURLY@13..14 "{"
R_CURLY@14..15 "}"
WHITESPACE@15..16 "\n"
error 2..2: expected a name
error 2..2: expected function arguments
error 2..2: expected a block

View file

@ -0,0 +1,3 @@
fn
fn foo() {}

View file

@ -0,0 +1,21 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE "\n\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
error 2: expected a name
error 2: expected function arguments
error 2: expected a block

View file

@ -0,0 +1,34 @@
SOURCE_FILE@0..22
FN@0..21
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..17
L_PAREN@6..7 "("
PARAM@7..13
IDENT_PAT@7..8
NAME@7..8
IDENT@7..8 "x"
COLON@8..9 ":"
WHITESPACE@9..10 " "
PATH_TYPE@10..13
PATH@10..13
PATH_SEGMENT@10..13
NAME_REF@10..13
IDENT@10..13 "i32"
COMMA@13..14 ","
WHITESPACE@14..15 " "
PARAM@15..16
IDENT_PAT@15..16
NAME@15..16
IDENT@15..16 "y"
R_PAREN@16..17 ")"
WHITESPACE@17..18 " "
BLOCK_EXPR@18..21
STMT_LIST@18..21
L_CURLY@18..19 "{"
WHITESPACE@19..20 "\n"
R_CURLY@20..21 "}"
WHITESPACE@21..22 "\n"
error 16..16: missing type for function parameter

View file

@ -0,0 +1,2 @@
fn foo(x: i32, y) {
}

View file

@ -0,0 +1,34 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
PARAM
IDENT_PAT
NAME
IDENT "x"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i32"
COMMA ","
WHITESPACE " "
PARAM
IDENT_PAT
NAME
IDENT "y"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 16: missing type for function parameter

View file

@ -0,0 +1,171 @@
SOURCE_FILE@0..112
FN@0..33
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..4
IDENT@3..4 "a"
PARAM_LIST@4..6
L_PAREN@4..5 "("
R_PAREN@5..6 ")"
WHITESPACE@6..7 " "
BLOCK_EXPR@7..33
STMT_LIST@7..33
L_CURLY@7..8 "{"
WHITESPACE@8..9 " "
EXPR_STMT@9..17
ARRAY_EXPR@9..17
L_BRACK@9..10 "["
LITERAL@10..11
INT_NUMBER@10..11 "1"
COMMA@11..12 ","
WHITESPACE@12..13 " "
LITERAL@13..14
INT_NUMBER@13..14 "2"
COMMA@14..15 ","
WHITESPACE@15..16 " "
ERROR@16..17
AT@16..17 "@"
ERROR@17..18
COMMA@17..18 ","
WHITESPACE@18..19 " "
STRUCT@19..26
STRUCT_KW@19..25 "struct"
ERROR@25..26
COMMA@25..26 ","
WHITESPACE@26..27 " "
LET_STMT@27..31
LET_KW@27..30 "let"
ERROR@30..31
R_BRACK@30..31 "]"
WHITESPACE@31..32 " "
R_CURLY@32..33 "}"
WHITESPACE@33..34 "\n"
FN@34..68
FN_KW@34..36 "fn"
WHITESPACE@36..37 " "
NAME@37..38
IDENT@37..38 "b"
PARAM_LIST@38..40
L_PAREN@38..39 "("
R_PAREN@39..40 ")"
WHITESPACE@40..41 " "
BLOCK_EXPR@41..68
STMT_LIST@41..68
L_CURLY@41..42 "{"
WHITESPACE@42..43 " "
EXPR_STMT@43..54
CALL_EXPR@43..54
PATH_EXPR@43..46
PATH@43..46
PATH_SEGMENT@43..46
NAME_REF@43..46
IDENT@43..46 "foo"
ARG_LIST@46..54
L_PAREN@46..47 "("
LITERAL@47..48
INT_NUMBER@47..48 "1"
COMMA@48..49 ","
WHITESPACE@49..50 " "
LITERAL@50..51
INT_NUMBER@50..51 "2"
COMMA@51..52 ","
WHITESPACE@52..53 " "
ERROR@53..54
AT@53..54 "@"
ERROR@54..55
COMMA@54..55 ","
WHITESPACE@55..56 " "
IMPL@56..60
IMPL_KW@56..60 "impl"
ERROR@60..61
COMMA@60..61 ","
WHITESPACE@61..62 " "
LET_STMT@62..65
LET_KW@62..65 "let"
ERROR@65..66
R_PAREN@65..66 ")"
WHITESPACE@66..67 " "
R_CURLY@67..68 "}"
WHITESPACE@68..69 "\n"
FN@69..111
FN_KW@69..71 "fn"
WHITESPACE@71..72 " "
NAME@72..73
IDENT@72..73 "c"
PARAM_LIST@73..75
L_PAREN@73..74 "("
R_PAREN@74..75 ")"
WHITESPACE@75..76 " "
BLOCK_EXPR@76..111
STMT_LIST@76..111
L_CURLY@76..77 "{"
WHITESPACE@77..78 " "
EXPR_STMT@78..93
METHOD_CALL_EXPR@78..93
PATH_EXPR@78..81
PATH@78..81
PATH_SEGMENT@78..81
NAME_REF@78..81
IDENT@78..81 "foo"
DOT@81..82 "."
NAME_REF@82..85
IDENT@82..85 "bar"
ARG_LIST@85..93
L_PAREN@85..86 "("
LITERAL@86..87
INT_NUMBER@86..87 "1"
COMMA@87..88 ","
WHITESPACE@88..89 " "
LITERAL@89..90
INT_NUMBER@89..90 "2"
COMMA@90..91 ","
WHITESPACE@91..92 " "
ERROR@92..93
AT@92..93 "@"
ERROR@93..94
COMMA@93..94 ","
WHITESPACE@94..95 " "
ERROR@95..96
R_BRACK@95..96 "]"
ERROR@96..97
COMMA@96..97 ","
WHITESPACE@97..98 " "
TRAIT@98..104
TRAIT_KW@98..103 "trait"
ERROR@103..104
COMMA@103..104 ","
WHITESPACE@104..105 " "
LET_STMT@105..108
LET_KW@105..108 "let"
ERROR@108..109
R_PAREN@108..109 ")"
WHITESPACE@109..110 " "
R_CURLY@110..111 "}"
WHITESPACE@111..112 "\n"
error 16..16: expected expression
error 17..17: expected R_BRACK
error 17..17: expected SEMICOLON
error 17..17: expected expression
error 25..25: expected a name
error 26..26: expected `;`, `{`, or `(`
error 30..30: expected pattern
error 31..31: expected SEMICOLON
error 53..53: expected expression
error 54..54: expected SEMICOLON
error 54..54: expected expression
error 60..60: expected type
error 60..60: expected `{`
error 60..60: expected expression
error 65..65: expected pattern
error 65..65: expected SEMICOLON
error 65..65: expected expression
error 92..92: expected expression
error 93..93: expected SEMICOLON
error 93..93: expected expression
error 95..95: expected expression
error 96..96: expected expression
error 103..103: expected a name
error 104..104: expected `{`
error 108..108: expected pattern
error 108..108: expected SEMICOLON
error 108..108: expected expression

View file

@ -0,0 +1,3 @@
fn a() { [1, 2, @, struct, let] }
fn b() { foo(1, 2, @, impl, let) }
fn c() { foo.bar(1, 2, @, ], trait, let) }

View file

@ -0,0 +1,171 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "a"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
EXPR_STMT
ARRAY_EXPR
L_BRACK "["
LITERAL
INT_NUMBER "1"
COMMA ","
WHITESPACE " "
LITERAL
INT_NUMBER "2"
COMMA ","
WHITESPACE " "
ERROR
AT "@"
ERROR
COMMA ","
WHITESPACE " "
STRUCT
STRUCT_KW "struct"
ERROR
COMMA ","
WHITESPACE " "
LET_STMT
LET_KW "let"
ERROR
R_BRACK "]"
WHITESPACE " "
R_CURLY "}"
WHITESPACE "\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "b"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
EXPR_STMT
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
ARG_LIST
L_PAREN "("
LITERAL
INT_NUMBER "1"
COMMA ","
WHITESPACE " "
LITERAL
INT_NUMBER "2"
COMMA ","
WHITESPACE " "
ERROR
AT "@"
ERROR
COMMA ","
WHITESPACE " "
IMPL
IMPL_KW "impl"
ERROR
COMMA ","
WHITESPACE " "
LET_STMT
LET_KW "let"
ERROR
R_PAREN ")"
WHITESPACE " "
R_CURLY "}"
WHITESPACE "\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "c"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
EXPR_STMT
METHOD_CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
DOT "."
NAME_REF
IDENT "bar"
ARG_LIST
L_PAREN "("
LITERAL
INT_NUMBER "1"
COMMA ","
WHITESPACE " "
LITERAL
INT_NUMBER "2"
COMMA ","
WHITESPACE " "
ERROR
AT "@"
ERROR
COMMA ","
WHITESPACE " "
ERROR
R_BRACK "]"
ERROR
COMMA ","
WHITESPACE " "
TRAIT
TRAIT_KW "trait"
ERROR
COMMA ","
WHITESPACE " "
LET_STMT
LET_KW "let"
ERROR
R_PAREN ")"
WHITESPACE " "
R_CURLY "}"
WHITESPACE "\n"
error 16: expected expression
error 17: expected R_BRACK
error 17: expected SEMICOLON
error 17: expected expression
error 25: expected a name
error 26: expected `;`, `{`, or `(`
error 30: expected pattern
error 31: expected SEMICOLON
error 53: expected expression
error 54: expected SEMICOLON
error 54: expected expression
error 60: expected type
error 60: expected `{`
error 60: expected expression
error 65: expected pattern
error 65: expected SEMICOLON
error 65: expected expression
error 92: expected expression
error 93: expected SEMICOLON
error 93: expected expression
error 95: expected expression
error 96: expected expression
error 103: expected a name
error 104: expected `{`
error 108: expected pattern
error 108: expected SEMICOLON
error 108: expected expression

View file

@ -0,0 +1,44 @@
SOURCE_FILE@0..94
FN@0..55
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..7
IDENT@3..7 "main"
PARAM_LIST@7..9
L_PAREN@7..8 "("
R_PAREN@8..9 ")"
WHITESPACE@9..10 " "
BLOCK_EXPR@10..55
STMT_LIST@10..55
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
MACRO_CALL@16..49
PATH@16..19
PATH_SEGMENT@16..19
NAME_REF@16..19
IDENT@16..19 "foo"
BANG@19..20 "!"
WHITESPACE@20..21 " "
TOKEN_TREE@21..49
L_PAREN@21..22 "("
WHITESPACE@22..31 "\n "
IDENT@31..34 "bar"
COMMA@34..35 ","
WHITESPACE@35..36 " "
STRING@36..41 "\"baz\""
COMMA@41..42 ","
WHITESPACE@42..43 " "
INT_NUMBER@43..44 "1"
COMMA@44..45 ","
WHITESPACE@45..46 " "
FLOAT_NUMBER@46..49 "2.0"
WHITESPACE@49..54 "\n "
R_CURLY@54..55 "}"
WHITESPACE@55..56 " "
COMMENT@56..91 "//~ ERROR incorrect c ..."
WHITESPACE@91..92 "\n"
ERROR@92..93
R_CURLY@92..93 "}"
WHITESPACE@93..94 "\n"
error 49..49: unmatched `}`
error 92..92: unmatched `}`

View file

@ -0,0 +1,5 @@
fn main() {
foo! (
bar, "baz", 1, 2.0
} //~ ERROR incorrect close delimiter
}

View file

@ -0,0 +1,44 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "main"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
MACRO_CALL
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
BANG "!"
WHITESPACE " "
TOKEN_TREE
L_PAREN "("
WHITESPACE "\n "
IDENT "bar"
COMMA ","
WHITESPACE " "
STRING "\"baz\""
COMMA ","
WHITESPACE " "
INT_NUMBER "1"
COMMA ","
WHITESPACE " "
FLOAT_NUMBER "2.0"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE " "
COMMENT "//~ ERROR incorrect close delimiter"
WHITESPACE "\n"
ERROR
R_CURLY "}"
WHITESPACE "\n"
error 49: unmatched `}`
error 92: unmatched `}`

View file

@ -0,0 +1,321 @@
SOURCE_FILE@0..240
FN@0..53
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..4
IDENT@3..4 "f"
GENERIC_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 " "
TYPE_BOUND_LIST@8..47
TYPE_BOUND@8..14
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 " "
TYPE_BOUND@17..25
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 " "
TYPE_BOUND@28..47
L_PAREN@28..29 "("
FOR_TYPE@29..46
FOR_KW@29..32 "for"
GENERIC_PARAM_LIST@32..36
L_ANGLE@32..33 "<"
LIFETIME_PARAM@33..35
LIFETIME@33..35
LIFETIME_IDENT@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"
GENERIC_ARG_LIST@42..46
L_ANGLE@42..43 "<"
LIFETIME_ARG@43..45
LIFETIME@43..45
LIFETIME_IDENT@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_EXPR@51..53
STMT_LIST@51..53
L_CURLY@51..52 "{"
R_CURLY@52..53 "}"
WHITESPACE@53..55 "\n\n"
FN@55..239
FN_KW@55..57 "fn"
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_EXPR@65..239
STMT_LIST@65..239
L_CURLY@65..66 "{"
WHITESPACE@66..71 "\n "
LET_STMT@71..121
LET_KW@71..74 "let"
WHITESPACE@74..75 " "
WILDCARD_PAT@75..76
UNDERSCORE@75..76 "_"
COLON@76..77 ":"
WHITESPACE@77..78 " "
DYN_TRAIT_TYPE@78..121
TYPE_BOUND_LIST@78..121
TYPE_BOUND@78..88
PATH_TYPE@78..88
PATH@78..88
PATH_SEGMENT@78..88
NAME_REF@78..81
IDENT@78..81 "Box"
GENERIC_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 ")"
WHITESPACE@88..89 " "
PLUS@89..90 "+"
WHITESPACE@90..91 " "
TYPE_BOUND@91..99
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 " "
TYPE_BOUND@102..121
L_PAREN@102..103 "("
FOR_TYPE@103..120
FOR_KW@103..106 "for"
GENERIC_PARAM_LIST@106..110
L_ANGLE@106..107 "<"
LIFETIME_PARAM@107..109
LIFETIME@107..109
LIFETIME_IDENT@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"
GENERIC_ARG_LIST@116..120
L_ANGLE@116..117 "<"
LIFETIME_ARG@117..119
LIFETIME@117..119
LIFETIME_IDENT@117..119 "'a"
R_ANGLE@119..120 ">"
R_PAREN@120..121 ")"
ERROR@121..122
R_ANGLE@121..122 ">"
SEMICOLON@122..123 ";"
WHITESPACE@123..128 "\n "
LET_STMT@128..141
LET_KW@128..131 "let"
WHITESPACE@131..132 " "
WILDCARD_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"
GENERIC_ARG_LIST@138..141
L_ANGLE@138..139 "<"
TYPE_ARG@139..141
PAREN_TYPE@139..141
L_PAREN@139..140 "("
ERROR@140..141
QUESTION@140..141 "?"
EXPR_STMT@141..146
PATH_EXPR@141..146
PATH@141..146
PATH_SEGMENT@141..146
NAME_REF@141..146
IDENT@141..146 "Sized"
ERROR@146..147
R_PAREN@146..147 ")"
WHITESPACE@147..148 " "
ERROR@148..149
PLUS@148..149 "+"
WHITESPACE@149..150 " "
EXPR_STMT@150..180
TUPLE_EXPR@150..180
L_PAREN@150..151 "("
FOR_EXPR@151..180
FOR_KW@151..154 "for"
PATH_PAT@154..158
PATH@154..158
PATH_SEGMENT@154..158
L_ANGLE@154..155 "<"
ERROR@155..157
LIFETIME_IDENT@155..157 "'a"
R_ANGLE@157..158 ">"
WHITESPACE@158..159 " "
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 "<"
ERROR@165..167
LIFETIME_IDENT@165..167 "'a"
R_ANGLE@167..168 ">"
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 ">"
ERROR@179..180
SEMICOLON@179..180 ";"
WHITESPACE@180..185 "\n "
LET_STMT@185..235
LET_KW@185..188 "let"
WHITESPACE@188..189 " "
WILDCARD_PAT@189..190
UNDERSCORE@189..190 "_"
COLON@190..191 ":"
WHITESPACE@191..192 " "
DYN_TRAIT_TYPE@192..235
TYPE_BOUND_LIST@192..235
TYPE_BOUND@192..215
PATH_TYPE@192..215
PATH@192..215
PATH_SEGMENT@192..215
NAME_REF@192..195
IDENT@192..195 "Box"
GENERIC_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 "for"
GENERIC_PARAM_LIST@200..204
L_ANGLE@200..201 "<"
LIFETIME_PARAM@201..203
LIFETIME@201..203
LIFETIME_IDENT@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"
GENERIC_ARG_LIST@210..214
L_ANGLE@210..211 "<"
LIFETIME_ARG@211..213
LIFETIME@211..213
LIFETIME_IDENT@211..213 "'a"
R_ANGLE@213..214 ">"
R_PAREN@214..215 ")"
WHITESPACE@215..216 " "
PLUS@216..217 "+"
WHITESPACE@217..218 " "
TYPE_BOUND@218..224
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 " "
TYPE_BOUND@227..235
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 ")"
ERROR@235..236
R_ANGLE@235..236 ">"
SEMICOLON@236..237 ";"
WHITESPACE@237..238 "\n"
R_CURLY@238..239 "}"
WHITESPACE@239..240 "\n"
error 88..88: expected COMMA
error 88..88: expected R_ANGLE
error 121..121: expected SEMICOLON
error 121..121: expected expression
error 140..140: expected type
error 141..141: expected R_PAREN
error 141..141: expected COMMA
error 141..141: expected R_ANGLE
error 141..141: expected SEMICOLON
error 146..146: expected SEMICOLON
error 146..146: expected expression
error 148..148: expected expression
error 155..155: expected type
error 158..158: expected IN_KW
error 165..165: expected expression
error 168..168: expected expression
error 179..179: expected expression
error 180..180: expected a block
error 180..180: expected COMMA
error 180..180: expected expression
error 180..180: expected R_PAREN
error 180..180: expected SEMICOLON
error 215..215: expected COMMA
error 215..215: expected R_ANGLE
error 235..235: expected SEMICOLON
error 235..235: expected expression

View file

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

View file

@ -0,0 +1,321 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "f"
GENERIC_PARAM_LIST
L_ANGLE "<"
TYPE_PARAM
NAME
IDENT "T"
COLON ":"
WHITESPACE " "
TYPE_BOUND_LIST
TYPE_BOUND
L_PAREN "("
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Copy"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
QUESTION "?"
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Sized"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
FOR_TYPE
FOR_KW "for"
GENERIC_PARAM_LIST
L_ANGLE "<"
LIFETIME_PARAM
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Trait"
GENERIC_ARG_LIST
L_ANGLE "<"
LIFETIME_ARG
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
R_PAREN ")"
R_ANGLE ">"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "main"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
WILDCARD_PAT
UNDERSCORE "_"
COLON ":"
WHITESPACE " "
DYN_TRAIT_TYPE
TYPE_BOUND_LIST
TYPE_BOUND
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Box"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
PAREN_TYPE
L_PAREN "("
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Copy"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
QUESTION "?"
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Sized"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
FOR_TYPE
FOR_KW "for"
GENERIC_PARAM_LIST
L_ANGLE "<"
LIFETIME_PARAM
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Trait"
GENERIC_ARG_LIST
L_ANGLE "<"
LIFETIME_ARG
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
R_PAREN ")"
ERROR
R_ANGLE ">"
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
WILDCARD_PAT
UNDERSCORE "_"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Box"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
PAREN_TYPE
L_PAREN "("
ERROR
QUESTION "?"
EXPR_STMT
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "Sized"
ERROR
R_PAREN ")"
WHITESPACE " "
ERROR
PLUS "+"
WHITESPACE " "
EXPR_STMT
TUPLE_EXPR
L_PAREN "("
FOR_EXPR
FOR_KW "for"
PATH_PAT
PATH
PATH_SEGMENT
L_ANGLE "<"
ERROR
LIFETIME_IDENT "'a"
R_ANGLE ">"
WHITESPACE " "
BIN_EXPR
BIN_EXPR
BIN_EXPR
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "Trait"
L_ANGLE "<"
ERROR
LIFETIME_IDENT "'a"
R_ANGLE ">"
ERROR
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
PAREN_EXPR
L_PAREN "("
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "Copy"
R_PAREN ")"
R_ANGLE ">"
ERROR
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
WILDCARD_PAT
UNDERSCORE "_"
COLON ":"
WHITESPACE " "
DYN_TRAIT_TYPE
TYPE_BOUND_LIST
TYPE_BOUND
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Box"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
PAREN_TYPE
L_PAREN "("
FOR_TYPE
FOR_KW "for"
GENERIC_PARAM_LIST
L_ANGLE "<"
LIFETIME_PARAM
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Trait"
GENERIC_ARG_LIST
L_ANGLE "<"
LIFETIME_ARG
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Copy"
R_PAREN ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
TYPE_BOUND
L_PAREN "("
QUESTION "?"
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Sized"
R_PAREN ")"
ERROR
R_ANGLE ">"
SEMICOLON ";"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 88: expected COMMA
error 88: expected R_ANGLE
error 121: expected SEMICOLON
error 121: expected expression
error 140: expected type
error 141: expected R_PAREN
error 141: expected COMMA
error 141: expected R_ANGLE
error 141: expected SEMICOLON
error 146: expected SEMICOLON
error 146: expected expression
error 148: expected expression
error 155: expected type
error 158: expected IN_KW
error 165: expected expression
error 168: expected expression
error 179: expected expression
error 180: expected a block
error 180: expected COMMA
error 180: expected expression
error 180: expected R_PAREN
error 180: expected SEMICOLON
error 215: expected COMMA
error 215: expected R_ANGLE
error 235: expected SEMICOLON
error 235: expected expression

View file

@ -0,0 +1,204 @@
SOURCE_FILE@0..575
FN@0..574
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..7
IDENT@3..7 "main"
PARAM_LIST@7..9
L_PAREN@7..8 "("
R_PAREN@8..9 ")"
WHITESPACE@9..10 " "
BLOCK_EXPR@10..574
STMT_LIST@10..574
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
ENUM@16..152
ENUM_KW@16..20 "enum"
WHITESPACE@20..21 " "
NAME@21..25
IDENT@21..25 "Test"
WHITESPACE@25..26 " "
VARIANT_LIST@26..152
L_CURLY@26..27 "{"
WHITESPACE@27..36 "\n "
VARIANT@36..40
NAME@36..40
IDENT@36..40 "Var1"
COMMA@40..41 ","
WHITESPACE@41..50 "\n "
VARIANT@50..62
NAME@50..54
IDENT@50..54 "Var2"
TUPLE_FIELD_LIST@54..62
L_PAREN@54..55 "("
TUPLE_FIELD@55..61
PATH_TYPE@55..61
PATH@55..61
PATH_SEGMENT@55..61
NAME_REF@55..61
IDENT@55..61 "String"
R_PAREN@61..62 ")"
COMMA@62..63 ","
WHITESPACE@63..72 "\n "
VARIANT@72..145
NAME@72..76
IDENT@72..76 "Var3"
WHITESPACE@76..77 " "
RECORD_FIELD_LIST@77..145
L_CURLY@77..78 "{"
WHITESPACE@78..91 "\n "
RECORD_FIELD@91..95
NAME@91..94
IDENT@91..94 "abc"
COLON@94..95 ":"
WHITESPACE@95..96 " "
ERROR@96..98
L_CURLY@96..97 "{"
R_CURLY@97..98 "}"
ERROR@98..99
COMMA@98..99 ","
WHITESPACE@99..100 " "
COMMENT@100..135 "//~ ERROR: expected t ..."
WHITESPACE@135..144 "\n "
R_CURLY@144..145 "}"
COMMA@145..146 ","
WHITESPACE@146..151 "\n "
R_CURLY@151..152 "}"
WHITESPACE@152..158 "\n\n "
COMMENT@158..171 "// recover..."
WHITESPACE@171..176 "\n "
LET_STMT@176..186
LET_KW@176..179 "let"
WHITESPACE@179..180 " "
IDENT_PAT@180..181
NAME@180..181
IDENT@180..181 "a"
WHITESPACE@181..182 " "
EQ@182..183 "="
WHITESPACE@183..184 " "
LITERAL@184..185
INT_NUMBER@184..185 "1"
SEMICOLON@185..186 ";"
WHITESPACE@186..191 "\n "
ENUM@191..223
ENUM_KW@191..195 "enum"
WHITESPACE@195..196 " "
NAME@196..201
IDENT@196..201 "Test2"
WHITESPACE@201..202 " "
VARIANT_LIST@202..223
L_CURLY@202..203 "{"
WHITESPACE@203..212 "\n "
VARIANT@212..216
NAME@212..216
IDENT@212..216 "Fine"
COMMA@216..217 ","
WHITESPACE@217..222 "\n "
R_CURLY@222..223 "}"
WHITESPACE@223..229 "\n\n "
ENUM@229..300
ENUM_KW@229..233 "enum"
WHITESPACE@233..234 " "
NAME@234..239
IDENT@234..239 "Test3"
WHITESPACE@239..240 " "
VARIANT_LIST@240..300
L_CURLY@240..241 "{"
WHITESPACE@241..250 "\n "
VARIANT@250..293
NAME@250..259
IDENT@250..259 "StillFine"
WHITESPACE@259..260 " "
RECORD_FIELD_LIST@260..293
L_CURLY@260..261 "{"
WHITESPACE@261..274 "\n "
RECORD_FIELD@274..282
NAME@274..277
IDENT@274..277 "def"
COLON@277..278 ":"
WHITESPACE@278..279 " "
PATH_TYPE@279..282
PATH@279..282
PATH_SEGMENT@279..282
NAME_REF@279..282
IDENT@279..282 "i32"
COMMA@282..283 ","
WHITESPACE@283..292 "\n "
R_CURLY@292..293 "}"
COMMA@293..294 ","
WHITESPACE@294..299 "\n "
R_CURLY@299..300 "}"
WHITESPACE@300..306 "\n\n "
EXPR_STMT@306..459
BLOCK_EXPR@306..459
STMT_LIST@306..459
L_CURLY@306..307 "{"
WHITESPACE@307..316 "\n "
ENUM@316..453
COMMENT@316..329 "// fail again"
WHITESPACE@329..338 "\n "
ENUM_KW@338..342 "enum"
WHITESPACE@342..343 " "
NAME@343..348
IDENT@343..348 "Test4"
WHITESPACE@348..349 " "
VARIANT_LIST@349..453
L_CURLY@349..350 "{"
WHITESPACE@350..363 "\n "
VARIANT@363..372
NAME@363..367
IDENT@363..367 "Nope"
TUPLE_FIELD_LIST@367..372
L_PAREN@367..368 "("
TUPLE_FIELD@368..371
PATH_TYPE@368..371
PATH@368..371
PATH_SEGMENT@368..371
NAME_REF@368..371
IDENT@368..371 "i32"
WHITESPACE@371..372 " "
ERROR@372..372
ERROR@372..374
L_CURLY@372..373 "{"
R_CURLY@373..374 "}"
ERROR@374..375
R_PAREN@374..375 ")"
WHITESPACE@375..376 " "
COMMENT@376..396 "//~ ERROR: found `{`"
WHITESPACE@396..422 "\n ..."
COMMENT@422..443 "//~^ ERROR: found `{`"
WHITESPACE@443..452 "\n "
R_CURLY@452..453 "}"
WHITESPACE@453..458 "\n "
R_CURLY@458..459 "}"
WHITESPACE@459..464 "\n "
COMMENT@464..486 "// still recover later"
WHITESPACE@486..491 "\n "
LET_STMT@491..510
LET_KW@491..494 "let"
WHITESPACE@494..495 " "
IDENT_PAT@495..505
NAME@495..505
IDENT@495..505 "bad_syntax"
WHITESPACE@505..506 " "
EQ@506..507 "="
WHITESPACE@507..508 " "
ERROR@508..509
UNDERSCORE@508..509 "_"
SEMICOLON@509..510 ";"
WHITESPACE@510..511 " "
COMMENT@511..572 "//~ ERROR: expected e ..."
WHITESPACE@572..573 "\n"
R_CURLY@573..574 "}"
WHITESPACE@574..575 "\n"
error 95..95: expected type
error 95..95: expected COMMA
error 96..96: expected field
error 98..98: expected field declaration
error 371..371: expected COMMA
error 372..372: expected a type
error 372..372: expected R_PAREN
error 372..372: expected COMMA
error 372..372: expected enum variant
error 374..374: expected enum variant
error 508..508: expected expression

View file

@ -0,0 +1,31 @@
fn main() {
enum Test {
Var1,
Var2(String),
Var3 {
abc: {}, //~ ERROR: expected type, found `{`
},
}
// recover...
let a = 1;
enum Test2 {
Fine,
}
enum Test3 {
StillFine {
def: i32,
},
}
{
// fail again
enum Test4 {
Nope(i32 {}) //~ ERROR: found `{`
//~^ ERROR: found `{`
}
}
// still recover later
let bad_syntax = _; //~ ERROR: expected expression, found reserved identifier `_`
}

View file

@ -0,0 +1,204 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "main"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
ENUM
ENUM_KW "enum"
WHITESPACE " "
NAME
IDENT "Test"
WHITESPACE " "
VARIANT_LIST
L_CURLY "{"
WHITESPACE "\n "
VARIANT
NAME
IDENT "Var1"
COMMA ","
WHITESPACE "\n "
VARIANT
NAME
IDENT "Var2"
TUPLE_FIELD_LIST
L_PAREN "("
TUPLE_FIELD
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "String"
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
VARIANT
NAME
IDENT "Var3"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "abc"
COLON ":"
WHITESPACE " "
ERROR
L_CURLY "{"
R_CURLY "}"
ERROR
COMMA ","
WHITESPACE " "
COMMENT "//~ ERROR: expected type, found `{`"
WHITESPACE "\n "
R_CURLY "}"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
COMMENT "// recover..."
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "a"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
SEMICOLON ";"
WHITESPACE "\n "
ENUM
ENUM_KW "enum"
WHITESPACE " "
NAME
IDENT "Test2"
WHITESPACE " "
VARIANT_LIST
L_CURLY "{"
WHITESPACE "\n "
VARIANT
NAME
IDENT "Fine"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
ENUM
ENUM_KW "enum"
WHITESPACE " "
NAME
IDENT "Test3"
WHITESPACE " "
VARIANT_LIST
L_CURLY "{"
WHITESPACE "\n "
VARIANT
NAME
IDENT "StillFine"
WHITESPACE " "
RECORD_FIELD_LIST
L_CURLY "{"
WHITESPACE "\n "
RECORD_FIELD
NAME
IDENT "def"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i32"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
EXPR_STMT
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
ENUM
COMMENT "// fail again"
WHITESPACE "\n "
ENUM_KW "enum"
WHITESPACE " "
NAME
IDENT "Test4"
WHITESPACE " "
VARIANT_LIST
L_CURLY "{"
WHITESPACE "\n "
VARIANT
NAME
IDENT "Nope"
TUPLE_FIELD_LIST
L_PAREN "("
TUPLE_FIELD
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i32"
WHITESPACE " "
ERROR
ERROR
L_CURLY "{"
R_CURLY "}"
ERROR
R_PAREN ")"
WHITESPACE " "
COMMENT "//~ ERROR: found `{`"
WHITESPACE "\n "
COMMENT "//~^ ERROR: found `{`"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n "
COMMENT "// still recover later"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "bad_syntax"
WHITESPACE " "
EQ "="
WHITESPACE " "
ERROR
UNDERSCORE "_"
SEMICOLON ";"
WHITESPACE " "
COMMENT "//~ ERROR: expected expression, found reserved identifier `_`"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 95: expected type
error 95: expected COMMA
error 96: expected field
error 98: expected field declaration
error 371: expected COMMA
error 372: expected a type
error 372: expected R_PAREN
error 372: expected COMMA
error 372: expected enum variant
error 374: expected enum variant
error 508: expected expression

View file

@ -0,0 +1,49 @@
SOURCE_FILE@0..38
IMPL@0..14
IMPL_KW@0..4 "impl"
GENERIC_PARAM_LIST@4..14
L_ANGLE@4..5 "<"
TYPE_PARAM@5..13
NAME@5..6
IDENT@5..6 "T"
COLON@6..7 ":"
WHITESPACE@7..8 " "
TYPE_BOUND_LIST@8..13
TYPE_BOUND@8..13
PATH_TYPE@8..13
PATH@8..13
PATH_SEGMENT@8..13
NAME_REF@8..13
IDENT@8..13 "Clone"
R_ANGLE@13..14 ">"
WHITESPACE@14..15 "\n"
IMPL@15..37
IMPL_KW@15..19 "impl"
GENERIC_PARAM_LIST@19..22
L_ANGLE@19..20 "<"
TYPE_PARAM@20..21
NAME@20..21
IDENT@20..21 "T"
R_ANGLE@21..22 ">"
WHITESPACE@22..23 " "
PATH_TYPE@23..34
PATH@23..34
PATH_SEGMENT@23..34
NAME_REF@23..31
IDENT@23..31 "OnceCell"
GENERIC_ARG_LIST@31..34
L_ANGLE@31..32 "<"
TYPE_ARG@32..33
PATH_TYPE@32..33
PATH@32..33
PATH_SEGMENT@32..33
NAME_REF@32..33
IDENT@32..33 "T"
R_ANGLE@33..34 ">"
WHITESPACE@34..35 " "
ASSOC_ITEM_LIST@35..37
L_CURLY@35..36 "{"
R_CURLY@36..37 "}"
WHITESPACE@37..38 "\n"
error 14..14: expected trait or type
error 14..14: expected `{`

View file

@ -0,0 +1,2 @@
impl<T: Clone>
impl<T> OnceCell<T> {}

View file

@ -0,0 +1,49 @@
SOURCE_FILE
IMPL
IMPL_KW "impl"
GENERIC_PARAM_LIST
L_ANGLE "<"
TYPE_PARAM
NAME
IDENT "T"
COLON ":"
WHITESPACE " "
TYPE_BOUND_LIST
TYPE_BOUND
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "Clone"
R_ANGLE ">"
WHITESPACE "\n"
IMPL
IMPL_KW "impl"
GENERIC_PARAM_LIST
L_ANGLE "<"
TYPE_PARAM
NAME
IDENT "T"
R_ANGLE ">"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "OnceCell"
GENERIC_ARG_LIST
L_ANGLE "<"
TYPE_ARG
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "T"
R_ANGLE ">"
WHITESPACE " "
ASSOC_ITEM_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
error 14: expected trait or type
error 14: expected `{`

View file

@ -0,0 +1,29 @@
SOURCE_FILE@0..30
FN@0..29
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..13 "\n "
WHERE_CLAUSE@13..26
WHERE_KW@13..18 "where"
WHITESPACE@18..19 " "
WHERE_PRED@19..26
FOR_KW@19..22 "for"
GENERIC_PARAM_LIST@22..26
L_ANGLE@22..23 "<"
LIFETIME_PARAM@23..25
LIFETIME@23..25
LIFETIME_IDENT@23..25 "'a"
R_ANGLE@25..26 ">"
WHITESPACE@26..27 "\n"
BLOCK_EXPR@27..29
STMT_LIST@27..29
L_CURLY@27..28 "{"
R_CURLY@28..29 "}"
WHITESPACE@29..30 "\n"
error 26..26: expected type
error 26..26: expected colon

View file

@ -0,0 +1,3 @@
fn foo()
where for<'a>
{}

View file

@ -0,0 +1,29 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE "\n "
WHERE_CLAUSE
WHERE_KW "where"
WHITESPACE " "
WHERE_PRED
FOR_KW "for"
GENERIC_PARAM_LIST
L_ANGLE "<"
LIFETIME_PARAM
LIFETIME
LIFETIME_IDENT "'a"
R_ANGLE ">"
WHITESPACE "\n"
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
error 26: expected type
error 26: expected colon

View file

@ -0,0 +1,36 @@
SOURCE_FILE@0..24
FN@0..23
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..12
L_PAREN@6..7 "("
PARAM@7..11
IDENT_PAT@7..8
NAME@7..8
IDENT@7..8 "a"
COLON@8..9 ":"
WHITESPACE@9..10 " "
PATH_TYPE@10..11
PATH@10..11
PATH_SEGMENT@10..11
NAME_REF@10..11
IDENT@10..11 "A"
R_PAREN@11..12 ")"
WHITESPACE@12..13 " "
BLOCK_EXPR@13..23
STMT_LIST@13..23
L_CURLY@13..14 "{"
WHITESPACE@14..19 "\n "
FIELD_EXPR@19..21
PATH_EXPR@19..20
PATH@19..20
PATH_SEGMENT@19..20
NAME_REF@19..20
IDENT@19..20 "a"
DOT@20..21 "."
WHITESPACE@21..22 "\n"
R_CURLY@22..23 "}"
WHITESPACE@23..24 "\n"
error 21..21: expected field name or number

View file

@ -0,0 +1,3 @@
fn foo(a: A) {
a.
}

View file

@ -0,0 +1,36 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
PARAM
IDENT_PAT
NAME
IDENT "a"
COLON ":"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "A"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
FIELD_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "a"
DOT "."
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 21: expected field name or number

View file

@ -0,0 +1,205 @@
SOURCE_FILE@0..293
FN@0..292
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..292
STMT_LIST@9..292
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..101
MATCH_EXPR@15..101
MATCH_KW@15..20 "match"
WHITESPACE@20..21 " "
TUPLE_EXPR@21..23
L_PAREN@21..22 "("
R_PAREN@22..23 ")"
WHITESPACE@23..24 " "
MATCH_ARM_LIST@24..101
L_CURLY@24..25 "{"
WHITESPACE@25..34 "\n "
MATCH_ARM@34..42
WILDCARD_PAT@34..35
UNDERSCORE@34..35 "_"
WHITESPACE@35..36 " "
FAT_ARROW@36..38 "=>"
WHITESPACE@38..39 " "
TUPLE_EXPR@39..41
L_PAREN@39..40 "("
R_PAREN@40..41 ")"
COMMA@41..42 ","
WHITESPACE@42..51 "\n "
MATCH_ARM@51..78
ATTR@51..52
POUND@51..52 "#"
ERROR@52..53
BANG@52..53 "!"
ARRAY_EXPR@53..78
L_BRACK@53..54 "["
CALL_EXPR@54..77
PATH_EXPR@54..57
PATH@54..57
PATH_SEGMENT@54..57
NAME_REF@54..57
IDENT@54..57 "doc"
ARG_LIST@57..77
L_PAREN@57..58 "("
LITERAL@58..76
STRING@58..76 "\"Not allowed here\""
R_PAREN@76..77 ")"
R_BRACK@77..78 "]"
WHITESPACE@78..87 "\n "
MATCH_ARM@87..95
WILDCARD_PAT@87..88
UNDERSCORE@87..88 "_"
WHITESPACE@88..89 " "
FAT_ARROW@89..91 "=>"
WHITESPACE@91..92 " "
TUPLE_EXPR@92..94
L_PAREN@92..93 "("
R_PAREN@93..94 ")"
COMMA@94..95 ","
WHITESPACE@95..100 "\n "
R_CURLY@100..101 "}"
WHITESPACE@101..107 "\n\n "
EXPR_STMT@107..185
MATCH_EXPR@107..185
MATCH_KW@107..112 "match"
WHITESPACE@112..113 " "
TUPLE_EXPR@113..115
L_PAREN@113..114 "("
R_PAREN@114..115 ")"
WHITESPACE@115..116 " "
MATCH_ARM_LIST@116..185
L_CURLY@116..117 "{"
WHITESPACE@117..126 "\n "
MATCH_ARM@126..134
WILDCARD_PAT@126..127
UNDERSCORE@126..127 "_"
WHITESPACE@127..128 " "
FAT_ARROW@128..130 "=>"
WHITESPACE@130..131 " "
TUPLE_EXPR@131..133
L_PAREN@131..132 "("
R_PAREN@132..133 ")"
COMMA@133..134 ","
WHITESPACE@134..143 "\n "
MATCH_ARM@143..151
WILDCARD_PAT@143..144
UNDERSCORE@143..144 "_"
WHITESPACE@144..145 " "
FAT_ARROW@145..147 "=>"
WHITESPACE@147..148 " "
TUPLE_EXPR@148..150
L_PAREN@148..149 "("
R_PAREN@149..150 ")"
COMMA@150..151 ","
WHITESPACE@151..160 "\n "
MATCH_ARM@160..179
ATTR@160..161
POUND@160..161 "#"
ERROR@161..162
BANG@161..162 "!"
ARRAY_EXPR@162..179
L_BRACK@162..163 "["
CALL_EXPR@163..178
PATH_EXPR@163..166
PATH@163..166
PATH_SEGMENT@163..166
NAME_REF@163..166
IDENT@163..166 "doc"
ARG_LIST@166..178
L_PAREN@166..167 "("
LITERAL@167..177
STRING@167..177 "\"Nor here\""
R_PAREN@177..178 ")"
R_BRACK@178..179 "]"
WHITESPACE@179..184 "\n "
R_CURLY@184..185 "}"
WHITESPACE@185..191 "\n\n "
MATCH_EXPR@191..290
MATCH_KW@191..196 "match"
WHITESPACE@196..197 " "
TUPLE_EXPR@197..199
L_PAREN@197..198 "("
R_PAREN@198..199 ")"
WHITESPACE@199..200 " "
MATCH_ARM_LIST@200..290
L_CURLY@200..201 "{"
WHITESPACE@201..210 "\n "
MATCH_ARM@210..250
ATTR@210..222
POUND@210..211 "#"
L_BRACK@211..212 "["
META@212..221
PATH@212..215
PATH_SEGMENT@212..215
NAME_REF@212..215
IDENT@212..215 "cfg"
TOKEN_TREE@215..221
L_PAREN@215..216 "("
IDENT@216..220 "test"
R_PAREN@220..221 ")"
R_BRACK@221..222 "]"
WHITESPACE@222..231 "\n "
ATTR@231..232
POUND@231..232 "#"
ERROR@232..233
BANG@232..233 "!"
ARRAY_EXPR@233..250
L_BRACK@233..234 "["
CALL_EXPR@234..249
PATH_EXPR@234..237
PATH@234..237
PATH_SEGMENT@234..237
NAME_REF@234..237
IDENT@234..237 "doc"
ARG_LIST@237..249
L_PAREN@237..238 "("
LITERAL@238..248
STRING@238..248 "\"Nor here\""
R_PAREN@248..249 ")"
R_BRACK@249..250 "]"
WHITESPACE@250..259 "\n "
MATCH_ARM@259..267
WILDCARD_PAT@259..260
UNDERSCORE@259..260 "_"
WHITESPACE@260..261 " "
FAT_ARROW@261..263 "=>"
WHITESPACE@263..264 " "
TUPLE_EXPR@264..266
L_PAREN@264..265 "("
R_PAREN@265..266 ")"
COMMA@266..267 ","
WHITESPACE@267..276 "\n "
MATCH_ARM@276..284
WILDCARD_PAT@276..277
UNDERSCORE@276..277 "_"
WHITESPACE@277..278 " "
FAT_ARROW@278..280 "=>"
WHITESPACE@280..281 " "
TUPLE_EXPR@281..283
L_PAREN@281..282 "("
R_PAREN@282..283 ")"
COMMA@283..284 ","
WHITESPACE@284..289 "\n "
R_CURLY@289..290 "}"
WHITESPACE@290..291 "\n"
R_CURLY@291..292 "}"
WHITESPACE@292..293 "\n"
error 52..52: expected `[`
error 52..52: expected pattern
error 53..53: expected FAT_ARROW
error 78..78: expected `,`
error 161..161: expected `[`
error 161..161: expected pattern
error 162..162: expected FAT_ARROW
error 232..232: expected `[`
error 232..232: expected pattern
error 233..233: expected FAT_ARROW
error 250..250: expected `,`

View file

@ -0,0 +1,20 @@
fn foo() {
match () {
_ => (),
#![doc("Not allowed here")]
_ => (),
}
match () {
_ => (),
_ => (),
#![doc("Nor here")]
}
match () {
#[cfg(test)]
#![doc("Nor here")]
_ => (),
_ => (),
}
}

View file

@ -0,0 +1,205 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
EXPR_STMT
MATCH_EXPR
MATCH_KW "match"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
MATCH_ARM_LIST
L_CURLY "{"
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
ATTR
POUND "#"
ERROR
BANG "!"
ARRAY_EXPR
L_BRACK "["
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "doc"
ARG_LIST
L_PAREN "("
LITERAL
STRING "\"Not allowed here\""
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
EXPR_STMT
MATCH_EXPR
MATCH_KW "match"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
MATCH_ARM_LIST
L_CURLY "{"
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
ATTR
POUND "#"
ERROR
BANG "!"
ARRAY_EXPR
L_BRACK "["
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "doc"
ARG_LIST
L_PAREN "("
LITERAL
STRING "\"Nor here\""
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n\n "
MATCH_EXPR
MATCH_KW "match"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
MATCH_ARM_LIST
L_CURLY "{"
WHITESPACE "\n "
MATCH_ARM
ATTR
POUND "#"
L_BRACK "["
META
PATH
PATH_SEGMENT
NAME_REF
IDENT "cfg"
TOKEN_TREE
L_PAREN "("
IDENT "test"
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n "
ATTR
POUND "#"
ERROR
BANG "!"
ARRAY_EXPR
L_BRACK "["
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "doc"
ARG_LIST
L_PAREN "("
LITERAL
STRING "\"Nor here\""
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 52: expected `[`
error 52: expected pattern
error 53: expected FAT_ARROW
error 78: expected `,`
error 161: expected `[`
error 161: expected pattern
error 162: expected FAT_ARROW
error 232: expected `[`
error 232: expected pattern
error 233: expected FAT_ARROW
error 250: expected `,`

View file

@ -0,0 +1,68 @@
SOURCE_FILE@0..89
FN@0..88
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
PARAM_LIST@6..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..88
STMT_LIST@9..88
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
MATCH_EXPR@15..86
MATCH_KW@15..20 "match"
WHITESPACE@20..21 " "
TUPLE_EXPR@21..23
L_PAREN@21..22 "("
R_PAREN@22..23 ")"
WHITESPACE@23..24 " "
MATCH_ARM_LIST@24..86
L_CURLY@24..25 "{"
WHITESPACE@25..34 "\n "
MATCH_ARM@34..42
WILDCARD_PAT@34..35
UNDERSCORE@34..35 "_"
WHITESPACE@35..36 " "
FAT_ARROW@36..38 "=>"
WHITESPACE@38..39 " "
TUPLE_EXPR@39..41
L_PAREN@39..40 "("
R_PAREN@40..41 ")"
COMMA@41..42 ","
WHITESPACE@42..51 "\n "
MATCH_ARM@51..59
WILDCARD_PAT@51..52
UNDERSCORE@51..52 "_"
WHITESPACE@52..53 " "
FAT_ARROW@53..55 "=>"
WHITESPACE@55..56 " "
TUPLE_EXPR@56..58
L_PAREN@56..57 "("
R_PAREN@57..58 ")"
COMMA@58..59 ","
WHITESPACE@59..68 "\n "
MATCH_ARM@68..80
ATTR@68..80
POUND@68..69 "#"
L_BRACK@69..70 "["
META@70..79
PATH@70..73
PATH_SEGMENT@70..73
NAME_REF@70..73
IDENT@70..73 "cfg"
TOKEN_TREE@73..79
L_PAREN@73..74 "("
IDENT@74..78 "test"
R_PAREN@78..79 ")"
R_BRACK@79..80 "]"
WHITESPACE@80..85 "\n "
R_CURLY@85..86 "}"
WHITESPACE@86..87 "\n"
R_CURLY@87..88 "}"
WHITESPACE@88..89 "\n"
error 80..80: expected pattern
error 80..80: expected FAT_ARROW
error 80..80: expected expression

View file

@ -0,0 +1,7 @@
fn foo() {
match () {
_ => (),
_ => (),
#[cfg(test)]
}
}

View file

@ -0,0 +1,68 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
MATCH_EXPR
MATCH_KW "match"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
MATCH_ARM_LIST
L_CURLY "{"
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
COMMA ","
WHITESPACE "\n "
MATCH_ARM
ATTR
POUND "#"
L_BRACK "["
META
PATH
PATH_SEGMENT
NAME_REF
IDENT "cfg"
TOKEN_TREE
L_PAREN "("
IDENT "test"
R_PAREN ")"
R_BRACK "]"
WHITESPACE "\n "
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
error 80: expected pattern
error 80: expected FAT_ARROW
error 80: expected expression

View file

@ -0,0 +1,96 @@
SOURCE_FILE@0..91
FN@0..89
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..7
IDENT@3..7 "main"
PARAM_LIST@7..9
L_PAREN@7..8 "("
R_PAREN@8..9 ")"
WHITESPACE@9..10 " "
BLOCK_EXPR@10..89
STMT_LIST@10..89
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
LET_STMT@16..27
LET_KW@16..19 "let"
WHITESPACE@19..20 " "
IDENT_PAT@20..27
REF_KW@20..23 "ref"
WHITESPACE@23..24 " "
ERROR@24..27
BOX_KW@24..27 "box"
WHITESPACE@27..28 " "
EXPR_STMT@28..35
BIN_EXPR@28..34
PATH_EXPR@28..29
PATH@28..29
PATH_SEGMENT@28..29
NAME_REF@28..29
IDENT@28..29 "i"
WHITESPACE@29..30 " "
EQ@30..31 "="
WHITESPACE@31..32 " "
TUPLE_EXPR@32..34
L_PAREN@32..33 "("
R_PAREN@33..34 ")"
SEMICOLON@34..35 ";"
WHITESPACE@35..40 "\n "
LET_STMT@40..51
LET_KW@40..43 "let"
WHITESPACE@43..44 " "
IDENT_PAT@44..51
MUT_KW@44..47 "mut"
WHITESPACE@47..48 " "
ERROR@48..51
BOX_KW@48..51 "box"
WHITESPACE@51..52 " "
EXPR_STMT@52..59
BIN_EXPR@52..58
PATH_EXPR@52..53
PATH@52..53
PATH_SEGMENT@52..53
NAME_REF@52..53
IDENT@52..53 "i"
WHITESPACE@53..54 " "
EQ@54..55 "="
WHITESPACE@55..56 " "
TUPLE_EXPR@56..58
L_PAREN@56..57 "("
R_PAREN@57..58 ")"
SEMICOLON@58..59 ";"
WHITESPACE@59..64 "\n "
LET_STMT@64..79
LET_KW@64..67 "let"
WHITESPACE@67..68 " "
IDENT_PAT@68..79
REF_KW@68..71 "ref"
WHITESPACE@71..72 " "
MUT_KW@72..75 "mut"
WHITESPACE@75..76 " "
ERROR@76..79
BOX_KW@76..79 "box"
WHITESPACE@79..80 " "
EXPR_STMT@80..87
BIN_EXPR@80..86
PATH_EXPR@80..81
PATH@80..81
PATH_SEGMENT@80..81
NAME_REF@80..81
IDENT@80..81 "i"
WHITESPACE@81..82 " "
EQ@82..83 "="
WHITESPACE@83..84 " "
TUPLE_EXPR@84..86
L_PAREN@84..85 "("
R_PAREN@85..86 ")"
SEMICOLON@86..87 ";"
WHITESPACE@87..88 "\n"
R_CURLY@88..89 "}"
WHITESPACE@89..91 "\n\n"
error 24..24: expected a name
error 27..27: expected SEMICOLON
error 48..48: expected a name
error 51..51: expected SEMICOLON
error 76..76: expected a name
error 79..79: expected SEMICOLON

View file

@ -0,0 +1,6 @@
fn main() {
let ref box i = ();
let mut box i = ();
let ref mut box i = ();
}

View file

@ -0,0 +1,96 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "main"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
REF_KW "ref"
WHITESPACE " "
ERROR
BOX_KW "box"
WHITESPACE " "
EXPR_STMT
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "i"
WHITESPACE " "
EQ "="
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
MUT_KW "mut"
WHITESPACE " "
ERROR
BOX_KW "box"
WHITESPACE " "
EXPR_STMT
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "i"
WHITESPACE " "
EQ "="
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
WHITESPACE " "
IDENT_PAT
REF_KW "ref"
WHITESPACE " "
MUT_KW "mut"
WHITESPACE " "
ERROR
BOX_KW "box"
WHITESPACE " "
EXPR_STMT
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "i"
WHITESPACE " "
EQ "="
WHITESPACE " "
TUPLE_EXPR
L_PAREN "("
R_PAREN ")"
SEMICOLON ";"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n\n"
error 24: expected a name
error 27: expected SEMICOLON
error 48: expected a name
error 51: expected SEMICOLON
error 76: expected a name
error 79: expected SEMICOLON

View file

@ -0,0 +1,55 @@
SOURCE_FILE@0..48
USE@0..13
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..12
PATH@4..12
PATH@4..7
PATH_SEGMENT@4..7
NAME_REF@4..7
IDENT@4..7 "foo"
COLON2@7..9 "::"
PATH_SEGMENT@9..12
NAME_REF@9..12
IDENT@9..12 "bar"
SEMICOLON@12..13 ";"
WHITESPACE@13..14 "\n"
USE@14..17
USE_KW@14..17 "use"
WHITESPACE@17..18 "\n"
USE@18..33
USE_KW@18..21 "use"
WHITESPACE@21..22 " "
USE_TREE@22..32
PATH@22..32
PATH@22..27
PATH_SEGMENT@22..27
NAME_REF@22..27
CRATE_KW@22..27 "crate"
COLON2@27..29 "::"
PATH_SEGMENT@29..32
NAME_REF@29..32
IDENT@29..32 "baz"
SEMICOLON@32..33 ";"
WHITESPACE@33..34 "\n"
USE@34..37
USE_KW@34..37 "use"
WHITESPACE@37..38 "\n"
FN@38..47
FN_KW@38..40 "fn"
WHITESPACE@40..41 " "
NAME@41..42
IDENT@41..42 "f"
PARAM_LIST@42..44
L_PAREN@42..43 "("
R_PAREN@43..44 ")"
WHITESPACE@44..45 " "
BLOCK_EXPR@45..47
STMT_LIST@45..47
L_CURLY@45..46 "{"
R_CURLY@46..47 "}"
WHITESPACE@47..48 "\n"
error 17..17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 17..17: expected SEMICOLON
error 37..37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 37..37: expected SEMICOLON

View file

@ -0,0 +1,5 @@
use foo::bar;
use
use crate::baz;
use
fn f() {}

View file

@ -0,0 +1,55 @@
SOURCE_FILE
USE
USE_KW "use"
WHITESPACE " "
USE_TREE
PATH
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
COLON2 "::"
PATH_SEGMENT
NAME_REF
IDENT "bar"
SEMICOLON ";"
WHITESPACE "\n"
USE
USE_KW "use"
WHITESPACE "\n"
USE
USE_KW "use"
WHITESPACE " "
USE_TREE
PATH
PATH
PATH_SEGMENT
NAME_REF
CRATE_KW "crate"
COLON2 "::"
PATH_SEGMENT
NAME_REF
IDENT "baz"
SEMICOLON ";"
WHITESPACE "\n"
USE
USE_KW "use"
WHITESPACE "\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "f"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
error 17: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 17: expected SEMICOLON
error 37: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 37: expected SEMICOLON

View file

@ -0,0 +1,51 @@
SOURCE_FILE@0..37
USE@0..36
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..36
PATH@4..7
PATH_SEGMENT@4..7
NAME_REF@4..7
IDENT@4..7 "std"
COLON2@7..9 "::"
USE_TREE_LIST@9..36
L_CURLY@9..10 "{"
USE_TREE@10..22
PATH@10..22
PATH@10..15
PATH_SEGMENT@10..15
NAME_REF@10..15
IDENT@10..15 "error"
COLON2@15..17 "::"
PATH_SEGMENT@17..22
NAME_REF@17..22
IDENT@17..22 "Error"
ERROR@22..23
SEMICOLON@22..23 ";"
WHITESPACE@23..24 "\n"
ERROR@24..27
USE_KW@24..27 "use"
WHITESPACE@27..28 " "
USE_TREE@28..35
PATH@28..35
PATH@28..31
PATH_SEGMENT@28..31
NAME_REF@28..31
IDENT@28..31 "std"
COLON2@31..33 "::"
PATH_SEGMENT@33..35
NAME_REF@33..35
IDENT@33..35 "io"
ERROR@35..36
SEMICOLON@35..36 ";"
WHITESPACE@36..37 "\n"
error 22..22: expected COMMA
error 22..22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 23..23: expected COMMA
error 24..24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 27..27: expected COMMA
error 35..35: expected COMMA
error 35..35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 36..36: expected COMMA
error 36..36: expected R_CURLY
error 36..36: expected SEMICOLON

View file

@ -0,0 +1,2 @@
use std::{error::Error;
use std::io;

View file

@ -0,0 +1,51 @@
SOURCE_FILE
USE
USE_KW "use"
WHITESPACE " "
USE_TREE
PATH
PATH_SEGMENT
NAME_REF
IDENT "std"
COLON2 "::"
USE_TREE_LIST
L_CURLY "{"
USE_TREE
PATH
PATH
PATH_SEGMENT
NAME_REF
IDENT "error"
COLON2 "::"
PATH_SEGMENT
NAME_REF
IDENT "Error"
ERROR
SEMICOLON ";"
WHITESPACE "\n"
ERROR
USE_KW "use"
WHITESPACE " "
USE_TREE
PATH
PATH
PATH_SEGMENT
NAME_REF
IDENT "std"
COLON2 "::"
PATH_SEGMENT
NAME_REF
IDENT "io"
ERROR
SEMICOLON ";"
WHITESPACE "\n"
error 22: expected COMMA
error 22: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 23: expected COMMA
error 24: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 27: expected COMMA
error 35: expected COMMA
error 35: expected one of `*`, `::`, `{`, `self`, `super` or an identifier
error 36: expected COMMA
error 36: expected R_CURLY
error 36: expected SEMICOLON

Some files were not shown because too many files have changed in this diff Show more