Rename ra_syntax -> syntax

This commit is contained in:
Aleksey Kladov 2020-08-12 18:26:51 +02:00
parent 3d6889cba7
commit a1c187eef3
958 changed files with 353 additions and 363 deletions

View file

@ -0,0 +1,27 @@
SOURCE_FILE@0..18
TYPE_ALIAS@0..12
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "T"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
SLICE_TYPE@9..12
L_BRACK@9..10 "["
TUPLE_TYPE@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
WHITESPACE@12..13 " "
ERROR@13..15
INT_NUMBER@13..15 "92"
ERROR@15..16
R_BRACK@15..16 "]"
ERROR@16..17
SEMICOLON@16..17 ";"
WHITESPACE@17..18 "\n"
error 12..12: expected `;` or `]`
error 12..12: expected SEMICOLON
error 13..13: expected an item
error 15..15: expected an item
error 16..16: expected an item

View file

@ -0,0 +1 @@
type T = [() 92];

View file

@ -0,0 +1,28 @@
SOURCE_FILE@0..30
FN@0..29
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..29
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
EXPR_STMT@16..22
ERROR@16..22
LABEL@16..22
LIFETIME@16..21 "\'loop"
COLON@21..22 ":"
WHITESPACE@22..23 " "
IMPL@23..27
IMPL_KW@23..27 "impl"
WHITESPACE@27..28 "\n"
R_CURLY@28..29 "}"
WHITESPACE@29..30 "\n"
error 22..22: expected a loop
error 22..22: expected SEMICOLON
error 27..27: expected type
error 27..27: expected `{`

View file

@ -0,0 +1,3 @@
fn main() {
'loop: impl
}

View file

@ -0,0 +1,17 @@
SOURCE_FILE@0..14
TYPE_ALIAS@0..13
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "T"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
PTR_TYPE@9..12
STAR@9..10 "*"
TUPLE_TYPE@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
SEMICOLON@12..13 ";"
WHITESPACE@13..14 "\n"
error 10..10: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)

View file

@ -0,0 +1 @@
type T = *();

View file

@ -0,0 +1,79 @@
SOURCE_FILE@0..87
IMPL@0..12
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..9
PATH@5..9
PATH_SEGMENT@5..9
NAME_REF@5..9
IDENT@5..9 "Type"
WHITESPACE@9..10 " "
ASSOC_ITEM_LIST@10..12
L_CURLY@10..11 "{"
R_CURLY@11..12 "}"
WHITESPACE@12..13 "\n"
IMPL@13..33
IMPL_KW@13..17 "impl"
WHITESPACE@17..18 " "
PATH_TYPE@18..24
PATH@18..24
PATH_SEGMENT@18..24
NAME_REF@18..24
IDENT@18..24 "Trait1"
WHITESPACE@24..25 " "
FOR_KW@25..28 "for"
WHITESPACE@28..29 " "
PATH_TYPE@29..30
PATH@29..30
PATH_SEGMENT@29..30
NAME_REF@29..30
IDENT@29..30 "T"
WHITESPACE@30..31 " "
ASSOC_ITEM_LIST@31..33
L_CURLY@31..32 "{"
R_CURLY@32..33 "}"
WHITESPACE@33..34 "\n"
IMPL@34..38
IMPL_KW@34..38 "impl"
WHITESPACE@38..39 " "
IMPL@39..54
IMPL_KW@39..43 "impl"
WHITESPACE@43..44 " "
PATH_TYPE@44..51
PATH@44..51
PATH_SEGMENT@44..51
NAME_REF@44..51
IDENT@44..51 "NotType"
WHITESPACE@51..52 " "
ASSOC_ITEM_LIST@52..54
L_CURLY@52..53 "{"
R_CURLY@53..54 "}"
WHITESPACE@54..55 "\n"
IMPL@55..70
IMPL_KW@55..59 "impl"
WHITESPACE@59..60 " "
PATH_TYPE@60..66
PATH@60..66
PATH_SEGMENT@60..66
NAME_REF@60..66
IDENT@60..66 "Trait2"
WHITESPACE@66..67 " "
FOR_KW@67..70 "for"
WHITESPACE@70..71 " "
IMPL@71..86
IMPL_KW@71..75 "impl"
WHITESPACE@75..76 " "
PATH_TYPE@76..83
PATH@76..83
PATH_SEGMENT@76..83
NAME_REF@76..83
IDENT@76..83 "NotType"
WHITESPACE@83..84 " "
ASSOC_ITEM_LIST@84..86
L_CURLY@84..85 "{"
R_CURLY@85..86 "}"
WHITESPACE@86..87 "\n"
error 38..38: expected trait or type
error 38..38: expected `{`
error 70..70: expected trait or type
error 70..70: expected `{`

View file

@ -0,0 +1,4 @@
impl Type {}
impl Trait1 for T {}
impl impl NotType {}
impl Trait2 for impl NotType {}

View file

@ -0,0 +1,23 @@
SOURCE_FILE@0..20
TYPE_ALIAS@0..15
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "F"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
UNSAFE_KW@9..15 "unsafe"
WHITESPACE@15..16 " "
ERROR@16..17
L_PAREN@16..17 "("
ERROR@17..18
R_PAREN@17..18 ")"
ERROR@18..19
SEMICOLON@18..19 ";"
WHITESPACE@19..20 "\n"
error 15..15: expected `fn`
error 15..15: expected SEMICOLON
error 16..16: expected an item
error 17..17: expected an item
error 18..18: expected an item

View file

@ -0,0 +1 @@
type F = unsafe ();

View file

@ -0,0 +1,35 @@
SOURCE_FILE@0..33
FN@0..10
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 ")"
BLOCK_EXPR@8..10
L_CURLY@8..9 "{"
R_CURLY@9..10 "}"
WHITESPACE@10..11 " "
ERROR@11..17
UNSAFE_KW@11..17 "unsafe"
WHITESPACE@17..18 " "
ERROR@18..21
L_CURLY@18..19 "{"
WHITESPACE@19..20 " "
R_CURLY@20..21 "}"
WHITESPACE@21..22 " "
FN@22..32
FN_KW@22..24 "fn"
WHITESPACE@24..25 " "
NAME@25..28
IDENT@25..28 "bar"
PARAM_LIST@28..30
L_PAREN@28..29 "("
R_PAREN@29..30 ")"
BLOCK_EXPR@30..32
L_CURLY@30..31 "{"
R_CURLY@31..32 "}"
WHITESPACE@32..33 "\n"
error 11..11: expected an item
error 18..18: expected an item

View file

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

View file

@ -0,0 +1,31 @@
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..9 " "
BLOCK_EXPR@9..29
L_CURLY@9..10 "{"
WHITESPACE@10..11 " "
LET_STMT@11..27
LET_KW@11..14 "let"
WHITESPACE@14..15 " "
WILDCARD_PAT@15..16
UNDERSCORE@15..16 "_"
WHITESPACE@16..17 " "
EQ@17..18 "="
WHITESPACE@18..19 " "
EFFECT_EXPR@19..27
ASYNC_KW@19..24 "async"
WHITESPACE@24..25 " "
BLOCK_EXPR@25..27
L_CURLY@25..26 "{"
R_CURLY@26..27 "}"
WHITESPACE@27..28 " "
R_CURLY@28..29 "}"
WHITESPACE@29..30 "\n"
error 27..27: expected SEMICOLON

View file

@ -0,0 +1 @@
fn foo() { let _ = async {} }

View file

@ -0,0 +1,25 @@
SOURCE_FILE@0..21
FN@0..20
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..20
L_CURLY@9..10 "{"
WHITESPACE@10..11 " "
ERROR@11..14
VISIBILITY@11..14
PUB_KW@11..14 "pub"
WHITESPACE@14..15 " "
EXPR_STMT@15..18
LITERAL@15..17
INT_NUMBER@15..17 "92"
SEMICOLON@17..18 ";"
WHITESPACE@18..19 " "
R_CURLY@19..20 "}"
WHITESPACE@20..21 "\n"
error 14..14: expected an item

View file

@ -0,0 +1 @@
fn foo() { pub 92; }

View file

@ -0,0 +1,58 @@
SOURCE_FILE@0..48
FN@0..47
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..47
L_CURLY@9..10 "{"
WHITESPACE@10..14 "\n "
EXPR_STMT@14..25
ATTR@14..18
POUND@14..15 "#"
L_BRACK@15..16 "["
PATH@16..17
PATH_SEGMENT@16..17
NAME_REF@16..17
IDENT@16..17 "A"
R_BRACK@17..18 "]"
WHITESPACE@18..19 " "
BIN_EXPR@19..24
LITERAL@19..20
INT_NUMBER@19..20 "1"
WHITESPACE@20..21 " "
PLUS@21..22 "+"
WHITESPACE@22..23 " "
LITERAL@23..24
INT_NUMBER@23..24 "2"
SEMICOLON@24..25 ";"
WHITESPACE@25..29 "\n "
EXPR_STMT@29..45
ATTR@29..33
POUND@29..30 "#"
L_BRACK@30..31 "["
PATH@31..32
PATH_SEGMENT@31..32
NAME_REF@31..32
IDENT@31..32 "B"
R_BRACK@32..33 "]"
WHITESPACE@33..34 " "
IF_EXPR@34..44
IF_KW@34..36 "if"
WHITESPACE@36..37 " "
CONDITION@37..41
LITERAL@37..41
TRUE_KW@37..41 "true"
WHITESPACE@41..42 " "
BLOCK_EXPR@42..44
L_CURLY@42..43 "{"
R_CURLY@43..44 "}"
SEMICOLON@44..45 ";"
WHITESPACE@45..46 "\n"
R_CURLY@46..47 "}"
WHITESPACE@47..48 "\n"
error 24..24: attributes are not allowed on BIN_EXPR

View file

@ -0,0 +1,4 @@
fn foo() {
#[A] 1 + 2;
#[B] if true {};
}

View file

@ -0,0 +1,52 @@
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..8
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..46
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..20
FIELD_EXPR@15..19
PATH_EXPR@15..16
PATH@15..16
PATH_SEGMENT@15..16
NAME_REF@15..16
IDENT@15..16 "x"
DOT@16..17 "."
FLOAT_NUMBER@17..19 "0."
SEMICOLON@19..20 ";"
WHITESPACE@20..25 "\n "
EXPR_STMT@25..32
FIELD_EXPR@25..31
PATH_EXPR@25..26
PATH@25..26
PATH_SEGMENT@25..26
NAME_REF@25..26
IDENT@25..26 "x"
DOT@26..27 "."
NAME_REF@27..31
INT_NUMBER@27..31 "1i32"
SEMICOLON@31..32 ";"
WHITESPACE@32..37 "\n "
EXPR_STMT@37..44
FIELD_EXPR@37..43
PATH_EXPR@37..38
PATH@37..38
PATH_SEGMENT@37..38
NAME_REF@37..38
IDENT@37..38 "x"
DOT@38..39 "."
NAME_REF@39..43
INT_NUMBER@39..43 "0x01"
SEMICOLON@43..44 ";"
WHITESPACE@44..45 "\n"
R_CURLY@45..46 "}"
WHITESPACE@46..47 "\n"
error 27..31: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
error 39..43: Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix

