Unnamed repository; edit this file 'description' to name the repository.
Simplify
Lukas Wirth 2021-09-21
parent b36f12d · commit 83e97ad
-rw-r--r--crates/syntax/src/ast/generated/nodes.rs113
-rw-r--r--crates/syntax/src/tests/sourcegen_ast.rs6
2 files changed, 9 insertions, 110 deletions
diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs
index 047d97c90f..547e754636 100644
--- a/crates/syntax/src/ast/generated/nodes.rs
+++ b/crates/syntax/src/ast/generated/nodes.rs
@@ -3618,10 +3618,7 @@ impl AstNode for DynArgListOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- CALL_EXPR | METHOD_CALL_EXPR => Some(DynArgListOwner { syntax }),
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynArgListOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3703,74 +3700,7 @@ impl AstNode for DynAttrsOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- MACRO_CALL
- | SOURCE_FILE
- | CONST
- | ENUM
- | EXTERN_BLOCK
- | EXTERN_CRATE
- | FN
- | IMPL
- | MACRO_RULES
- | MACRO_DEF
- | MODULE
- | STATIC
- | STRUCT
- | TRAIT
- | TYPE_ALIAS
- | UNION
- | USE
- | ITEM_LIST
- | BLOCK_EXPR
- | SELF_PARAM
- | PARAM
- | RECORD_FIELD
- | TUPLE_FIELD
- | VARIANT
- | ASSOC_ITEM_LIST
- | EXTERN_ITEM_LIST
- | CONST_PARAM
- | LIFETIME_PARAM
- | TYPE_PARAM
- | EXPR_STMT
- | LET_STMT
- | ARRAY_EXPR
- | AWAIT_EXPR
- | BIN_EXPR
- | BOX_EXPR
- | BREAK_EXPR
- | CALL_EXPR
- | CAST_EXPR
- | CLOSURE_EXPR
- | CONTINUE_EXPR
- | EFFECT_EXPR
- | FIELD_EXPR
- | FOR_EXPR
- | IF_EXPR
- | INDEX_EXPR
- | LITERAL
- | LOOP_EXPR
- | MATCH_EXPR
- | METHOD_CALL_EXPR
- | PAREN_EXPR
- | PATH_EXPR
- | PREFIX_EXPR
- | RANGE_EXPR
- | REF_EXPR
- | RETURN_EXPR
- | TRY_EXPR
- | TUPLE_EXPR
- | WHILE_EXPR
- | YIELD_EXPR
- | RECORD_EXPR_FIELD_LIST
- | RECORD_EXPR_FIELD
- | MATCH_ARM_LIST
- | MATCH_ARM
- | IDENT_PAT
- | RECORD_PAT_FIELD => Some(DynAttrsOwner { syntax }),
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynAttrsOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3788,12 +3718,7 @@ impl AstNode for DynGenericParamsOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- ENUM | FN | IMPL | STRUCT | TRAIT | TYPE_ALIAS | UNION => {
- Some(DynGenericParamsOwner { syntax })
- }
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynGenericParamsOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3811,10 +3736,7 @@ impl AstNode for DynLoopBodyOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- FOR_EXPR | LOOP_EXPR | WHILE_EXPR => Some(DynLoopBodyOwner { syntax }),
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynLoopBodyOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3832,10 +3754,7 @@ impl AstNode for DynModuleItemOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- MACRO_ITEMS | SOURCE_FILE | ITEM_LIST => Some(DynModuleItemOwner { syntax }),
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynModuleItemOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3855,12 +3774,7 @@ impl AstNode for DynNameOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- CONST | ENUM | FN | MACRO_RULES | MACRO_DEF | MODULE | STATIC | STRUCT | TRAIT
- | TYPE_ALIAS | UNION | RENAME | SELF_PARAM | RECORD_FIELD | VARIANT | CONST_PARAM
- | TYPE_PARAM | IDENT_PAT => Some(DynNameOwner { syntax }),
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynNameOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3878,12 +3792,7 @@ impl AstNode for DynTypeBoundsOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- ASSOC_TYPE_ARG | TRAIT | TYPE_ALIAS | LIFETIME_PARAM | TYPE_PARAM | WHERE_PRED => {
- Some(DynTypeBoundsOwner { syntax })
- }
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynTypeBoundsOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -3904,13 +3813,7 @@ impl AstNode for DynVisibilityOwner {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- CONST | ENUM | EXTERN_CRATE | FN | IMPL | MACRO_RULES | MACRO_DEF | MODULE | STATIC
- | STRUCT | TRAIT | TYPE_ALIAS | UNION | USE | RECORD_FIELD | TUPLE_FIELD | VARIANT => {
- Some(DynVisibilityOwner { syntax })
- }
- _ => None,
- }
+ Self::can_cast(syntax.kind()).then(|| DynVisibilityOwner { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs
index 08700cd5a8..1a0377830b 100644
--- a/crates/syntax/src/tests/sourcegen_ast.rs
+++ b/crates/syntax/src/tests/sourcegen_ast.rs
@@ -250,11 +250,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String {
}
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- match syntax.kind() {
- #(#kinds)|* => Some(#name { syntax }),
- _ => None,
- }
-
+ Self::can_cast(syntax.kind()).then(|| #name { syntax })
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax