Unnamed repository; edit this file 'description' to name the repository.
Update tests
Unfortunately, we lost some recovery for expressions.
Chayim Refael Friedman 2022-02-21
parent 13ac5c3 · commit a1b7169
-rw-r--r--crates/hir_def/src/body/scope.rs22
-rw-r--r--crates/hir_ty/src/tests/macros.rs4
-rw-r--r--crates/ide_assists/src/handlers/move_guard.rs59
-rw-r--r--crates/ide_assists/src/handlers/replace_if_let_with_match.rs12
-rw-r--r--crates/parser/src/tests/top_entries.rs24
-rw-r--r--crates/parser/test_data/parser/err/0008_item_block_recovery.txt5
-rw-r--r--crates/parser/test_data/parser/err/0019_let_recover.rs2
-rw-r--r--crates/parser/test_data/parser/err/0019_let_recover.txt32
-rw-r--r--crates/parser/test_data/parser/err/0024_many_type_parens.txt214
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_cond.rast209
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_cond.rs7
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_cond.txt209
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_let_expr.rast90
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_let_expr.rs4
-rw-r--r--crates/parser/test_data/parser/inline/ok/0030_let_expr.txt90
-rw-r--r--crates/parser/test_data/parser/inline/ok/0031_while_expr.txt24
-rw-r--r--crates/parser/test_data/parser/inline/ok/0064_if_expr.txt48
-rw-r--r--crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt10
-rw-r--r--crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt10
-rw-r--r--crates/parser/test_data/parser/inline/ok/0109_label.txt5
-rw-r--r--crates/parser/test_data/parser/inline/ok/0118_match_guard.txt27
-rw-r--r--crates/parser/test_data/parser/ok/0033_label_break.txt76
-rw-r--r--crates/parser/test_data/parser/ok/0035_weird_exprs.txt135
-rw-r--r--crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt2
-rw-r--r--crates/parser/test_data/parser/ok/0056_neq_in_type.txt77
-rw-r--r--crates/parser/test_data/parser/ok/0059_loops_in_parens.txt5
-rw-r--r--crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rast10
27 files changed, 616 insertions, 796 deletions
diff --git a/crates/hir_def/src/body/scope.rs b/crates/hir_def/src/body/scope.rs
index 505d33fa48..fc36f1ae52 100644
--- a/crates/hir_def/src/body/scope.rs
+++ b/crates/hir_def/src/body/scope.rs
@@ -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,
+ );
+ }
}
diff --git a/crates/hir_ty/src/tests/macros.rs b/crates/hir_ty/src/tests/macros.rs
index a61175f273..344e7293c5 100644
--- a/crates/hir_ty/src/tests/macros.rs
+++ b/crates/hir_ty/src/tests/macros.rs
@@ -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!()': !
diff --git a/crates/ide_assists/src/handlers/move_guard.rs b/crates/ide_assists/src/handlers/move_guard.rs
index 6554940859..5c05cb921d 100644
--- a/crates/ide_assists/src/handlers/move_guard.rs
+++ b/crates/ide_assists/src/handlers/move_guard.rs
@@ -267,6 +267,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(
move_guard_to_arm_body,
@@ -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]
diff --git a/crates/ide_assists/src/handlers/replace_if_let_with_match.rs b/crates/ide_assists/src/handlers/replace_if_let_with_match.rs
index 3be14d7d95..2f35f74c5a 100644
--- a/crates/ide_assists/src/handlers/replace_if_let_with_match.rs
+++ b/crates/ide_assists/src/handlers/replace_if_let_with_match.rs
@@ -382,6 +382,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(
replace_if_let_with_match,
diff --git a/crates/parser/src/tests/top_entries.rs b/crates/parser/src/tests/top_entries.rs
index 24e41b46f8..eb640dc7fc 100644
--- a/crates/parser/src/tests/top_entries.rs
+++ b/crates/parser/src/tests/top_entries.rs
@@ -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 ";"
+ "#]],
);
}
diff --git a/crates/parser/test_data/parser/err/0008_item_block_recovery.txt b/crates/parser/test_data/parser/err/0008_item_block_recovery.txt
index 6dd70e7cd9..60b2fe9875 100644
--- a/crates/parser/test_data/parser/err/0008_item_block_recovery.txt
+++ b/crates/parser/test_data/parser/err/0008_item_block_recovery.txt
@@ -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
diff --git a/crates/parser/test_data/parser/err/0019_let_recover.rs b/crates/parser/test_data/parser/err/0019_let_recover.rs
index 48bf3d68bd..5108d5a49b 100644
--- a/crates/parser/test_data/parser/err/0019_let_recover.rs
+++ b/crates/parser/test_data/parser/err/0019_let_recover.rs
@@ -1,5 +1,5 @@
fn foo() {
- let foo =
+ let foo = 11
let bar = 1;
let
let baz = 92;
diff --git a/crates/parser/test_data/parser/err/0019_let_recover.txt b/crates/parser/test_data/parser/err/0019_let_recover.txt
index 25722b1355..7d62e0cc14 100644
--- a/crates/parser/test_data/parser/err/0019_let_recover.txt
+++ b/crates/parser/test_data/parser/err/0019_let_recover.txt
@@ -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
diff --git a/crates/parser/test_data/parser/err/0024_many_type_parens.txt b/crates/parser/test_data/parser/err/0024_many_type_parens.txt
index 446e1a8233..82e6a11249 100644
--- a/crates/parser/test_data/parser/err/0024_many_type_parens.txt
+++ b/crates/parser/test_data/parser/err/0024_many_type_parens.txt
@@ -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 " "
- WILDCARD_PAT
- UNDERSCORE "_"
- COLON ":"
+ 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 " "
- 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
+ BIN_EXPR
+ BIN_EXPR
+ PATH_EXPR
+ PATH
+ PATH_SEGMENT
+ NAME_REF
+ IDENT "Box"
+ L_ANGLE "<"
+ TUPLE_EXPR
L_PAREN "("
- QUESTION "?"
- PATH_TYPE
+ 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 ")"
+ 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
diff --git a/crates/parser/test_data/parser/inline/ok/0030_cond.rast b/crates/parser/test_data/parser/inline/ok/0030_cond.rast
deleted file mode 100644
index 3aa330f55d..0000000000
--- a/crates/parser/test_data/parser/inline/ok/0030_cond.rast
+++ /dev/null
@@ -1,209 +0,0 @@
diff --git a/crates/parser/test_data/parser/inline/ok/0030_cond.rs b/crates/parser/test_data/parser/inline/ok/0030_cond.rs
deleted file mode 100644
index 2552a2621f..0000000000
--- a/crates/parser/test_data/parser/inline/ok/0030_cond.rs
+++ /dev/null
@@ -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 {}
-}
diff --git a/crates/parser/test_data/parser/inline/ok/0030_cond.txt b/crates/parser/test_data/parser/inline/ok/0030_cond.txt
deleted file mode 100644
index 5b89937013..0000000000
--- a/crates/parser/test_data/parser/inline/ok/0030_cond.txt
+++ /dev/null
@@ -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"
diff --git a/crates/parser/test_data/parser/inline/ok/0030_let_expr.rast b/crates/parser/test_data/parser/inline/ok/0030_let_expr.rast
new file mode 100644
index 0000000000..dcffcb1ce2
--- /dev/null
+++ b/crates/parser/test_data/parser/inline/ok/0030_let_expr.rast
@@ -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"
diff --git a/crates/parser/test_data/parser/inline/ok/0030_let_expr.rs b/crates/parser/test_data/parser/inline/ok/0030_let_expr.rs
new file mode 100644
index 0000000000..0131d5e338
--- /dev/null
+++ b/crates/parser/test_data/parser/inline/ok/0030_let_expr.rs
@@ -0,0 +1,4 @@
+fn foo() {
+ if let Some(_) = None && true {}
+ while 1 == 5 && (let None = None) {}
+}
diff --git a/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt b/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt
new file mode 100644
index 0000000000..dcffcb1ce2
--- /dev/null
+++ b/crates/parser/test_data/parser/inline/ok/0030_let_expr.txt
@@ -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"
diff --git a/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt b/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
index fc1ca4934c..16c522414a 100644
--- a/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
+++ b/crates/parser/test_data/parser/inline/ok/0031_while_expr.txt
@@ -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
diff --git a/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt b/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
index c1f8381271..e2e964e44d 100644
--- a/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
+++ b/crates/parser/test_data/parser/inline/ok/0064_if_expr.txt
@@ -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
diff --git a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt b/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
index 50ce9933b9..cbf5e84e8c 100644
--- a/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
+++ b/crates/parser/test_data/parser/inline/ok/0088_break_ambiguity.txt
@@ -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
diff --git a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
index 2a85371393..e4e215593e 100644
--- a/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
+++ b/crates/parser/test_data/parser/inline/ok/0096_no_semi_after_block.txt
@@ -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
diff --git a/crates/parser/test_data/parser/inline/ok/0109_label.txt b/crates/parser/test_data/parser/inline/ok/0109_label.txt
index bd57fa9d4a..48d0bde845 100644
--- a/crates/parser/test_data/parser/inline/ok/0109_label.txt
+++ b/crates/parser/test_data/parser/inline/ok/0109_label.txt
@@ -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
diff --git a/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt b/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
index a28b6ea5d1..96318b5219 100644
--- a/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
+++ b/crates/parser/test_data/parser/inline/ok/0118_match_guard.txt
@@ -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 " "
diff --git a/crates/parser/test_data/parser/ok/0033_label_break.txt b/crates/parser/test_data/parser/ok/0033_label_break.txt
index 9807bf0d9a..df1acd6b83 100644
--- a/crates/parser/test_data/parser/ok/0033_label_break.txt
+++ b/crates/parser/test_data/parser/ok/0033_label_break.txt
@@ -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
diff --git a/crates/parser/test_data/parser/ok/0035_weird_exprs.txt b/crates/parser/test_data/parser/ok/0035_weird_exprs.txt
index 5f62748c47..4ec703e517 100644
--- a/crates/parser/test_data/parser/ok/0035_weird_exprs.txt
+++ b/crates/parser/test_data/parser/ok/0035_weird_exprs.txt
@@ -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
diff --git a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
index ac23e7d1d9..aecc71d482 100644
--- a/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
+++ b/crates/parser/test_data/parser/ok/0047_minus_in_inner_pattern.txt
@@ -219,7 +219,7 @@ SOURCE_FILE
IF_EXPR
IF_KW "if"
WHITESPACE " "
- CONDITION
+ LET_EXPR
LET_KW "let"
WHITESPACE " "
TUPLE_STRUCT_PAT
diff --git a/crates/parser/test_data/parser/ok/0056_neq_in_type.txt b/crates/parser/test_data/parser/ok/0056_neq_in_type.txt
index 2d78eaffc5..55ce31275f 100644
--- a/crates/parser/test_data/parser/ok/0056_neq_in_type.txt
+++ b/crates/parser/test_data/parser/ok/0056_neq_in_type.txt
@@ -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
diff --git a/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt b/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
index 1eeb6c957f..79bc7f971d 100644
--- a/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
+++ b/crates/parser/test_data/parser/ok/0059_loops_in_parens.txt
@@ -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
diff --git a/crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rast b/crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rast
index d4963979c8..50057a02d8 100644
--- a/crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rast
+++ b/crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rast
@@ -49,9 +49,8 @@ [email protected]
@@ -94,9 +93,8 @@ [email protected]