View file

@ -0,0 +1,5 @@
fn foo() {
x.0.;
x.1i32;
x.0x01;
}

View file

@ -0,0 +1,21 @@
SOURCE_FILE@0..19
STATIC@0..18
STATIC_KW@0..6 "static"
WHITESPACE@6..7 " "
ERROR@7..8
UNDERSCORE@7..8 "_"
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"
WHITESPACE@13..14 " "
EQ@14..15 "="
WHITESPACE@15..16 " "
LITERAL@16..17
INT_NUMBER@16..17 "5"
SEMICOLON@17..18 ";"
WHITESPACE@18..19 "\n"
error 7..7: expected a name

View file

@ -0,0 +1 @@
static _: i32 = 5;

View file

@ -0,0 +1,48 @@
SOURCE_FILE@0..45
FN@0..44
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..44
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
RECORD_EXPR@16..42
PATH@16..17
PATH_SEGMENT@16..17
NAME_REF@16..17
IDENT@16..17 "S"
WHITESPACE@17..18 " "
RECORD_EXPR_FIELD_LIST@18..42
L_CURLY@18..19 "{"
WHITESPACE@19..20 " "
RECORD_EXPR_FIELD@20..40
NAME_REF@20..25
IDENT@20..25 "field"
WHITESPACE@25..26 " "
RANGE_EXPR@26..40
DOT2@26..28 ".."
CALL_EXPR@28..40
PATH_EXPR@28..38
PATH@28..38
PATH@28..29
PATH_SEGMENT@28..29
NAME_REF@28..29
IDENT@28..29 "S"
COLON2@29..31 "::"
PATH_SEGMENT@31..38
NAME_REF@31..38
IDENT@31..38 "default"
ARG_LIST@38..40
L_PAREN@38..39 "("
R_PAREN@39..40 ")"
WHITESPACE@40..41 " "
R_CURLY@41..42 "}"
WHITESPACE@42..43 "\n"
R_CURLY@43..44 "}"
WHITESPACE@44..45 "\n"
error 25..25: expected COLON

View file

@ -0,0 +1,3 @@
fn main() {
S { field ..S::default() }
}

View file

@ -0,0 +1,15 @@
SOURCE_FILE@0..13
USE@0..12
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..12
PATH@4..12
PATH@4..9
PATH_SEGMENT@4..9
CRATE_KW@4..9 "crate"
COLON2@9..11 "::"
ERROR@11..12
SEMICOLON@11..12 ";"
WHITESPACE@12..13 "\n"
error 11..11: expected identifier
error 12..12: expected SEMICOLON

View file

@ -0,0 +1 @@
use crate::;

View file

@ -0,0 +1,71 @@
SOURCE_FILE@0..83
IMPL@0..82
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..6
PATH@5..6
PATH_SEGMENT@5..6
NAME_REF@5..6
IDENT@5..6 "F"
WHITESPACE@6..7 " "
ASSOC_ITEM_LIST@7..82
L_CURLY@7..8 "{"
WHITESPACE@8..13 "\n "
TYPE_ALIAS@13..27
TYPE_KW@13..17 "type"
WHITESPACE@17..18 " "
NAME@18..19
IDENT@18..19 "A"
COLON@19..20 ":"
WHITESPACE@20..21 " "
TYPE_BOUND_LIST@21..26
TYPE_BOUND@21..26
PATH_TYPE@21..26
PATH@21..26
PATH_SEGMENT@21..26
NAME_REF@21..26
IDENT@21..26 "Clone"
SEMICOLON@26..27 ";"
WHITESPACE@27..32 "\n "
CONST@32..45
CONST_KW@32..37 "const"
WHITESPACE@37..38 " "
NAME@38..39
IDENT@38..39 "B"
COLON@39..40 ":"
WHITESPACE@40..41 " "
PATH_TYPE@41..44
PATH@41..44
PATH_SEGMENT@41..44
NAME_REF@41..44
IDENT@41..44 "i32"
SEMICOLON@44..45 ";"
WHITESPACE@45..50 "\n "
FN@50..61
FN_KW@50..52 "fn"
WHITESPACE@52..53 " "
NAME@53..56
IDENT@53..56 "foo"
PARAM_LIST@56..58
L_PAREN@56..57 "("
R_PAREN@57..58 ")"
WHITESPACE@58..59 " "
BLOCK_EXPR@59..61
L_CURLY@59..60 "{"
R_CURLY@60..61 "}"
WHITESPACE@61..66 "\n "
FN@66..80
FN_KW@66..68 "fn"
WHITESPACE@68..69 " "
NAME@69..72
IDENT@69..72 "bar"
PARAM_LIST@72..79
L_PAREN@72..73 "("
SELF_PARAM@73..78
AMP@73..74 "&"
SELF_KW@74..78 "self"
R_PAREN@78..79 ")"
SEMICOLON@79..80 ";"
WHITESPACE@80..81 "\n"
R_CURLY@81..82 "}"
WHITESPACE@82..83 "\n"

View file

@ -0,0 +1,6 @@
impl F {
type A: Clone;
const B: i32;
fn foo() {}
fn bar(&self);
}

View file

@ -0,0 +1,136 @@
SOURCE_FILE@0..249
USE@0..58
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..57
USE_TREE_LIST@4..57
L_CURLY@4..5 "{"
USE_TREE@5..28
PATH@5..28
PATH@5..22
PATH@5..16
PATH@5..10
PATH_SEGMENT@5..10
CRATE_KW@5..10 "crate"
COLON2@10..12 "::"
PATH_SEGMENT@12..16
NAME_REF@12..16
IDENT@12..16 "path"
COLON2@16..18 "::"
PATH_SEGMENT@18..22
NAME_REF@18..22
IDENT@18..22 "from"
COLON2@22..24 "::"
PATH_SEGMENT@24..28
NAME_REF@24..28
IDENT@24..28 "root"
COMMA@28..29 ","
WHITESPACE@29..30 " "
USE_TREE@30..56
PATH@30..56
PATH@30..44
PATH@30..38
PATH@30..32
PATH_SEGMENT@30..32
NAME_REF@30..32
IDENT@30..32 "or"
COLON2@32..34 "::"
PATH_SEGMENT@34..38
NAME_REF@34..38
IDENT@34..38 "path"
COLON2@38..40 "::"
PATH_SEGMENT@40..44
NAME_REF@40..44
IDENT@40..44 "from"
COLON2@44..46 "::"
PATH_SEGMENT@46..56
NAME_REF@46..56
IDENT@46..56 "crate_name"
R_CURLY@56..57 "}"
SEMICOLON@57..58 ";"
WHITESPACE@58..59 " "
COMMENT@59..97 "// Rust 2018 (with a ..."
WHITESPACE@97..98 "\n"
USE@98..121
USE_KW@98..101 "use"
WHITESPACE@101..102 " "
USE_TREE@102..120
USE_TREE_LIST@102..120
L_CURLY@102..103 "{"
USE_TREE@103..119
PATH@103..119
PATH@103..113
PATH@103..107
PATH_SEGMENT@103..107
NAME_REF@103..107
IDENT@103..107 "path"
COLON2@107..109 "::"
PATH_SEGMENT@109..113
NAME_REF@109..113
IDENT@109..113 "from"
COLON2@113..115 "::"
PATH_SEGMENT@115..119
NAME_REF@115..119
IDENT@115..119 "root"
R_CURLY@119..120 "}"
SEMICOLON@120..121 ";"
WHITESPACE@121..122 " "
COMMENT@122..134 "// Rust 2015"
WHITESPACE@134..135 "\n"
USE@135..166
USE_KW@135..138 "use"
WHITESPACE@138..139 " "
USE_TREE@139..165
COLON2@139..141 "::"
USE_TREE_LIST@141..165
L_CURLY@141..142 "{"
USE_TREE@142..164
PATH@142..164
PATH@142..158
PATH@142..146
PATH_SEGMENT@142..146
NAME_REF@142..146
IDENT@142..146 "some"
COLON2@146..148 "::"
PATH_SEGMENT@148..158
NAME_REF@148..158
IDENT@148..158 "arbritrary"
COLON2@158..160 "::"
PATH_SEGMENT@160..164
NAME_REF@160..164
IDENT@160..164 "path"
R_CURLY@164..165 "}"
SEMICOLON@165..166 ";"
WHITESPACE@166..167 " "
COMMENT@167..179 "// Rust 2015"
WHITESPACE@179..180 "\n"
USE@180..205
USE_KW@180..183 "use"
WHITESPACE@183..184 " "
USE_TREE@184..204
COLON2@184..186 "::"
USE_TREE_LIST@186..204
L_CURLY@186..187 "{"
USE_TREE@187..203
USE_TREE_LIST@187..203
L_CURLY@187..188 "{"
USE_TREE@188..202
USE_TREE_LIST@188..202
L_CURLY@188..189 "{"
USE_TREE@189..201
PATH@189..201
PATH@189..193
PATH_SEGMENT@189..193
NAME_REF@189..193
IDENT@189..193 "root"
COLON2@193..195 "::"
PATH_SEGMENT@195..201
NAME_REF@195..201
IDENT@195..201 "export"
R_CURLY@201..202 "}"
R_CURLY@202..203 "}"
R_CURLY@203..204 "}"
SEMICOLON@204..205 ";"
WHITESPACE@205..206 " "
COMMENT@206..248 "// Nonsensical but pe ..."
WHITESPACE@248..249 "\n"

View file

