From d4d986c7f850e1f535bb4c22e3a7f7fba5483628 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 31 Jul 2020 15:46:12 +0200 Subject: Item is a Stmt --- crates/ra_syntax/src/ast/generated.rs | 8 ++++++-- crates/ra_syntax/src/ast/generated/nodes.rs | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'crates/ra_syntax/src/ast') diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index ba55f1c42..4a6f41ee7 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs @@ -17,14 +17,17 @@ impl AstNode for Stmt { fn can_cast(kind: SyntaxKind) -> bool { match kind { LET_STMT | EXPR_STMT => true, - _ => false, + _ => Item::can_cast(kind), } } fn cast(syntax: SyntaxNode) -> Option { let res = match syntax.kind() { LET_STMT => Stmt::LetStmt(LetStmt { syntax }), EXPR_STMT => Stmt::ExprStmt(ExprStmt { syntax }), - _ => return None, + _ => { + let item = Item::cast(syntax)?; + Stmt::Item(item) + } }; Some(res) } @@ -32,6 +35,7 @@ impl AstNode for Stmt { match self { Stmt::LetStmt(it) => &it.syntax, Stmt::ExprStmt(it) => &it.syntax, + Stmt::Item(it) => it.syntax(), } } } diff --git a/crates/ra_syntax/src/ast/generated/nodes.rs b/crates/ra_syntax/src/ast/generated/nodes.rs index 8ef72fec7..763fd20f4 100644 --- a/crates/ra_syntax/src/ast/generated/nodes.rs +++ b/crates/ra_syntax/src/ast/generated/nodes.rs @@ -348,7 +348,6 @@ pub struct BlockExpr { pub(crate) syntax: SyntaxNode, } impl ast::AttrsOwner for BlockExpr {} -impl ast::ModuleItemOwner for BlockExpr {} impl BlockExpr { pub fn label(&self) -> Option