Update tests

Unfortunately, we lost some recovery for expressions.
This commit is contained in:
Chayim Refael Friedman 2022-01-24 04:50:07 +02:00
parent 13ac5c3491
commit a1b7169b48
27 changed files with 616 additions and 796 deletions

View File

@ -542,4 +542,26 @@ fn test() {
93,
);
}
#[test]
fn let_chains_can_reference_previous_lets() {
do_check_local_name(
r#"
fn test() {
let foo: Option<i32> = None;
if let Some(spam) = foo && spa$0m > 1 && let Some(spam) = foo && spam > 1 {}
}
"#,
61,
);
do_check_local_name(
r#"
fn test() {
let foo: Option<i32> = None;
if let Some(spam) = foo && spam > 1 && let Some(spam) = foo && sp$0am > 1 {}
}
"#,
100,
);
}
}

View File

@ -190,7 +190,6 @@ fn expr_macro_def_expanded_in_various_places() {
!0..6 '1isize': isize
!0..6 '1isize': isize
!0..6 '1isize': isize
!0..6 '1isize': isize
39..442 '{ ...!(); }': ()
73..94 'spam!(...am!())': {unknown}
100..119 'for _ ...!() {}': ()
@ -198,6 +197,7 @@ fn expr_macro_def_expanded_in_various_places() {
117..119 '{}': ()
124..134 '|| spam!()': || -> isize
140..156 'while ...!() {}': ()
146..153 'spam!()': bool
154..156 '{}': ()
161..174 'break spam!()': !
180..194 'return spam!()': !
@ -271,7 +271,6 @@ fn expr_macro_rules_expanded_in_various_places() {
!0..6 '1isize': isize
!0..6 '1isize': isize
!0..6 '1isize': isize
!0..6 '1isize': isize
53..456 '{ ...!(); }': ()
87..108 'spam!(...am!())': {unknown}
114..133 'for _ ...!() {}': ()
@ -279,6 +278,7 @@ fn expr_macro_rules_expanded_in_various_places() {
131..133 '{}': ()
138..148 '|| spam!()': || -> isize
154..170 'while ...!() {}': ()
160..167 'spam!()': bool
168..170 '{}': ()
175..188 'break spam!()': !
194..208 'return spam!()': !

View File

@ -266,6 +266,31 @@ fn main() {
);
}
#[test]
fn move_let_guard_to_arm_body_works() {
check_assist(
move_guard_to_arm_body,
r#"
fn main() {
match 92 {
x $0if (let 1 = x) => false,
_ => true
}
}
"#,
r#"
fn main() {
match 92 {
x => if (let 1 = x) {
false
},
_ => true
}
}
"#,
);
}
#[test]
fn move_guard_to_arm_body_works_complex_match() {
check_assist(
@ -426,13 +451,21 @@ fn main() {
}
#[test]
fn move_arm_cond_to_match_guard_if_let_not_works() {
check_assist_not_applicable(
fn move_arm_cond_to_match_guard_if_let_works() {
check_assist(
move_arm_cond_to_match_guard,
r#"
fn main() {
match 92 {
x => if let 62 = x { $0false },
x => if let 62 = x && true { $0false },
_ => true
}
}
"#,
r#"
fn main() {
match 92 {
x if let 62 = x && true => false,
_ => true
}
}
@ -884,7 +917,7 @@ fn main() {
#[test]
fn move_arm_cond_to_match_guard_elseif_iflet() {
check_assist_not_applicable(
check_assist(
move_arm_cond_to_match_guard,
r#"
fn main() {
@ -901,9 +934,21 @@ fn main() {
4
},
}
}
"#,
)
}"#,
r#"
fn main() {
match 92 {
3 => 0,
x if x > 10 => 1,
x if x > 5 => 2,
x if let 4 = 4 => {
42;
3
}
x => 4,
}
}"#,
);
}
#[test]

View File

@ -381,6 +381,18 @@ impl VariantData {
)
}
#[test]
fn test_if_let_with_match_let_chain() {
check_assist_not_applicable(
replace_if_let_with_match,
r#"
fn main() {
if $0let true = true && let Some(1) = None {}
}
"#,
)
}
#[test]
fn test_if_let_with_match_basic() {
check_assist(

View File

@ -289,17 +289,19 @@ fn expr() {
TopEntryPoint::Expr,
"let _ = 0;",
expect![[r#"
ERROR
LET_KW "let"
WHITESPACE " "
UNDERSCORE "_"
WHITESPACE " "
EQ "="
WHITESPACE " "
INT_NUMBER "0"
SEMICOLON ";"
error 0: expected expression
"#]],
ERROR
LET_EXPR
LET_KW "let"
WHITESPACE " "
WILDCARD_PAT
UNDERSCORE "_"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "0"
SEMICOLON ";"
"#]],
);
}

View File

@ -29,9 +29,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -1,5 +1,5 @@
fn foo() {
let foo =
let foo = 11
let bar = 1;
let
let baz = 92;

View File

@ -20,6 +20,9 @@ SOURCE_FILE
IDENT "foo"
WHITESPACE " "
EQ "="
WHITESPACE " "
LITERAL
INT_NUMBER "11"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
@ -57,9 +60,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -73,9 +75,8 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -95,13 +96,12 @@ SOURCE_FILE
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
error 27: expected SEMICOLON
error 52: expected pattern
error 52: expected SEMICOLON
error 78: expected pattern
error 78: expected SEMICOLON
error 101: expected pattern
error 101: expected SEMICOLON
error 127: expected pattern
error 127: expected SEMICOLON

View File

@ -180,116 +180,118 @@ SOURCE_FILE
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 " "
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
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"
IDENT "Trait"
L_ANGLE "<"
ERROR
LIFETIME_IDENT "'a"
R_ANGLE ">"
ERROR
R_PAREN ")"
R_ANGLE ">"
ERROR
SEMICOLON ";"
WHITESPACE "\n "
LET_STMT
LET_KW "let"
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_EXPR
LET_KW "let"
WHITESPACE " "
WILDCARD_PAT
UNDERSCORE "_"
ERROR
COLON ":"
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
BIN_EXPR
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "Box"
L_ANGLE "<"
TUPLE_EXPR
L_PAREN "("
FOR_EXPR
FOR_KW "for"
PATH_PAT
PATH
PATH_SEGMENT
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
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 ")"
WHITESPACE " "
PLUS "+"
WHITESPACE " "
PAREN_EXPR
L_PAREN "("
ERROR
QUESTION "?"
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "Sized"
R_PAREN ")"
ERROR
R_ANGLE ">"
SEMICOLON ";"
R_ANGLE ">"
ERROR
SEMICOLON ";"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"
@ -312,10 +314,18 @@ 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
error 190: expected EQ
error 190: expected expression
error 191: expected COMMA
error 201: expected type
error 204: expected IN_KW
error 211: expected expression
error 214: expected expression
error 228: expected expression
error 229: expected R_PAREN
error 229: expected a block
error 229: expected COMMA
error 236: expected expression
error 237: expected COMMA
error 237: expected expression
error 237: expected R_PAREN

View File

@ -1,209 +0,0 @@
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
STMT_LIST@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
STMT_LIST@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
STMT_LIST@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
STMT_LIST@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
STMT_LIST@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
STMT_LIST@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
STMT_LIST@192..194
L_CURLY@192..193 "{"
R_CURLY@193..194 "}"
WHITESPACE@194..195 "\n"
R_CURLY@195..196 "}"
WHITESPACE@196..197 "\n"

View File

@ -1,7 +0,0 @@
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

@ -1,209 +0,0 @@
SOURCE_FILE
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "foo"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE " "
R_CURLY "}"
WHITESPACE "\n"
FN
FN_KW "fn"
WHITESPACE " "
NAME
IDENT "bar"
PARAM_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE "\n "
EXPR_STMT
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LET_KW "let"
WHITESPACE " "
OR_PAT
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
PIPE "|"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
EXPR_STMT
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LET_KW "let"
WHITESPACE " "
PIPE "|"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
EXPR_STMT
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LET_KW "let"
WHITESPACE " "
OR_PAT
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
PIPE "|"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LET_KW "let"
WHITESPACE " "
PIPE "|"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"

View File

@ -0,0 +1,90 @@
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
IF_EXPR
IF_KW "if"
WHITESPACE " "
BIN_EXPR
LET_EXPR
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
AMP2 "&&"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
BIN_EXPR
BIN_EXPR
LITERAL
INT_NUMBER "1"
WHITESPACE " "
EQ2 "=="
WHITESPACE " "
LITERAL
INT_NUMBER "5"
WHITESPACE " "
AMP2 "&&"
WHITESPACE " "
PAREN_EXPR
L_PAREN "("
LET_EXPR
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "None"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"

View File

@ -0,0 +1,4 @@
fn foo() {
if let Some(_) = None && true {}
while 1 == 5 && (let None = None) {}
}

View File

@ -0,0 +1,90 @@
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
IF_EXPR
IF_KW "if"
WHITESPACE " "
BIN_EXPR
LET_EXPR
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT
PATH
PATH_SEGMENT
NAME_REF
IDENT "Some"
L_PAREN "("
WILDCARD_PAT
UNDERSCORE "_"
R_PAREN ")"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
WHITESPACE " "
AMP2 "&&"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n "
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
BIN_EXPR
BIN_EXPR
LITERAL
INT_NUMBER "1"
WHITESPACE " "
EQ2 "=="
WHITESPACE " "
LITERAL
INT_NUMBER "5"
WHITESPACE " "
AMP2 "&&"
WHITESPACE " "
PAREN_EXPR
L_PAREN "("
LET_EXPR
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "None"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "None"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
R_CURLY "}"
WHITESPACE "\n"
R_CURLY "}"
WHITESPACE "\n"

View File

@ -16,9 +16,8 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -30,7 +29,7 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LET_EXPR
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT
@ -69,15 +68,14 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
R_CURLY "}"
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
R_CURLY "}"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -16,9 +16,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -30,9 +29,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -51,9 +49,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -65,9 +62,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
FALSE_KW "false"
LITERAL
FALSE_KW "false"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -86,12 +82,11 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "S"
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "S"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -103,15 +98,14 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
R_CURLY "}"
BLOCK_EXPR
STMT_LIST
L_CURLY "{"
WHITESPACE " "
LITERAL
TRUE_KW "true"
WHITESPACE " "
R_CURLY "}"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -15,9 +15,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BREAK_EXPR
BREAK_KW "break"
BREAK_EXPR
BREAK_KW "break"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -28,9 +27,8 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
BREAK_EXPR
BREAK_KW "break"
BREAK_EXPR
BREAK_KW "break"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -16,9 +16,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -50,9 +49,8 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -35,9 +35,8 @@ SOURCE_FILE
WHITESPACE " "
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -49,19 +49,20 @@ SOURCE_FILE
MATCH_GUARD
IF_KW "if"
WHITESPACE " "
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "foo"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "bar"
LET_EXPR
LET_KW "let"
WHITESPACE " "
IDENT_PAT
NAME
IDENT "foo"
WHITESPACE " "
EQ "="
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "bar"
WHITESPACE " "
FAT_ARROW "=>"
WHITESPACE " "

View File

@ -51,16 +51,15 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "condition_not_met"
ARG_LIST
L_PAREN "("
R_PAREN ")"
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "condition_not_met"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -92,16 +91,15 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "condition_not_met"
ARG_LIST
L_PAREN "("
R_PAREN ")"
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "condition_not_met"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -153,16 +151,15 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
ARG_LIST
L_PAREN "("
R_PAREN ")"
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "foo"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -187,16 +184,15 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "bar"
ARG_LIST
L_PAREN "("
R_PAREN ")"
CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "bar"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -280,21 +280,20 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
PREFIX_EXPR
BANG "!"
METHOD_CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "x"
DOT "."
NAME_REF
IDENT "get"
ARG_LIST
L_PAREN "("
R_PAREN ")"
PREFIX_EXPR
BANG "!"
METHOD_CALL_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "x"
DOT "."
NAME_REF
IDENT "get"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -443,12 +442,11 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -457,12 +455,11 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -495,12 +492,11 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -549,12 +545,11 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -572,12 +567,11 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
PAREN_EXPR
L_PAREN "("
RETURN_EXPR
RETURN_KW "return"
R_PAREN ")"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -1037,9 +1031,8 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BREAK_EXPR
BREAK_KW "break"
BREAK_EXPR
BREAK_KW "break"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -1089,18 +1082,17 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "i"
WHITESPACE " "
EQ2 "=="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "i"
WHITESPACE " "
EQ2 "=="
WHITESPACE " "
LITERAL
INT_NUMBER "1"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST
@ -1344,18 +1336,17 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "u8"
WHITESPACE " "
NEQ "!="
WHITESPACE " "
LITERAL
INT_NUMBER "0u8"
BIN_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "u8"
WHITESPACE " "
NEQ "!="
WHITESPACE " "
LITERAL
INT_NUMBER "0u8"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -219,7 +219,7 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
LET_EXPR
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT

View File

@ -15,47 +15,46 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
CONDITION
BIN_EXPR
CAST_EXPR
METHOD_CALL_EXPR
LITERAL
FLOAT_NUMBER "1.0f32"
DOT "."
NAME_REF
IDENT "floor"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
AS_KW "as"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i64"
BIN_EXPR
CAST_EXPR
METHOD_CALL_EXPR
LITERAL
FLOAT_NUMBER "1.0f32"
DOT "."
NAME_REF
IDENT "floor"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
NEQ "!="
AS_KW "as"
WHITESPACE " "
CAST_EXPR
METHOD_CALL_EXPR
LITERAL
FLOAT_NUMBER "1.0f32"
DOT "."
NAME_REF
IDENT "floor"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
AS_KW "as"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i64"
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i64"
WHITESPACE " "
NEQ "!="
WHITESPACE " "
CAST_EXPR
METHOD_CALL_EXPR
LITERAL
FLOAT_NUMBER "1.0f32"
DOT "."
NAME_REF
IDENT "floor"
ARG_LIST
L_PAREN "("
R_PAREN ")"
WHITESPACE " "
AS_KW "as"
WHITESPACE " "
PATH_TYPE
PATH
PATH_SEGMENT
NAME_REF
IDENT "i64"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -86,9 +86,8 @@ SOURCE_FILE
WHILE_EXPR
WHILE_KW "while"
WHITESPACE " "
CONDITION
LITERAL
TRUE_KW "true"
LITERAL
TRUE_KW "true"
WHITESPACE " "
BLOCK_EXPR
STMT_LIST

View File

@ -49,9 +49,8 @@ SOURCE_FILE@0..350
IF_EXPR@134..257
IF_KW@134..136 "if"
WHITESPACE@136..137 " "
CONDITION@137..141
LITERAL@137..141
TRUE_KW@137..141 "true"
LITERAL@137..141
TRUE_KW@137..141 "true"
WHITESPACE@141..142 " "
BLOCK_EXPR@142..257
STMT_LIST@142..257
@ -94,9 +93,8 @@ SOURCE_FILE@0..350
WHILE_EXPR@262..347
WHILE_KW@262..267 "while"
WHITESPACE@267..268 " "
CONDITION@268..272
LITERAL@268..272
TRUE_KW@268..272 "true"
LITERAL@268..272
TRUE_KW@268..272 "true"
WHITESPACE@272..273 " "
BLOCK_EXPR@273..347
STMT_LIST@273..347