Trait moore_svlog_syntax::ast::AnyNode
source · [−]pub trait AnyNode<'a>: BasicNode<'a> + AnyNodeData + Display + Send + Sync {
fn id(&self) -> NodeId;
fn span(&self) -> Span;
fn order(&self) -> usize;
fn human_span(&self) -> Span { ... }
fn get_parent(&self) -> Option<&'a dyn AnyNode<'a>> { ... }
fn link(&'a self, parent: Option<&'a dyn AnyNode<'a>>, order: &mut usize) { ... }
fn link_attach(&'a self, parent: &'a dyn AnyNode<'a>, order: usize) { ... }
fn as_ptr(&self) -> *const u8 { ... }
}
Expand description
An AST node.
Required methods
Provided methods
fn human_span(&self) -> Span
fn human_span(&self) -> Span
Get a span that is terse and suitable to pinpoint the node for a human.
fn get_parent(&self) -> Option<&'a dyn AnyNode<'a>>
fn get_parent(&self) -> Option<&'a dyn AnyNode<'a>>
Get this node’s parent.
fn link_attach(&'a self, parent: &'a dyn AnyNode<'a>, order: usize)
fn link_attach(&'a self, parent: &'a dyn AnyNode<'a>, order: usize)
Link up this node as an expansion of another node.
All subnodes inherit the order from their parent. Useful if a node is generated as part of a later expansion/analysis pass, but needs to hook into the AST somewhere.
Trait Implementations
impl<'a> Eq for &'a dyn AnyNode<'a>
Implementors
impl<'a> AnyNode<'a> for TypeOrExpr<'a>
impl<'a, T> AnyNode<'a> for Node<'a, T> where
Self: BasicNode<'a> + Display + AnyNodeData,
T: Debug + ForEachChild<'a> + Send + Sync,
Automatically implement AnyNode
for Node<T>
if enough information is
present.