@ -0,0 +1,4 @@
use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`)
use {path::from::root}; // Rust 2015
use ::{some::arbritrary::path}; // Rust 2015
use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting

View file

@ -0,0 +1,60 @@
SOURCE_FILE@0..54
FN@0..53
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..12
IDENT@3..12 "for_trait"
GENERIC_PARAM_LIST@12..15
L_ANGLE@12..13 "<"
TYPE_PARAM@13..14
NAME@13..14
IDENT@13..14 "F"
R_ANGLE@14..15 ">"
PARAM_LIST@15..17
L_PAREN@15..16 "("
R_PAREN@16..17 ")"
WHITESPACE@17..18 "\n"
WHERE_CLAUSE@18..49
WHERE_KW@18..23 "where"
WHITESPACE@23..27 "\n "
WHERE_PRED@27..49
FOR_KW@27..30 "for"
GENERIC_PARAM_LIST@30..34
L_ANGLE@30..31 "<"
LIFETIME_PARAM@31..33
LIFETIME@31..33 "\'a"
R_ANGLE@33..34 ">"
WHITESPACE@34..35 " "
PATH_TYPE@35..36
PATH@35..36
PATH_SEGMENT@35..36
NAME_REF@35..36
IDENT@35..36 "F"
COLON@36..37 ":"
WHITESPACE@37..38 " "
TYPE_BOUND_LIST@38..49
TYPE_BOUND@38..49
PATH_TYPE@38..49
PATH@38..49
PATH_SEGMENT@38..49
NAME_REF@38..40
IDENT@38..40 "Fn"
PARAM_LIST@40..49
L_PAREN@40..41 "("
PARAM@41..48
REF_TYPE@41..48
AMP@41..42 "&"
LIFETIME@42..44 "\'a"
WHITESPACE@44..45 " "
PATH_TYPE@45..48
PATH@45..48
PATH_SEGMENT@45..48
NAME_REF@45..48
IDENT@45..48 "str"
R_PAREN@48..49 ")"
WHITESPACE@49..50 "\n"
BLOCK_EXPR@50..53
L_CURLY@50..51 "{"
WHITESPACE@51..52 " "
R_CURLY@52..53 "}"
WHITESPACE@53..54 "\n"

View file

@ -0,0 +1,4 @@
fn for_trait<F>()
where
for<'a> F: Fn(&'a str)
{ }

View file

@ -0,0 +1,60 @@
SOURCE_FILE@0..39
TYPE_ALIAS@0..38
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "F"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
PATH_TYPE@9..37
PATH@9..37
PATH_SEGMENT@9..37
NAME_REF@9..12
IDENT@9..12 "Box"
GENERIC_ARG_LIST@12..37
L_ANGLE@12..13 "<"
TYPE_ARG@13..36
PATH_TYPE@13..36
PATH@13..36
PATH_SEGMENT@13..36
NAME_REF@13..15
IDENT@13..15 "Fn"
PARAM_LIST@15..36
L_PAREN@15..16 "("
PARAM@16..19
PATH_TYPE@16..19
PATH@16..19
PATH_SEGMENT@16..19
NAME_REF@16..19
IDENT@16..19 "i32"
COMMA@19..20 ","
WHITESPACE@20..21 " "
PARAM@21..25
REF_TYPE@21..25
AMP@21..22 "&"
PATH_TYPE@22..25
PATH@22..25
PATH_SEGMENT@22..25
NAME_REF@22..25
IDENT@22..25 "i32"
COMMA@25..26 ","
WHITESPACE@26..27 " "
PARAM@27..31
REF_TYPE@27..31
AMP@27..28 "&"
PATH_TYPE@28..31
PATH@28..31
PATH_SEGMENT@28..31
NAME_REF@28..31
IDENT@28..31 "i32"
COMMA@31..32 ","
WHITESPACE@32..33 " "
PARAM@33..35
TUPLE_TYPE@33..35
L_PAREN@33..34 "("
R_PAREN@34..35 ")"
R_PAREN@35..36 ")"
R_ANGLE@36..37 ">"
SEMICOLON@37..38 ";"
WHITESPACE@38..39 "\n"

View file

@ -0,0 +1 @@
type F = Box<Fn(i32, &i32, &i32, ())>;

View file

@ -0,0 +1,37 @@
SOURCE_FILE@0..28
FN@0..27
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
IDENT@3..6 "foo"
GENERIC_PARAM_LIST@6..23
L_ANGLE@6..7 "<"
TYPE_PARAM@7..22
NAME@7..8
IDENT@7..8 "T"
COLON@8..9 ":"
WHITESPACE@9..10 " "
TYPE_BOUND_LIST@10..22
TYPE_BOUND@10..15
PATH_TYPE@10..15
PATH@10..15
PATH_SEGMENT@10..15
NAME_REF@10..15
IDENT@10..15 "Clone"
WHITESPACE@15..16 " "
PLUS@16..17 "+"
WHITESPACE@17..18 " "
TYPE_BOUND@18..22
PATH_TYPE@18..22
PATH@18..22
PATH_SEGMENT@18..22
NAME_REF@18..22
IDENT@18..22 "Copy"
R_ANGLE@22..23 ">"
PARAM_LIST@23..25
L_PAREN@23..24 "("
R_PAREN@24..25 ")"
BLOCK_EXPR@25..27
L_CURLY@25..26 "{"
R_CURLY@26..27 "}"
WHITESPACE@27..28 "\n"

View file

@ -0,0 +1 @@
fn foo<T: Clone + Copy>(){}

View file

@ -0,0 +1,116 @@
SOURCE_FILE@0..128
IMPL@0..127
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..6
PATH@5..6
PATH_SEGMENT@5..6
NAME_REF@5..6
IDENT@5..6 "S"
WHITESPACE@6..7 " "
ASSOC_ITEM_LIST@7..127
L_CURLY@7..8 "{"
WHITESPACE@8..13 "\n "
FN@13..26
FN_KW@13..15 "fn"
WHITESPACE@15..16 " "
NAME@16..17
IDENT@16..17 "a"
PARAM_LIST@17..23
L_PAREN@17..18 "("
SELF_PARAM@18..22
SELF_KW@18..22 "self"
R_PAREN@22..23 ")"
WHITESPACE@23..24 " "
BLOCK_EXPR@24..26
L_CURLY@24..25 "{"
R_CURLY@25..26 "}"
WHITESPACE@26..31 "\n "
FN@31..46
FN_KW@31..33 "fn"
WHITESPACE@33..34 " "
NAME@34..35
IDENT@34..35 "b"
PARAM_LIST@35..43
L_PAREN@35..36 "("
SELF_PARAM@36..41
AMP@36..37 "&"
SELF_KW@37..41 "self"
COMMA@41..42 ","
R_PAREN@42..43 ")"
WHITESPACE@43..44 " "
BLOCK_EXPR@44..46
L_CURLY@44..45 "{"
R_CURLY@45..46 "}"
WHITESPACE@46..51 "\n "
FN@51..69
FN_KW@51..53 "fn"
WHITESPACE@53..54 " "
NAME@54..55
IDENT@54..55 "c"
PARAM_LIST@55..66
L_PAREN@55..56 "("
SELF_PARAM@56..64
AMP@56..57 "&"
LIFETIME@57..59 "\'a"
WHITESPACE@59..60 " "
SELF_KW@60..64 "self"
COMMA@64..65 ","
R_PAREN@65..66 ")"
WHITESPACE@66..67 " "
BLOCK_EXPR@67..69
L_CURLY@67..68 "{"
R_CURLY@68..69 "}"
WHITESPACE@69..74 "\n "
FN@74..103
FN_KW@74..76 "fn"
WHITESPACE@76..77 " "
NAME@77..78
IDENT@77..78 "d"
PARAM_LIST@78..100
L_PAREN@78..79 "("
SELF_PARAM@79..91
AMP@79..80 "&"
LIFETIME@80..82 "\'a"
WHITESPACE@82..83 " "
MUT_KW@83..86 "mut"
WHITESPACE@86..87 " "
SELF_KW@87..91 "self"
COMMA@91..92 ","
WHITESPACE@92..93 " "
PARAM@93..99
IDENT_PAT@93..94
NAME@93..94
IDENT@93..94 "x"
COLON@94..95 ":"
WHITESPACE@95..96 " "
PATH_TYPE@96..99
PATH@96..99
PATH_SEGMENT@96..99
NAME_REF@96..99
IDENT@96..99 "i32"
R_PAREN@99..100 ")"
WHITESPACE@100..101 " "
BLOCK_EXPR@101..103
L_CURLY@101..102 "{"
R_CURLY@102..103 "}"
WHITESPACE@103..108 "\n "
FN@108..125
FN_KW@108..110 "fn"
WHITESPACE@110..111 " "
NAME@111..112
IDENT@111..112 "e"
PARAM_LIST@112..122
L_PAREN@112..113 "("
SELF_PARAM@113..121
MUT_KW@113..116 "mut"
WHITESPACE@116..117 " "
SELF_KW@117..121 "self"
R_PAREN@121..122 ")"
WHITESPACE@122..123 " "
BLOCK_EXPR@123..125
L_CURLY@123..124 "{"
R_CURLY@124..125 "}"
WHITESPACE@125..126 "\n"
R_CURLY@126..127 "}"
WHITESPACE@127..128 "\n"

View file

@ -0,0 +1,7 @@
impl S {
fn a(self) {}
fn b(&self,) {}
fn c(&'a self,) {}
fn d(&'a mut self, x: i32) {}
fn e(mut self) {}
}

View file

@ -0,0 +1,40 @@
SOURCE_FILE@0..35
STRUCT@0..34
STRUCT_KW@0..6 "struct"
WHITESPACE@6..7 " "
NAME@7..8
IDENT@7..8 "S"
GENERIC_PARAM_LIST@8..33
L_ANGLE@8..9 "<"
TYPE_PARAM@9..32
NAME@9..10
IDENT@9..10 "T"
COLON@10..11 ":"
WHITESPACE@11..12 " "
TYPE_BOUND_LIST@12..32
TYPE_BOUND@12..14
LIFETIME@12..14 "\'a"
WHITESPACE@14..15 " "
PLUS@15..16 "+"
WHITESPACE@16..17 " "
TYPE_BOUND@17..23
QUESTION@17..18 "?"
PATH_TYPE@18..23
PATH@18..23
PATH_SEGMENT@18..23
NAME_REF@18..23
IDENT@18..23 "Sized"
WHITESPACE@23..24 " "
PLUS@24..25 "+"
WHITESPACE@25..26 " "
TYPE_BOUND@26..32
L_PAREN@26..27 "("
PATH_TYPE@27..31
PATH@27..31
PATH_SEGMENT@27..31
NAME_REF@27..31
IDENT@27..31 "Copy"
R_PAREN@31..32 ")"
R_ANGLE@32..33 ">"
SEMICOLON@33..34 ";"
WHITESPACE@34..35 "\n"

View file

@ -0,0 +1 @@
struct S<T: 'a + ?Sized + (Copy)>;

View file

@ -0,0 +1,96 @@
SOURCE_FILE@0..103
FN@0..102
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..102
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LET_STMT@15..33
LET_KW@15..18 "let"
WHITESPACE@18..19 " "
PATH_PAT@19..27
PATH@19..27
PATH@19..22
PATH_SEGMENT@19..22
NAME_REF@19..22
IDENT@19..22 "foo"
COLON2@22..24 "::"
PATH_SEGMENT@24..27
NAME_REF@24..27
IDENT@24..27 "Bar"
WHITESPACE@27..28 " "
EQ@28..29 "="
WHITESPACE@29..30 " "
TUPLE_EXPR@30..32
L_PAREN@30..31 "("
R_PAREN@31..32 ")"
SEMICOLON@32..33 ";"
WHITESPACE@33..38 "\n "
LET_STMT@38..53
LET_KW@38..41 "let"
WHITESPACE@41..42 " "
PATH_PAT@42..47
PATH@42..47
PATH_SEGMENT@42..47
COLON2@42..44 "::"
NAME_REF@44..47
IDENT@44..47 "Bar"
WHITESPACE@47..48 " "
EQ@48..49 "="
WHITESPACE@49..50 " "
TUPLE_EXPR@50..52
L_PAREN@50..51 "("
R_PAREN@51..52 ")"
SEMICOLON@52..53 ";"
WHITESPACE@53..58 "\n "
LET_STMT@58..78
LET_KW@58..61 "let"
WHITESPACE@61..62 " "
RECORD_PAT@62..72
PATH@62..65
PATH_SEGMENT@62..65
NAME_REF@62..65
IDENT@62..65 "Bar"
WHITESPACE@65..66 " "
RECORD_PAT_FIELD_LIST@66..72
L_CURLY@66..67 "{"
WHITESPACE@67..68 " "
DOT2@68..70 ".."
WHITESPACE@70..71 " "
R_CURLY@71..72 "}"
WHITESPACE@72..73 " "
EQ@73..74 "="
WHITESPACE@74..75 " "
TUPLE_EXPR@75..77
L_PAREN@75..76 "("
R_PAREN@76..77 ")"
SEMICOLON@77..78 ";"
WHITESPACE@78..83 "\n "
LET_STMT@83..100
LET_KW@83..86 "let"
WHITESPACE@86..87 " "
TUPLE_STRUCT_PAT@87..94
PATH@87..90
PATH_SEGMENT@87..90
NAME_REF@87..90
IDENT@87..90 "Bar"
L_PAREN@90..91 "("
REST_PAT@91..93
DOT2@91..93 ".."
R_PAREN@93..94 ")"
WHITESPACE@94..95 " "
EQ@95..96 "="
WHITESPACE@96..97 " "
TUPLE_EXPR@97..99
L_PAREN@97..98 "("
R_PAREN@98..99 ")"
SEMICOLON@99..100 ";"
WHITESPACE@100..101 "\n"
R_CURLY@101..102 "}"
WHITESPACE@102..103 "\n"

View file

@ -0,0 +1,6 @@
fn foo() {
let foo::Bar = ();
let ::Bar = ();
let Bar { .. } = ();
let Bar(..) = ();
}

View file

@ -0,0 +1,24 @@
SOURCE_FILE@0..26
FN@0..25
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..25
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..23
LOOP_EXPR@15..22
LOOP_KW@15..19 "loop"
WHITESPACE@19..20 " "
BLOCK_EXPR@20..22
L_CURLY@20..21 "{"
R_CURLY@21..22 "}"
SEMICOLON@22..23 ";"
WHITESPACE@23..24 "\n"
R_CURLY@24..25 "}"
WHITESPACE@25..26 "\n"

View file

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

View file

@ -0,0 +1,9 @@
SOURCE_FILE@0..10
EXTERN_BLOCK@0..9
ABI@0..6
EXTERN_KW@0..6 "extern"
WHITESPACE@6..7 " "
EXTERN_ITEM_LIST@7..9
L_CURLY@7..8 "{"
R_CURLY@8..9 "}"
WHITESPACE@9..10 "\n"

View file

@ -0,0 +1 @@
extern {}

View file

@ -0,0 +1,59 @@
SOURCE_FILE@0..48
FN@0..47
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..47
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..21
FIELD_EXPR@15..20
PATH_EXPR@15..16
PATH@15..16
PATH_SEGMENT@15..16
NAME_REF@15..16
IDENT@15..16 "x"
DOT@16..17 "."
NAME_REF@17..20
IDENT@17..20 "foo"
SEMICOLON@20..21 ";"
WHITESPACE@21..26 "\n "
EXPR_STMT@26..34
FIELD_EXPR@26..33
FIELD_EXPR@26..29
PATH_EXPR@26..27
PATH@26..27
PATH_SEGMENT@26..27
NAME_REF@26..27
IDENT@26..27 "x"
DOT@27..28 "."
NAME_REF@28..29
INT_NUMBER@28..29 "0"
DOT@29..30 "."
NAME_REF@30..33
IDENT@30..33 "bar"
SEMICOLON@33..34 ";"
WHITESPACE@34..39 "\n "
EXPR_STMT@39..45
CALL_EXPR@39..44
FIELD_EXPR@39..42
PATH_EXPR@39..40
PATH@39..40
PATH_SEGMENT@39..40
NAME_REF@39..40
IDENT@39..40 "x"
DOT@40..41 "."
NAME_REF@41..42
INT_NUMBER@41..42 "0"
ARG_LIST@42..44
L_PAREN@42..43 "("
R_PAREN@43..44 ")"
SEMICOLON@44..45 ";"
WHITESPACE@45..46 "\n"
R_CURLY@46..47 "}"
WHITESPACE@47..48 "\n"

View file

@ -0,0 +1,5 @@
fn foo() {
x.foo;
x.0.bar;
x.0();
}

View file

@ -0,0 +1,33 @@
SOURCE_FILE@0..31
TYPE_ALIAS@0..30
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..8
IDENT@5..8 "Foo"
WHITESPACE@8..9 " "
WHERE_CLAUSE@9..24
WHERE_KW@9..14 "where"
WHITESPACE@14..15 " "
WHERE_PRED@15..24
PATH_TYPE@15..18
PATH@15..18
PATH_SEGMENT@15..18
NAME_REF@15..18
IDENT@15..18 "Foo"
COLON@18..19 ":"
WHITESPACE@19..20 " "
TYPE_BOUND_LIST@20..24
TYPE_BOUND@20..24
PATH_TYPE@20..24
PATH@20..24
PATH_SEGMENT@20..24
NAME_REF@20..24
IDENT@20..24 "Copy"
WHITESPACE@24..25 " "
EQ@25..26 "="
WHITESPACE@26..27 " "
TUPLE_TYPE@27..29
L_PAREN@27..28 "("
R_PAREN@28..29 ")"
SEMICOLON@29..30 ";"
WHITESPACE@30..31 "\n"

View file

@ -0,0 +1 @@
type Foo where Foo: Copy = ();

View file

@ -0,0 +1,35 @@
SOURCE_FILE@0..36
TYPE_ALIAS@0..17
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "M"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
PTR_TYPE@9..16
STAR@9..10 "*"
MUT_KW@10..13 "mut"
WHITESPACE@13..14 " "
TUPLE_TYPE@14..16
L_PAREN@14..15 "("
R_PAREN@15..16 ")"
SEMICOLON@16..17 ";"
WHITESPACE@17..18 "\n"
TYPE_ALIAS@18..35
TYPE_KW@18..22 "type"
WHITESPACE@22..23 " "
NAME@23..24
IDENT@23..24 "C"
WHITESPACE@24..25 " "
EQ@25..26 "="
WHITESPACE@26..27 " "
PTR_TYPE@27..34
STAR@27..28 "*"
MUT_KW@28..31 "mut"
WHITESPACE@31..32 " "
TUPLE_TYPE@32..34
L_PAREN@32..33 "("
R_PAREN@33..34 ")"
SEMICOLON@34..35 ";"
WHITESPACE@35..36 "\n"

View file

@ -0,0 +1,2 @@
type M = *mut ();
type C = *mut ();

View file

@ -0,0 +1,13 @@
SOURCE_FILE@0..16
TYPE_ALIAS@0..15
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..10
IDENT@5..10 "Never"
WHITESPACE@10..11 " "
EQ@11..12 "="
WHITESPACE@12..13 " "
NEVER_TYPE@13..14
BANG@13..14 "!"
SEMICOLON@14..15 ";"
WHITESPACE@15..16 "\n"

View file

@ -0,0 +1 @@
type Never = !;

View file

@ -0,0 +1,35 @@
SOURCE_FILE@0..69
FN@0..68
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..68
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LOOP_EXPR@15..66
LOOP_KW@15..19 "loop"
WHITESPACE@19..20 " "
BLOCK_EXPR@20..66
L_CURLY@20..21 "{"
WHITESPACE@21..30 "\n "
EXPR_STMT@30..39
CONTINUE_EXPR@30..38
CONTINUE_KW@30..38 "continue"
SEMICOLON@38..39 ";"
WHITESPACE@39..48 "\n "
EXPR_STMT@48..60
CONTINUE_EXPR@48..59
CONTINUE_KW@48..56 "continue"
WHITESPACE@56..57 " "
LIFETIME@57..59 "\'l"
SEMICOLON@59..60 ";"
WHITESPACE@60..65 "\n "
R_CURLY@65..66 "}"
WHITESPACE@66..67 "\n"
R_CURLY@67..68 "}"
WHITESPACE@68..69 "\n"

View file

@ -0,0 +1,6 @@
fn foo() {
loop {
continue;
continue 'l;
}
}

View file

@ -0,0 +1,21 @@
SOURCE_FILE@0..19
TYPE_ALIAS@0..18
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "T"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
ARRAY_TYPE@9..17
L_BRACK@9..10 "["
TUPLE_TYPE@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
SEMICOLON@12..13 ";"
WHITESPACE@13..14 " "
LITERAL@14..16
INT_NUMBER@14..16 "92"
R_BRACK@16..17 "]"
SEMICOLON@17..18 ";"
WHITESPACE@18..19 "\n"

View file

@ -0,0 +1 @@
type T = [(); 92];

View file

@ -0,0 +1,72 @@
SOURCE_FILE@0..69
IMPL@0..68
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..6
PATH@5..6
PATH_SEGMENT@5..6
NAME_REF@5..6
IDENT@5..6 "S"
WHITESPACE@6..7 " "
ASSOC_ITEM_LIST@7..68
L_CURLY@7..8 "{"
WHITESPACE@8..13 "\n "
FN@13..33
FN_KW@13..15 "fn"
WHITESPACE@15..16 " "
NAME@16..17
IDENT@16..17 "a"
PARAM_LIST@17..30
L_PAREN@17..18 "("
SELF_PARAM@18..29
SELF_KW@18..22 "self"
COLON@22..23 ":"
WHITESPACE@23..24 " "
REF_TYPE@24..29
AMP@24..25 "&"
PATH_TYPE@25..29
PATH@25..29
PATH_SEGMENT@25..29
NAME_REF@25..29
IDENT@25..29 "Self"
R_PAREN@29..30 ")"
WHITESPACE@30..31 " "
BLOCK_EXPR@31..33
L_CURLY@31..32 "{"
R_CURLY@32..33 "}"
WHITESPACE@33..38 "\n "
FN@38..66
FN_KW@38..40 "fn"
WHITESPACE@40..41 " "
NAME@41..42
IDENT@41..42 "b"
PARAM_LIST@42..63
L_PAREN@42..43 "("
SELF_PARAM@43..62
MUT_KW@43..46 "mut"
WHITESPACE@46..47 " "
SELF_KW@47..51 "self"
COLON@51..52 ":"
WHITESPACE@52..53 " "
PATH_TYPE@53..62
PATH@53..62
PATH_SEGMENT@53..62
NAME_REF@53..56
IDENT@53..56 "Box"
GENERIC_ARG_LIST@56..62
L_ANGLE@56..57 "<"
TYPE_ARG@57..61
PATH_TYPE@57..61
PATH@57..61
PATH_SEGMENT@57..61
NAME_REF@57..61
IDENT@57..61 "Self"
R_ANGLE@61..62 ">"
R_PAREN@62..63 ")"
WHITESPACE@63..64 " "
BLOCK_EXPR@64..66
L_CURLY@64..65 "{"
R_CURLY@65..66 "}"
WHITESPACE@66..67 "\n"
R_CURLY@67..68 "}"
WHITESPACE@68..69 "\n"

View file

@ -0,0 +1,4 @@
impl S {
fn a(self: &Self) {}
fn b(mut self: Box<Self>) {}
}

View file

@ -0,0 +1,44 @@
SOURCE_FILE@0..44
FN@0..43
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..43
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..20
PREFIX_EXPR@15..19
STAR@15..16 "*"
PREFIX_EXPR@16..19
STAR@16..17 "*"
REF_EXPR@17..19
AMP@17..18 "&"
LITERAL@18..19
INT_NUMBER@18..19 "1"
SEMICOLON@19..20 ";"
WHITESPACE@20..25 "\n "
EXPR_STMT@25..32
PREFIX_EXPR@25..31
BANG@25..26 "!"
PREFIX_EXPR@26..31
BANG@26..27 "!"
LITERAL@27..31
TRUE_KW@27..31 "true"
SEMICOLON@31..32 ";"
WHITESPACE@32..37 "\n "
EXPR_STMT@37..41
PREFIX_EXPR@37..40
MINUS@37..38 "-"
PREFIX_EXPR@38..40
MINUS@38..39 "-"
LITERAL@39..40
INT_NUMBER@39..40 "1"
SEMICOLON@40..41 ";"
WHITESPACE@41..42 "\n"
R_CURLY@42..43 "}"
WHITESPACE@43..44 "\n"

View file

@ -0,0 +1,5 @@
fn foo() {
**&1;
!!true;
--1;
}

View file

@ -0,0 +1,59 @@
SOURCE_FILE@0..60
USE@0..6
USE_KW@0..3 "use"
WHITESPACE@3..4 " "
USE_TREE@4..5
STAR@4..5 "*"
SEMICOLON@5..6 ";"
WHITESPACE@6..7 "\n"
USE@7..15
USE_KW@7..10 "use"
WHITESPACE@10..11 " "
USE_TREE@11..14
COLON2@11..13 "::"
STAR@13..14 "*"
SEMICOLON@14..15 ";"
WHITESPACE@15..16 "\n"
USE@16..36
USE_KW@16..19 "use"
WHITESPACE@19..20 " "
USE_TREE@20..35
PATH@20..30
PATH@20..24
PATH_SEGMENT@20..24
NAME_REF@20..24
IDENT@20..24 "some"
COLON2@24..26 "::"
PATH_SEGMENT@26..30
NAME_REF@26..30
IDENT@26..30 "path"
COLON2@30..32 "::"
USE_TREE_LIST@32..35
L_CURLY@32..33 "{"
USE_TREE@33..34
STAR@33..34 "*"
R_CURLY@34..35 "}"
SEMICOLON@35..36 ";"
WHITESPACE@36..37 "\n"
USE@37..59
USE_KW@37..40 "use"
WHITESPACE@40..41 " "
USE_TREE@41..58
PATH@41..51
PATH@41..45
PATH_SEGMENT@41..45
NAME_REF@41..45
IDENT@41..45 "some"
COLON2@45..47 "::"
PATH_SEGMENT@47..51
NAME_REF@47..51
IDENT@47..51 "path"
COLON2@51..53 "::"
USE_TREE_LIST@53..58
L_CURLY@53..54 "{"
USE_TREE@54..57
COLON2@54..56 "::"
STAR@56..57 "*"
R_CURLY@57..58 "}"
SEMICOLON@58..59 ";"
WHITESPACE@59..60 "\n"

View file

@ -0,0 +1,4 @@
use *;
use ::*;
use some::path::{*};
use some::path::{::*};

View file

@ -0,0 +1,78 @@
SOURCE_FILE@0..89
IMPL@0..88
IMPL_KW@0..4 "impl"
WHITESPACE@4..5 " "
PATH_TYPE@5..6
PATH@5..6
PATH_SEGMENT@5..6
NAME_REF@5..6
IDENT@5..6 "F"
WHITESPACE@6..7 " "
ASSOC_ITEM_LIST@7..88
L_CURLY@7..8 "{"
WHITESPACE@8..13 "\n "
TYPE_ALIAS@13..26
TYPE_KW@13..17 "type"
WHITESPACE@17..18 " "
NAME@18..19
IDENT@18..19 "A"
WHITESPACE@19..20 " "
EQ@20..21 "="
WHITESPACE@21..22 " "
PATH_TYPE@22..25
PATH@22..25
PATH_SEGMENT@22..25
NAME_REF@22..25
IDENT@22..25 "i32"
SEMICOLON@25..26 ";"
WHITESPACE@26..31 "\n "
CONST@31..49
CONST_KW@31..36 "const"
WHITESPACE@36..37 " "
NAME@37..38
IDENT@37..38 "B"
COLON@38..39 ":"
WHITESPACE@39..40 " "
PATH_TYPE@40..43
PATH@40..43
PATH_SEGMENT@40..43
NAME_REF@40..43
IDENT@40..43 "i32"
WHITESPACE@43..44 " "
EQ@44..45 "="
WHITESPACE@45..46 " "
LITERAL@46..48
INT_NUMBER@46..48 "92"
SEMICOLON@48..49 ";"
WHITESPACE@49..54 "\n "
FN@54..65
FN_KW@54..56 "fn"
WHITESPACE@56..57 " "
NAME@57..60
IDENT@57..60 "foo"
PARAM_LIST@60..62
L_PAREN@60..61 "("
R_PAREN@61..62 ")"
WHITESPACE@62..63 " "
BLOCK_EXPR@63..65
L_CURLY@63..64 "{"
R_CURLY@64..65 "}"
WHITESPACE@65..70 "\n "
FN@70..86
FN_KW@70..72 "fn"
WHITESPACE@72..73 " "
NAME@73..76
IDENT@73..76 "bar"
PARAM_LIST@76..83
L_PAREN@76..77 "("
SELF_PARAM@77..82
AMP@77..78 "&"
SELF_KW@78..82 "self"
R_PAREN@82..83 ")"
WHITESPACE@83..84 " "
BLOCK_EXPR@84..86
L_CURLY@84..85 "{"
R_CURLY@85..86 "}"
WHITESPACE@86..87 "\n"
R_CURLY@87..88 "}"
WHITESPACE@88..89 "\n"

View file

@ -0,0 +1,6 @@
impl F {
type A = i32;
const B: i32 = 92;
fn foo() {}
fn bar(&self) {}
}

View file

@ -0,0 +1,53 @@
SOURCE_FILE@0..81
STRUCT@0..20
VISIBILITY@0..10
PUB_KW@0..3 "pub"
L_PAREN@3..4 "("
CRATE_KW@4..9 "crate"
R_PAREN@9..10 ")"
WHITESPACE@10..11 " "
STRUCT_KW@11..17 "struct"
WHITESPACE@17..18 " "
NAME@18..19
IDENT@18..19 "S"
SEMICOLON@19..20 ";"
WHITESPACE@20..21 "\n"
STRUCT@21..40
VISIBILITY@21..30
PUB_KW@21..24 "pub"
L_PAREN@24..25 "("
SELF_KW@25..29 "self"
R_PAREN@29..30 ")"
WHITESPACE@30..31 " "
STRUCT_KW@31..37 "struct"
WHITESPACE@37..38 " "
NAME@38..39
IDENT@38..39 "S"
SEMICOLON@39..40 ";"
WHITESPACE@40..41 "\n"
STRUCT@41..60
VISIBILITY@41..50
PUB_KW@41..44 "pub"
L_PAREN@44..45 "("
SELF_KW@45..49 "self"
R_PAREN@49..50 ")"
WHITESPACE@50..51 " "
STRUCT_KW@51..57 "struct"
WHITESPACE@57..58 " "
NAME@58..59
IDENT@58..59 "S"
SEMICOLON@59..60 ";"
WHITESPACE@60..61 "\n"
STRUCT@61..80
VISIBILITY@61..70
PUB_KW@61..64 "pub"
L_PAREN@64..65 "("
SELF_KW@65..69 "self"
R_PAREN@69..70 ")"
WHITESPACE@70..71 " "
STRUCT_KW@71..77 "struct"
WHITESPACE@77..78 " "
NAME@78..79
IDENT@78..79 "S"
SEMICOLON@79..80 ";"
WHITESPACE@80..81 "\n"

View file

@ -0,0 +1,4 @@
pub(crate) struct S;
pub(self) struct S;
pub(self) struct S;
pub(self) struct S;

View file

@ -0,0 +1,13 @@
SOURCE_FILE@0..22
TYPE_ALIAS@0..21
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..16
IDENT@5..16 "Placeholder"
WHITESPACE@16..17 " "
EQ@17..18 "="
WHITESPACE@18..19 " "
INFER_TYPE@19..20
UNDERSCORE@19..20 "_"
SEMICOLON@20..21 ";"
WHITESPACE@21..22 "\n"

View file

@ -0,0 +1 @@
type Placeholder = _;

View file

@ -0,0 +1,41 @@
SOURCE_FILE@0..39
FN@0..38
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..38
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
LET_STMT@16..36
LET_KW@16..19 "let"
WHITESPACE@19..20 " "
SLICE_PAT@20..30
L_BRACK@20..21 "["
IDENT_PAT@21..22
NAME@21..22
IDENT@21..22 "a"
COMMA@22..23 ","
WHITESPACE@23..24 " "
IDENT_PAT@24..25
NAME@24..25
IDENT@24..25 "b"
COMMA@25..26 ","
WHITESPACE@26..27 " "
REST_PAT@27..29
DOT2@27..29 ".."
R_BRACK@29..30 "]"
WHITESPACE@30..31 " "
EQ@31..32 "="
WHITESPACE@32..33 " "
ARRAY_EXPR@33..35
L_BRACK@33..34 "["
R_BRACK@34..35 "]"
SEMICOLON@35..36 ";"
WHITESPACE@36..37 "\n"
R_CURLY@37..38 "}"
WHITESPACE@38..39 "\n"

View file

@ -0,0 +1,3 @@
fn main() {
let [a, b, ..] = [];
}

View file

@ -0,0 +1,17 @@
SOURCE_FILE@0..15
TYPE_ALIAS@0..14
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "T"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
SLICE_TYPE@9..13
L_BRACK@9..10 "["
TUPLE_TYPE@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
R_BRACK@12..13 "]"
SEMICOLON@13..14 ";"
WHITESPACE@14..15 "\n"

View file

@ -0,0 +1 @@
type T = [()];

View file

@ -0,0 +1,104 @@
SOURCE_FILE@0..97
FN@0..96
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..96
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LET_STMT@15..28
LET_KW@15..18 "let"
WHITESPACE@18..19 " "
TUPLE_STRUCT_PAT@19..22
PATH@19..20
PATH_SEGMENT@19..20
NAME_REF@19..20
IDENT@19..20 "S"
L_PAREN@20..21 "("
R_PAREN@21..22 ")"
WHITESPACE@22..23 " "
EQ@23..24 "="
WHITESPACE@24..25 " "
TUPLE_EXPR@25..27
L_PAREN@25..26 "("
R_PAREN@26..27 ")"
SEMICOLON@27..28 ";"
WHITESPACE@28..33 "\n "
LET_STMT@33..47
LET_KW@33..36 "let"
WHITESPACE@36..37 " "
TUPLE_STRUCT_PAT@37..41
PATH@37..38
PATH_SEGMENT@37..38
NAME_REF@37..38
IDENT@37..38 "S"
L_PAREN@38..39 "("
WILDCARD_PAT@39..40
UNDERSCORE@39..40 "_"
R_PAREN@40..41 ")"
WHITESPACE@41..42 " "
EQ@42..43 "="
WHITESPACE@43..44 " "
TUPLE_EXPR@44..46
L_PAREN@44..45 "("
R_PAREN@45..46 ")"
SEMICOLON@46..47 ";"
WHITESPACE@47..52 "\n "
LET_STMT@52..67
LET_KW@52..55 "let"
WHITESPACE@55..56 " "
TUPLE_STRUCT_PAT@56..61
PATH@56..57
PATH_SEGMENT@56..57
NAME_REF@56..57
IDENT@56..57 "S"
L_PAREN@57..58 "("
WILDCARD_PAT@58..59
UNDERSCORE@58..59 "_"
COMMA@59..60 ","
R_PAREN@60..61 ")"
WHITESPACE@61..62 " "
EQ@62..63 "="
WHITESPACE@63..64 " "
TUPLE_EXPR@64..66
L_PAREN@64..65 "("
R_PAREN@65..66 ")"
SEMICOLON@66..67 ";"
WHITESPACE@67..72 "\n "
LET_STMT@72..94
LET_KW@72..75 "let"
WHITESPACE@75..76 " "
TUPLE_STRUCT_PAT@76..88
PATH@76..77
PATH_SEGMENT@76..77
NAME_REF@76..77
IDENT@76..77 "S"
L_PAREN@77..78 "("
WILDCARD_PAT@78..79
UNDERSCORE@78..79 "_"
COMMA@79..80 ","
WHITESPACE@80..81 " "
REST_PAT@81..83
DOT2@81..83 ".."
WHITESPACE@83..84 " "
COMMA@84..85 ","
WHITESPACE@85..86 " "
IDENT_PAT@86..87
NAME@86..87
IDENT@86..87 "x"
R_PAREN@87..88 ")"
WHITESPACE@88..89 " "
EQ@89..90 "="
WHITESPACE@90..91 " "
TUPLE_EXPR@91..93
L_PAREN@91..92 "("
R_PAREN@92..93 ")"
SEMICOLON@93..94 ";"
WHITESPACE@94..95 "\n"
R_CURLY@95..96 "}"
WHITESPACE@96..97 "\n"

View file

@ -0,0 +1,6 @@
fn foo() {
let S() = ();
let S(_) = ();
let S(_,) = ();
let S(_, .. , x) = ();
}

View file

@ -0,0 +1,49 @@
SOURCE_FILE@0..52
FN@0..51
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..51
L_CURLY@10..11 "{"
WHITESPACE@11..16 "\n "
LET_STMT@16..28
LET_KW@16..19 "let"
WHITESPACE@19..20 " "
REF_PAT@20..22
AMP@20..21 "&"
IDENT_PAT@21..22
NAME@21..22
IDENT@21..22 "a"
WHITESPACE@22..23 " "
EQ@23..24 "="
WHITESPACE@24..25 " "
TUPLE_EXPR@25..27
L_PAREN@25..26 "("
R_PAREN@26..27 ")"
SEMICOLON@27..28 ";"
WHITESPACE@28..33 "\n "
LET_STMT@33..49
LET_KW@33..36 "let"
WHITESPACE@36..37 " "
REF_PAT@37..43
AMP@37..38 "&"
MUT_KW@38..41 "mut"
WHITESPACE@41..42 " "
IDENT_PAT@42..43
NAME@42..43
IDENT@42..43 "b"
WHITESPACE@43..44 " "
EQ@44..45 "="
WHITESPACE@45..46 " "
TUPLE_EXPR@46..48
L_PAREN@46..47 "("
R_PAREN@47..48 ")"
SEMICOLON@48..49 ";"
WHITESPACE@49..50 "\n"
R_CURLY@50..51 "}"
WHITESPACE@51..52 "\n"

View file

@ -0,0 +1,4 @@
fn main() {
let &a = ();
let &mut b = ();
}

View file

@ -0,0 +1,43 @@
SOURCE_FILE@0..43
TYPE_ALIAS@0..42
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "A"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
IMPL_TRAIT_TYPE@9..41
IMPL_KW@9..13 "impl"
WHITESPACE@13..14 " "
TYPE_BOUND_LIST@14..41
TYPE_BOUND@14..36
PATH_TYPE@14..36
PATH@14..36
PATH_SEGMENT@14..36
NAME_REF@14..22
IDENT@14..22 "Iterator"
GENERIC_ARG_LIST@22..36
L_ANGLE@22..23 "<"
ASSOC_TYPE_ARG@23..35
NAME_REF@23..27
IDENT@23..27 "Item"
EQ@27..28 "="
PATH_TYPE@28..35
PATH@28..35
PATH_SEGMENT@28..35
NAME_REF@28..31
IDENT@28..31 "Foo"
GENERIC_ARG_LIST@31..35
L_ANGLE@31..32 "<"
LIFETIME_ARG@32..34
LIFETIME@32..34 "\'a"
R_ANGLE@34..35 ">"
R_ANGLE@35..36 ">"
WHITESPACE@36..37 " "
PLUS@37..38 "+"
WHITESPACE@38..39 " "
TYPE_BOUND@39..41
LIFETIME@39..41 "\'a"
SEMICOLON@41..42 ";"
WHITESPACE@42..43 "\n"

View file

@ -0,0 +1 @@
type A = impl Iterator<Item=Foo<'a>> + 'a;

View file

@ -0,0 +1,89 @@
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
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..25
CAST_EXPR@15..24
LITERAL@15..17
INT_NUMBER@15..17 "82"
WHITESPACE@17..18 " "
AS_KW@18..20 "as"
WHITESPACE@20..21 " "
PATH_TYPE@21..24
PATH@21..24
PATH_SEGMENT@21..24
NAME_REF@21..24
IDENT@21..24 "i32"
SEMICOLON@24..25 ";"
WHITESPACE@25..30 "\n "
EXPR_STMT@30..43
BIN_EXPR@30..42
CAST_EXPR@30..38
LITERAL@30..32
INT_NUMBER@30..32 "81"
WHITESPACE@32..33 " "
AS_KW@33..35 "as"
WHITESPACE@35..36 " "
PATH_TYPE@36..38
PATH@36..38
PATH_SEGMENT@36..38
NAME_REF@36..38
IDENT@36..38 "i8"
WHITESPACE@38..39 " "
PLUS@39..40 "+"
WHITESPACE@40..41 " "
LITERAL@41..42
INT_NUMBER@41..42 "1"
SEMICOLON@42..43 ";"
WHITESPACE@43..48 "\n "
EXPR_STMT@48..62
BIN_EXPR@48..61
CAST_EXPR@48..57
LITERAL@48..50
INT_NUMBER@48..50 "79"
WHITESPACE@50..51 " "
AS_KW@51..53 "as"
WHITESPACE@53..54 " "
PATH_TYPE@54..57
PATH@54..57
PATH_SEGMENT@54..57
NAME_REF@54..57
IDENT@54..57 "i16"
WHITESPACE@57..58 " "
MINUS@58..59 "-"
WHITESPACE@59..60 " "
LITERAL@60..61
INT_NUMBER@60..61 "1"
SEMICOLON@61..62 ";"
WHITESPACE@62..67 "\n "
EXPR_STMT@67..86
BIN_EXPR@67..85
CAST_EXPR@67..77
LITERAL@67..71
INT_NUMBER@67..71 "0x36"
WHITESPACE@71..72 " "
AS_KW@72..74 "as"
WHITESPACE@74..75 " "
PATH_TYPE@75..77
PATH@75..77
PATH_SEGMENT@75..77
NAME_REF@75..77
IDENT@75..77 "u8"
WHITESPACE@77..78 " "
LTEQ@78..80 "<="
WHITESPACE@80..81 " "
LITERAL@81..85
INT_NUMBER@81..85 "0x37"
SEMICOLON@85..86 ";"
WHITESPACE@86..87 "\n"
R_CURLY@87..88 "}"
WHITESPACE@88..89 "\n"

View file

@ -0,0 +1,6 @@
fn foo() {
82 as i32;
81 as i8 + 1;
79 as i16 - 1;
0x36 as u8 <= 0x37;
}

View file

@ -0,0 +1,202 @@
SOURCE_FILE@0..197
FN@0..37
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..37
L_CURLY@9..10 "{"
WHITESPACE@10..11 " "
IF_EXPR@11..35
IF_KW@11..13 "if"
WHITESPACE@13..14 " "
CONDITION@14..32
LET_KW@14..17 "let"
WHITESPACE@17..18 " "
TUPLE_STRUCT_PAT@18..25
PATH@18..22
PATH_SEGMENT@18..22
NAME_REF@18..22
IDENT@18..22 "Some"
L_PAREN@22..23 "("
WILDCARD_PAT@23..24
UNDERSCORE@23..24 "_"
R_PAREN@24..25 ")"
WHITESPACE@25..26 " "
EQ@26..27 "="
WHITESPACE@27..28 " "
PATH_EXPR@28..32
PATH@28..32
PATH_SEGMENT@28..32
NAME_REF@28..32
IDENT@28..32 "None"
WHITESPACE@32..33 " "
BLOCK_EXPR@33..35
L_CURLY@33..34 "{"
R_CURLY@34..35 "}"
WHITESPACE@35..36 " "
R_CURLY@36..37 "}"
WHITESPACE@37..38 "\n"
FN@38..196
FN_KW@38..40 "fn"
WHITESPACE@40..41 " "
NAME@41..44
IDENT@41..44 "bar"
PARAM_LIST@44..46
L_PAREN@44..45 "("
R_PAREN@45..46 ")"
WHITESPACE@46..47 " "
BLOCK_EXPR@47..196
L_CURLY@47..48 "{"
WHITESPACE@48..53 "\n "
EXPR_STMT@53..87
IF_EXPR@53..87
IF_KW@53..55 "if"
WHITESPACE@55..56 " "
CONDITION@56..84
LET_KW@56..59 "let"
WHITESPACE@59..60 " "
OR_PAT@60..77
TUPLE_STRUCT_PAT@60..67
PATH@60..64
PATH_SEGMENT@60..64
NAME_REF@60..64
IDENT@60..64 "Some"
L_PAREN@64..65 "("
WILDCARD_PAT@65..66
UNDERSCORE@65..66 "_"
R_PAREN@66..67 ")"
WHITESPACE@67..68 " "
PIPE@68..69 "|"
WHITESPACE@69..70 " "
TUPLE_STRUCT_PAT@70..77
PATH@70..74
PATH_SEGMENT@70..74
NAME_REF@70..74
IDENT@70..74 "Some"
L_PAREN@74..75 "("
WILDCARD_PAT@75..76
UNDERSCORE@75..76 "_"
R_PAREN@76..77 ")"
WHITESPACE@77..78 " "
EQ@78..79 "="
WHITESPACE@79..80 " "
PATH_EXPR@80..84
PATH@80..84
PATH_SEGMENT@80..84
NAME_REF@80..84
IDENT@80..84 "None"
WHITESPACE@84..85 " "
BLOCK_EXPR@85..87
L_CURLY@85..86 "{"
R_CURLY@86..87 "}"
WHITESPACE@87..92 "\n "
EXPR_STMT@92..118
IF_EXPR@92..118
IF_KW@92..94 "if"
WHITESPACE@94..95 " "
CONDITION@95..115
LET_KW@95..98 "let"
WHITESPACE@98..99 " "
PIPE@99..100 "|"
WHITESPACE@100..101 " "
TUPLE_STRUCT_PAT@101..108
PATH@101..105
PATH_SEGMENT@101..105
NAME_REF@101..105
IDENT@101..105 "Some"
L_PAREN@105..106 "("
WILDCARD_PAT@106..107
UNDERSCORE@106..107 "_"
R_PAREN@107..108 ")"
WHITESPACE@108..109 " "
EQ@109..110 "="
WHITESPACE@110..111 " "
PATH_EXPR@111..115
PATH@111..115
PATH_SEGMENT@111..115
NAME_REF@111..115
IDENT@111..115 "None"
WHITESPACE@115..116 " "
BLOCK_EXPR@116..118
L_CURLY@116..117 "{"
R_CURLY@117..118 "}"
WHITESPACE@118..123 "\n "
EXPR_STMT@123..160
WHILE_EXPR@123..160
WHILE_KW@123..128 "while"
WHITESPACE@128..129 " "
CONDITION@129..157
LET_KW@129..132 "let"
WHITESPACE@132..133 " "
OR_PAT@133..150
TUPLE_STRUCT_PAT@133..140
PATH@133..137
PATH_SEGMENT@133..137
NAME_REF@133..137
IDENT@133..137 "Some"
L_PAREN@137..138 "("
WILDCARD_PAT@138..139
UNDERSCORE@138..139 "_"
R_PAREN@139..140 ")"
WHITESPACE@140..141 " "
PIPE@141..142 "|"
WHITESPACE@142..143 " "
TUPLE_STRUCT_PAT@143..150
PATH@143..147
PATH_SEGMENT@143..147
NAME_REF@143..147
IDENT@143..147 "Some"
L_PAREN@147..148 "("
WILDCARD_PAT@148..149
UNDERSCORE@148..149 "_"
R_PAREN@149..150 ")"
WHITESPACE@150..151 " "
EQ@151..152 "="
WHITESPACE@152..153 " "
PATH_EXPR@153..157
PATH@153..157
PATH_SEGMENT@153..157
NAME_REF@153..157
IDENT@153..157 "None"
WHITESPACE@157..158 " "
BLOCK_EXPR@158..160
L_CURLY@158..159 "{"
R_CURLY@159..160 "}"
WHITESPACE@160..165 "\n "
WHILE_EXPR@165..194
WHILE_KW@165..170 "while"
WHITESPACE@170..171 " "
CONDITION@171..191
LET_KW@171..174 "let"
WHITESPACE@174..175 " "
PIPE@175..176 "|"
WHITESPACE@176..177 " "
TUPLE_STRUCT_PAT@177..184
PATH@177..181
PATH_SEGMENT@177..181
NAME_REF@177..181
IDENT@177..181 "Some"
L_PAREN@181..182 "("
WILDCARD_PAT@182..183
UNDERSCORE@182..183 "_"
R_PAREN@183..184 ")"
WHITESPACE@184..185 " "
EQ@185..186 "="
WHITESPACE@186..187 " "
PATH_EXPR@187..191
PATH@187..191
PATH_SEGMENT@187..191
NAME_REF@187..191
IDENT@187..191 "None"
WHITESPACE@191..192 " "
BLOCK_EXPR@192..194
L_CURLY@192..193 "{"
R_CURLY@193..194 "}"
WHITESPACE@194..195 "\n"
R_CURLY@195..196 "}"
WHITESPACE@196..197 "\n"

View file

@ -0,0 +1,7 @@
fn foo() { if let Some(_) = None {} }
fn bar() {
if let Some(_) | Some(_) = None {}
if let | Some(_) = None {}
while let Some(_) | Some(_) = None {}
while let | Some(_) = None {}
}

View file

@ -0,0 +1,84 @@
SOURCE_FILE@0..93
FN@0..92
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..92
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
EXPR_STMT@15..29
WHILE_EXPR@15..28
WHILE_KW@15..20 "while"
WHITESPACE@20..21 " "
CONDITION@21..25
LITERAL@21..25
TRUE_KW@21..25 "true"
WHITESPACE@25..26 " "
BLOCK_EXPR@26..28
L_CURLY@26..27 "{"
R_CURLY@27..28 "}"
SEMICOLON@28..29 ";"
WHITESPACE@29..34 "\n "
EXPR_STMT@34..67
WHILE_EXPR@34..66
WHILE_KW@34..39 "while"
WHITESPACE@39..40 " "
CONDITION@40..63
LET_KW@40..43 "let"
WHITESPACE@43..44 " "
TUPLE_STRUCT_PAT@44..51
PATH@44..48
PATH_SEGMENT@44..48
NAME_REF@44..48
IDENT@44..48 "Some"
L_PAREN@48..49 "("
IDENT_PAT@49..50
NAME@49..50
IDENT@49..50 "x"
R_PAREN@50..51 ")"
WHITESPACE@51..52 " "
EQ@52..53 "="
WHITESPACE@53..54 " "
METHOD_CALL_EXPR@54..63
PATH_EXPR@54..56
PATH@54..56
PATH_SEGMENT@54..56
NAME_REF@54..56
IDENT@54..56 "it"
DOT@56..57 "."
NAME_REF@57..61
IDENT@57..61 "next"
ARG_LIST@61..63
L_PAREN@61..62 "("
R_PAREN@62..63 ")"
WHITESPACE@63..64 " "
BLOCK_EXPR@64..66
L_CURLY@64..65 "{"
R_CURLY@65..66 "}"
SEMICOLON@66..67 ";"
WHITESPACE@67..72 "\n "
EXPR_STMT@72..90
WHILE_EXPR@72..89
WHILE_KW@72..77 "while"
WHITESPACE@77..78 " "
CONDITION@78..86
BLOCK_EXPR@78..86
L_CURLY@78..79 "{"
WHITESPACE@79..80 " "
LITERAL@80..84
TRUE_KW@80..84 "true"
WHITESPACE@84..85 " "
R_CURLY@85..86 "}"
WHITESPACE@86..87 " "
BLOCK_EXPR@87..89
L_CURLY@87..88 "{"
R_CURLY@88..89 "}"
SEMICOLON@89..90 ";"
WHITESPACE@90..91 "\n"
R_CURLY@91..92 "}"
WHITESPACE@92..93 "\n"

View file

@ -0,0 +1,5 @@
fn foo() {
while true {};
while let Some(x) = it.next() {};
while { true } {};
}

View file

@ -0,0 +1,98 @@
SOURCE_FILE@0..113
TYPE_ALIAS@0..14
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "A"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
FN_PTR_TYPE@9..13
FN_KW@9..11 "fn"
PARAM_LIST@11..13
L_PAREN@11..12 "("
R_PAREN@12..13 ")"
SEMICOLON@13..14 ";"
WHITESPACE@14..15 "\n"
TYPE_ALIAS@15..36
TYPE_KW@15..19 "type"
WHITESPACE@19..20 " "
NAME@20..21
IDENT@20..21 "B"
WHITESPACE@21..22 " "
EQ@22..23 "="
WHITESPACE@23..24 " "
FN_PTR_TYPE@24..35
UNSAFE_KW@24..30 "unsafe"
WHITESPACE@30..31 " "
FN_KW@31..33 "fn"
PARAM_LIST@33..35
L_PAREN@33..34 "("
R_PAREN@34..35 ")"
SEMICOLON@35..36 ";"
WHITESPACE@36..37 "\n"
TYPE_ALIAS@37..69
TYPE_KW@37..41 "type"
WHITESPACE@41..42 " "
NAME@42..43
IDENT@42..43 "C"
WHITESPACE@43..44 " "
EQ@44..45 "="
WHITESPACE@45..46 " "
FN_PTR_TYPE@46..68
UNSAFE_KW@46..52 "unsafe"
WHITESPACE@52..53 " "
ABI@53..63
EXTERN_KW@53..59 "extern"
WHITESPACE@59..60 " "
STRING@60..63 "\"C\""
WHITESPACE@63..64 " "
FN_KW@64..66 "fn"
PARAM_LIST@66..68
L_PAREN@66..67 "("
R_PAREN@67..68 ")"
SEMICOLON@68..69 ";"
WHITESPACE@69..70 "\n"
TYPE_ALIAS@70..112
TYPE_KW@70..74 "type"
WHITESPACE@74..75 " "
NAME@75..76
IDENT@75..76 "D"
WHITESPACE@76..77 " "
EQ@77..78 "="
WHITESPACE@78..79 " "
FN_PTR_TYPE@79..111
ABI@79..89
EXTERN_KW@79..85 "extern"
WHITESPACE@85..86 " "
STRING@86..89 "\"C\""
WHITESPACE@89..90 " "
FN_KW@90..92 "fn"
WHITESPACE@92..93 " "
PARAM_LIST@93..105
L_PAREN@93..94 "("
WHITESPACE@94..95 " "
PARAM@95..97
PATH_TYPE@95..97
PATH@95..97
PATH_SEGMENT@95..97
NAME_REF@95..97
IDENT@95..97 "u8"
WHITESPACE@97..98 " "
COMMA@98..99 ","
WHITESPACE@99..100 " "
PARAM@100..103
DOT3@100..103 "..."
WHITESPACE@103..104 " "
R_PAREN@104..105 ")"
WHITESPACE@105..106 " "
RET_TYPE@106..111
THIN_ARROW@106..108 "->"
WHITESPACE@108..109 " "
PATH_TYPE@109..111
PATH@109..111
PATH_SEGMENT@109..111
NAME_REF@109..111
IDENT@109..111 "u8"
SEMICOLON@111..112 ";"
WHITESPACE@112..113 "\n"

View file

@ -0,0 +1,4 @@
type A = fn();
type B = unsafe fn();
type C = unsafe extern "C" fn();
type D = extern "C" fn ( u8 , ... ) -> u8;

View file

@ -0,0 +1,50 @@
SOURCE_FILE@0..54
TYPE_ALIAS@0..13
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "A"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
REF_TYPE@9..12
AMP@9..10 "&"
TUPLE_TYPE@10..12
L_PAREN@10..11 "("
R_PAREN@11..12 ")"
SEMICOLON@12..13 ";"
WHITESPACE@13..14 "\n"
TYPE_ALIAS@14..35
TYPE_KW@14..18 "type"
WHITESPACE@18..19 " "
NAME@19..20
IDENT@19..20 "B"
WHITESPACE@20..21 " "
EQ@21..22 "="
WHITESPACE@22..23 " "
REF_TYPE@23..34
AMP@23..24 "&"
LIFETIME@24..31 "\'static"
WHITESPACE@31..32 " "
TUPLE_TYPE@32..34
L_PAREN@32..33 "("
R_PAREN@33..34 ")"
SEMICOLON@34..35 ";"
WHITESPACE@35..36 "\n"
TYPE_ALIAS@36..53
TYPE_KW@36..40 "type"
WHITESPACE@40..41 " "
NAME@41..42
IDENT@41..42 "C"
WHITESPACE@42..43 " "
EQ@43..44 "="
WHITESPACE@44..45 " "
REF_TYPE@45..52
AMP@45..46 "&"
MUT_KW@46..49 "mut"
WHITESPACE@49..50 " "
TUPLE_TYPE@50..52
L_PAREN@50..51 "("
R_PAREN@51..52 ")"
SEMICOLON@52..53 ";"
WHITESPACE@53..54 "\n"

View file

@ -0,0 +1,3 @@
type A = &();
type B = &'static ();
type C = &mut ();

View file

@ -0,0 +1,53 @@
SOURCE_FILE@0..102
FN@0..101
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..101
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LOOP_EXPR@15..99
LOOP_KW@15..19 "loop"
WHITESPACE@19..20 " "
BLOCK_EXPR@20..99
L_CURLY@20..21 "{"
WHITESPACE@21..30 "\n "
EXPR_STMT@30..36
BREAK_EXPR@30..35
BREAK_KW@30..35 "break"
SEMICOLON@35..36 ";"
WHITESPACE@36..45 "\n "
EXPR_STMT@45..54
BREAK_EXPR@45..53
BREAK_KW@45..50 "break"
WHITESPACE@50..51 " "
LIFETIME@51..53 "\'l"
SEMICOLON@53..54 ";"
WHITESPACE@54..63 "\n "
EXPR_STMT@63..72
BREAK_EXPR@63..71
BREAK_KW@63..68 "break"
WHITESPACE@68..69 " "
LITERAL@69..71
INT_NUMBER@69..71 "92"
SEMICOLON@71..72 ";"
WHITESPACE@72..81 "\n "
EXPR_STMT@81..93
BREAK_EXPR@81..92
BREAK_KW@81..86 "break"
WHITESPACE@86..87 " "
LIFETIME@87..89 "\'l"
WHITESPACE@89..90 " "
LITERAL@90..92
INT_NUMBER@90..92 "92"
SEMICOLON@92..93 ";"
WHITESPACE@93..98 "\n "
R_CURLY@98..99 "}"
WHITESPACE@99..100 "\n"
R_CURLY@100..101 "}"
WHITESPACE@101..102 "\n"

View file

@ -0,0 +1,8 @@
fn foo() {
loop {
break;
break 'l;
break 92;
break 'l 92;
}
}

View file

@ -0,0 +1,78 @@
SOURCE_FILE@0..71
TYPE_ALIAS@0..26
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "X"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
PATH_TYPE@9..25
PATH@9..25
PATH@9..17
PATH_SEGMENT@9..17
L_ANGLE@9..10 "<"
PATH_TYPE@10..11
PATH@10..11
PATH_SEGMENT@10..11
NAME_REF@10..11
IDENT@10..11 "A"
WHITESPACE@11..12 " "
AS_KW@12..14 "as"
WHITESPACE@14..15 " "
PATH_TYPE@15..16
PATH@15..16
PATH_SEGMENT@15..16
NAME_REF@15..16
IDENT@15..16 "B"
R_ANGLE@16..17 ">"
COLON2@17..19 "::"
PATH_SEGMENT@19..25
NAME_REF@19..25
IDENT@19..25 "Output"
SEMICOLON@25..26 ";"
WHITESPACE@26..27 "\n"
FN@27..70
FN_KW@27..29 "fn"
WHITESPACE@29..30 " "
NAME@30..33
IDENT@30..33 "foo"
PARAM_LIST@33..35
L_PAREN@33..34 "("
R_PAREN@34..35 ")"
WHITESPACE@35..36 " "
BLOCK_EXPR@36..70
L_CURLY@36..37 "{"
WHITESPACE@37..38 " "
EXPR_STMT@38..68
CALL_EXPR@38..67
PATH_EXPR@38..65
PATH@38..65
PATH@38..56
PATH_SEGMENT@38..56
L_ANGLE@38..39 "<"
PATH_TYPE@39..44
PATH@39..44
PATH_SEGMENT@39..44
NAME_REF@39..44
IDENT@39..44 "usize"
WHITESPACE@44..45 " "
AS_KW@45..47 "as"
WHITESPACE@47..48 " "
PATH_TYPE@48..55
PATH@48..55
PATH_SEGMENT@48..55
NAME_REF@48..55
IDENT@48..55 "Default"
R_ANGLE@55..56 ">"
COLON2@56..58 "::"
PATH_SEGMENT@58..65
NAME_REF@58..65
IDENT@58..65 "default"
ARG_LIST@65..67
L_PAREN@65..66 "("
R_PAREN@66..67 ")"
SEMICOLON@67..68 ";"
WHITESPACE@68..69 " "
R_CURLY@69..70 "}"
WHITESPACE@70..71 "\n"

View file

@ -0,0 +1,2 @@
type X = <A as B>::Output;
fn foo() { <usize as Default>::default(); }

View file

@ -0,0 +1,28 @@
SOURCE_FILE@0..21
FN@0..20
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..20
L_CURLY@9..10 "{"
WHITESPACE@10..11 " "
EXPR_STMT@11..18
INDEX_EXPR@11..17
PATH_EXPR@11..13
PATH@11..13
PATH_SEGMENT@11..13
NAME_REF@11..13
IDENT@11..13 "xs"
L_BRACK@13..14 "["
RANGE_EXPR@14..16
DOT2@14..16 ".."
R_BRACK@16..17 "]"
SEMICOLON@17..18 ";"
WHITESPACE@18..19 " "
R_CURLY@19..20 "}"
WHITESPACE@20..21 "\n"

View file

@ -0,0 +1 @@
fn foo() { xs[..]; }

View file

@ -0,0 +1,55 @@
SOURCE_FILE@0..46
TYPE_ALIAS@0..45
TYPE_KW@0..4 "type"
WHITESPACE@4..5 " "
NAME@5..6
IDENT@5..6 "A"
WHITESPACE@6..7 " "
EQ@7..8 "="
WHITESPACE@8..9 " "
PATH_TYPE@9..44
PATH@9..44
PATH_SEGMENT@9..44
NAME_REF@9..10
IDENT@9..10 "B"
GENERIC_ARG_LIST@10..44
L_ANGLE@10..11 "<"
LIFETIME_ARG@11..18
LIFETIME@11..18 "\'static"
COMMA@18..19 ","
WHITESPACE@19..20 " "
TYPE_ARG@20..23
PATH_TYPE@20..23
PATH@20..23
PATH_SEGMENT@20..23
NAME_REF@20..23
IDENT@20..23 "i32"
COMMA@23..24 ","
WHITESPACE@24..25 " "
CONST_ARG@25..26
LITERAL@25..26
INT_NUMBER@25..26 "1"
COMMA@26..27 ","
WHITESPACE@27..28 " "
CONST_ARG@28..33
BLOCK_EXPR@28..33
L_CURLY@28..29 "{"
WHITESPACE@29..30 " "
LITERAL@30..31
INT_NUMBER@30..31 "2"
WHITESPACE@31..32 " "
R_CURLY@32..33 "}"
COMMA@33..34 ","
WHITESPACE@34..35 " "
ASSOC_TYPE_ARG@35..43
NAME_REF@35..39
IDENT@35..39 "Item"
EQ@39..40 "="
PATH_TYPE@40..43
PATH@40..43
PATH_SEGMENT@40..43
NAME_REF@40..43
IDENT@40..43 "u64"
R_ANGLE@43..44 ">"
SEMICOLON@44..45 ";"
WHITESPACE@45..46 "\n"

View file

@ -0,0 +1 @@
type A = B<'static, i32, 1, { 2 }, Item=u64>;

View file

@ -0,0 +1,62 @@
SOURCE_FILE@0..71
FN@0..19
VISIBILITY@0..5
CRATE_KW@0..5 "crate"
WHITESPACE@5..6 " "
FN_KW@6..8 "fn"
WHITESPACE@8..9 " "
NAME@9..13
IDENT@9..13 "main"
PARAM_LIST@13..15
L_PAREN@13..14 "("
R_PAREN@14..15 ")"
WHITESPACE@15..16 " "
BLOCK_EXPR@16..19
L_CURLY@16..17 "{"
WHITESPACE@17..18 " "
R_CURLY@18..19 "}"
WHITESPACE@19..20 "\n"
STRUCT@20..49
STRUCT_KW@20..26 "struct"
WHITESPACE@26..27 " "
NAME@27..28
IDENT@27..28 "S"
WHITESPACE@28..29 " "
RECORD_FIELD_LIST@29..49
L_CURLY@29..30 "{"
WHITESPACE@30..31 " "
RECORD_FIELD@31..47
VISIBILITY@31..36
CRATE_KW@31..36 "crate"
WHITESPACE@36..37 " "
NAME@37..42
IDENT@37..42 "field"
COLON@42..43 ":"
WHITESPACE@43..44 " "
PATH_TYPE@44..47
PATH@44..47
PATH_SEGMENT@44..47
NAME_REF@44..47
IDENT@44..47 "u32"
WHITESPACE@47..48 " "
R_CURLY@48..49 "}"
WHITESPACE@49..50 "\n"
STRUCT@50..70
STRUCT_KW@50..56 "struct"
WHITESPACE@56..57 " "
NAME@57..58
IDENT@57..58 "T"
TUPLE_FIELD_LIST@58..69
L_PAREN@58..59 "("
TUPLE_FIELD@59..68
VISIBILITY@59..64
CRATE_KW@59..64 "crate"
WHITESPACE@64..65 " "
PATH_TYPE@65..68
PATH@65..68
PATH_SEGMENT@65..68
NAME_REF@65..68
IDENT@65..68 "u32"
R_PAREN@68..69 ")"
SEMICOLON@69..70 ";"
WHITESPACE@70..71 "\n"

View file

@ -0,0 +1,3 @@
crate fn main() { }
struct S { crate field: u32 }
struct T(crate u32);

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