From fc5f73de45478058aa6d61e328733224cfa16efa Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Fri, 19 Mar 2021 19:42:06 +0100 Subject: Move `AttrsOwnerNode` to syntax and make it public --- crates/syntax/src/ast/node_ext.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'crates/syntax/src/ast/node_ext.rs') diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs index 5a9834cbb..01f580a40 100644 --- a/crates/syntax/src/ast/node_ext.rs +++ b/crates/syntax/src/ast/node_ext.rs @@ -90,6 +90,36 @@ impl NameOwner for Macro { impl AttrsOwner for Macro {} +/// Basically an owned `dyn AttrsOwner` without extra boxing. +pub struct AttrsOwnerNode { + node: SyntaxNode, +} + +impl AttrsOwnerNode { + pub fn new(node: N) -> Self { + AttrsOwnerNode { node: node.syntax().clone() } + } +} + +impl AttrsOwner for AttrsOwnerNode {} +impl AstNode for AttrsOwnerNode { + fn can_cast(_: SyntaxKind) -> bool + where + Self: Sized, + { + false + } + fn cast(_: SyntaxNode) -> Option + where + Self: Sized, + { + None + } + fn syntax(&self) -> &SyntaxNode { + &self.node + } +} + #[derive(Debug, Clone, PartialEq, Eq)] pub enum AttrKind { Inner, -- cgit v1.2.3