From 765f93b8d851e5e853c844c8a279e73b4b7d965c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 21 May 2019 01:04:20 +0300 Subject: add is_union to structs AST --- crates/ra_syntax/src/ast/extensions.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'crates/ra_syntax/src') diff --git a/crates/ra_syntax/src/ast/extensions.rs b/crates/ra_syntax/src/ast/extensions.rs index f030e0df8..e4c99784c 100644 --- a/crates/ra_syntax/src/ast/extensions.rs +++ b/crates/ra_syntax/src/ast/extensions.rs @@ -3,7 +3,12 @@ use itertools::Itertools; -use crate::{SmolStr, SyntaxToken, ast::{self, AstNode, children, child_opt}, SyntaxKind::*, SyntaxElement, T}; +use crate::{ + SmolStr, SyntaxToken, + ast::{self, AstNode, children, child_opt}, + SyntaxKind::*, + SyntaxElement, T, +}; use ra_parser::SyntaxKind; impl ast::Name { @@ -196,6 +201,17 @@ impl StructKind<'_> { } impl ast::StructDef { + pub fn is_union(&self) -> bool { + for child in self.syntax().children_with_tokens() { + match child.kind() { + T![struct] => return false, + T![union] => return true, + _ => (), + } + } + false + } + pub fn kind(&self) -> StructKind { StructKind::from_node(self) } -- cgit v1.2.3