AstNode

Trait AstNode 

Source
pub trait AstNode<N: TreeNode>: Sized {
Show 16 methods // Required methods fn can_cast(kind: SyntaxKind) -> bool; fn cast(inner: N) -> Option<Self>; fn inner(&self) -> &N; // Provided methods fn kind(&self) -> SyntaxKind { ... } fn text<'a>(&'a self) -> impl Display where N: 'a { ... } fn span(&self) -> Span { ... } fn token<C>(&self) -> Option<C> where C: AstToken<N::Token> { ... } fn tokens<'a, C>(&'a self) -> impl Iterator<Item = C> where C: AstToken<N::Token>, N: 'a { ... } fn last_token<C>(&self) -> Option<C> where C: AstToken<N::Token> { ... } fn child<C>(&self) -> Option<C> where C: AstNode<N> { ... } fn children<'a, C>(&'a self) -> impl Iterator<Item = C> where C: AstNode<N>, N: 'a { ... } fn parent<'a, P>(&self) -> Option<P> where P: AstNode<N>, N: 'a { ... } fn scope_span<O, C>(&self) -> Option<Span> where O: AstToken<N::Token>, C: AstToken<N::Token> { ... } fn braced_scope_span(&self) -> Option<Span> { ... } fn heredoc_scope_span(&self) -> Option<Span> { ... } fn descendants<'a, D>(&'a self) -> impl Iterator<Item = D> where D: AstNode<N>, N: 'a { ... }
}
Expand description

A trait implemented by AST nodes.

Required Methods§

Source

fn can_cast(kind: SyntaxKind) -> bool

Determines if the kind can be cast to this representation.

Source

fn cast(inner: N) -> Option<Self>

Casts the given inner type to the this representation.

Source

fn inner(&self) -> &N

Gets the inner type from this representation.

Provided Methods§

Source

fn kind(&self) -> SyntaxKind

Gets the syntax kind of the node.

Source

fn text<'a>(&'a self) -> impl Display
where N: 'a,

Gets the text of the node.

As node text is not contiguous, this returns a type that implements Display.

Source

fn span(&self) -> Span

Gets the span of the node.

Source

fn token<C>(&self) -> Option<C>
where C: AstToken<N::Token>,

Gets the first token child that can cast to an expected type.

Source

fn tokens<'a, C>(&'a self) -> impl Iterator<Item = C>
where C: AstToken<N::Token>, N: 'a,

Gets all the token children that can cast to an expected type.

Source

fn last_token<C>(&self) -> Option<C>
where C: AstToken<N::Token>,

Gets the last token of the node and attempts to cast it to an expected type.

Returns None if there is no last token or if it cannot be casted to the expected type.

Source

fn child<C>(&self) -> Option<C>
where C: AstNode<N>,

Gets the first node child that can cast to an expected type.

Source

fn children<'a, C>(&'a self) -> impl Iterator<Item = C>
where C: AstNode<N>, N: 'a,

Gets all node children that can cast to an expected type.

Source

fn parent<'a, P>(&self) -> Option<P>
where P: AstNode<N>, N: 'a,

Gets the parent of the node if the underlying tree node has a parent.

Returns None if the node has no parent or if the parent node is not of the expected type.

Source

fn scope_span<O, C>(&self) -> Option<Span>
where O: AstToken<N::Token>, C: AstToken<N::Token>,

Calculates the span of a scope given the node where the scope is visible.

Returns None if the node does not contain the open and close tokens as children.

Source

fn braced_scope_span(&self) -> Option<Span>

Gets the interior span of child opening and closing brace tokens for the node.

The span starts from immediately after the opening brace token and ends immediately before the closing brace token.

Returns None if the node does not contain child brace tokens.

Source

fn heredoc_scope_span(&self) -> Option<Span>

Gets the interior span of child opening and closing heredoc tokens for the node.

The span starts from immediately after the opening heredoc token and ends immediately before the closing heredoc token.

Returns None if the node does not contain child heredoc tokens.

Source

fn descendants<'a, D>(&'a self) -> impl Iterator<Item = D>
where D: AstNode<N>, N: 'a,

Gets the node descendants (including self) from this node that can be cast to the expected type.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<N: TreeNode> AstNode<N> for Expr<N>

Source§

impl<N: TreeNode> AstNode<N> for MetadataValue<N>

Source§

impl<N: TreeNode> AstNode<N> for PlaceholderOption<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsItemValue<N>

Source§

impl<N: TreeNode> AstNode<N> for Document<N>

Source§

impl<N: TreeNode> AstNode<N> for VersionStatement<N>

Source§

impl<N: TreeNode> AstNode<N> for wdl_ast::v1::requirements::item::Container<N>

Source§

impl<N: TreeNode> AstNode<N> for wdl_ast::v1::runtime::item::Container<N>

Source§

impl<N: TreeNode> AstNode<N> for AccessExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for AdditionExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for ArrayType<N>

Source§

impl<N: TreeNode> AstNode<N> for Ast<N>

Source§

impl<N: TreeNode> AstNode<N> for BoundDecl<N>

Source§

impl<N: TreeNode> AstNode<N> for CallAfter<N>

Source§

impl<N: TreeNode> AstNode<N> for CallAlias<N>

Source§

impl<N: TreeNode> AstNode<N> for CallExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for CallInputItem<N>

Source§

impl<N: TreeNode> AstNode<N> for CallStatement<N>

Source§

impl<N: TreeNode> AstNode<N> for CallTarget<N>

Source§

impl<N: TreeNode> AstNode<N> for CommandSection<N>

Source§

impl<N: TreeNode> AstNode<N> for ConditionalStatement<N>

Source§

impl<N: TreeNode> AstNode<N> for DefaultOption<N>

Source§

impl<N: TreeNode> AstNode<N> for DivisionExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for EqualityExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for ExponentiationExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for GreaterEqualExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for GreaterExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for IfExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for ImportAlias<N>

Source§

impl<N: TreeNode> AstNode<N> for ImportStatement<N>

Source§

impl<N: TreeNode> AstNode<N> for IndexExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for InequalityExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for InputSection<N>

Source§

impl<N: TreeNode> AstNode<N> for LessEqualExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for LessExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralArray<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralBoolean<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralFloat<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralHints<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralHintsItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralInput<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralInputItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralInteger<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralMap<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralMapItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralNone<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralNull<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralObject<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralObjectItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralOutput<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralOutputItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralPair<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralString<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralStruct<N>

Source§

impl<N: TreeNode> AstNode<N> for LiteralStructItem<N>

Source§

impl<N: TreeNode> AstNode<N> for LogicalAndExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for LogicalNotExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for LogicalOrExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for MapType<N>

Source§

impl<N: TreeNode> AstNode<N> for MetadataArray<N>

Source§

impl<N: TreeNode> AstNode<N> for MetadataObject<N>

Source§

impl<N: TreeNode> AstNode<N> for MetadataObjectItem<N>

Source§

impl<N: TreeNode> AstNode<N> for MetadataSection<N>

Source§

impl<N: TreeNode> AstNode<N> for ModuloExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for MultiplicationExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for NameRefExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for NegationExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for ObjectType<N>

Source§

impl<N: TreeNode> AstNode<N> for OutputSection<N>

Source§

impl<N: TreeNode> AstNode<N> for PairType<N>

Source§

impl<N: TreeNode> AstNode<N> for ParameterMetadataSection<N>

Source§

impl<N: TreeNode> AstNode<N> for ParenthesizedExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for Placeholder<N>

Source§

impl<N: TreeNode> AstNode<N> for PrimitiveType<N>

Source§

impl<N: TreeNode> AstNode<N> for RequirementsItem<N>

Source§

impl<N: TreeNode> AstNode<N> for RequirementsSection<N>

Source§

impl<N: TreeNode> AstNode<N> for RuntimeItem<N>

Source§

impl<N: TreeNode> AstNode<N> for RuntimeSection<N>

Source§

impl<N: TreeNode> AstNode<N> for ScatterStatement<N>

Source§

impl<N: TreeNode> AstNode<N> for SepOption<N>

Source§

impl<N: TreeNode> AstNode<N> for StructDefinition<N>

Source§

impl<N: TreeNode> AstNode<N> for SubtractionExpr<N>

Source§

impl<N: TreeNode> AstNode<N> for TaskDefinition<N>

Source§

impl<N: TreeNode> AstNode<N> for TaskHintsItem<N>

Source§

impl<N: TreeNode> AstNode<N> for TaskHintsSection<N>

Source§

impl<N: TreeNode> AstNode<N> for TrueFalseOption<N>

Source§

impl<N: TreeNode> AstNode<N> for TypeRef<N>

Source§

impl<N: TreeNode> AstNode<N> for UnboundDecl<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowDefinition<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsArray<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsItem<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsObject<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsObjectItem<N>

Source§

impl<N: TreeNode> AstNode<N> for WorkflowHintsSection<N>