cairo_lang_syntax::node

Struct SyntaxNode

source
pub struct SyntaxNode(/* private fields */);
Expand description

SyntaxNode. Untyped view of the syntax tree. Adds parent() and offset() capabilities.

Implementations§

source§

impl SyntaxNode

source

pub fn new_root(db: &dyn SyntaxGroup, file_id: FileId, green: GreenId) -> Self

source

pub fn offset(&self) -> TextOffset

source

pub fn width(&self, db: &dyn SyntaxGroup) -> TextWidth

source

pub fn kind(&self, db: &dyn SyntaxGroup) -> SyntaxKind

source

pub fn span(&self, db: &dyn SyntaxGroup) -> TextSpan

source

pub fn text(&self, db: &dyn SyntaxGroup) -> Option<SmolStr>

Returns the text of the token if this node is a token.

source

pub fn green_node(&self, db: &dyn SyntaxGroup) -> Arc<GreenNode>

source

pub fn span_without_trivia(&self, db: &dyn SyntaxGroup) -> TextSpan

source

pub fn parent(&self) -> Option<SyntaxNode>

source

pub fn position_in_parent(&self, db: &dyn SyntaxGroup) -> Option<usize>

Returns the position of a syntax node in its parent’s children, or None if the node has no parent.

source

pub fn stable_ptr(&self) -> SyntaxStablePtrId

source

pub fn get_terminal_token(&self, db: &dyn SyntaxGroup) -> Option<SyntaxNode>

Gets the inner token from a terminal SyntaxNode. If the given node is not a terminal, returns None.

source

pub fn span_start_without_trivia(&self, db: &dyn SyntaxGroup) -> TextOffset

source

pub fn span_end_without_trivia(&self, db: &dyn SyntaxGroup) -> TextOffset

source

pub fn lookup_offset( &self, db: &dyn SyntaxGroup, offset: TextOffset, ) -> SyntaxNode

Lookups a syntax node using an offset.

source

pub fn lookup_position( &self, db: &dyn SyntaxGroup, position: TextPosition, ) -> SyntaxNode

Lookups a syntax node using a position.

source

pub fn get_text(&self, db: &dyn SyntaxGroup) -> String

Returns all the text under the syntax node. Note that this traverses the syntax tree, and generates a new string, so use responsibly.

source

pub fn get_text_without_inner_commentable_children( &self, db: &dyn SyntaxGroup, ) -> String

Returns all the text under the syntax node. It traverses all the syntax tree of the node, but ignores functions and modules. We ignore those, because if there’s some inner functions or modules, we don’t want to get raw text of them. Comments inside them refer themselves directly, not this SyntaxNode.

source

pub fn get_text_without_all_comment_trivia( &self, db: &dyn SyntaxGroup, ) -> String

Returns all the text of the item without comments trivia. It traverses all the syntax tree of the node.

source

pub fn get_text_without_trivia(self, db: &dyn SyntaxGroup) -> String

Returns all the text under the syntax node, without the outmost trivia (the leading trivia of the first token and the trailing trivia of the last token).

Note that this traverses the syntax tree, and generates a new string, so use responsibly.

source

pub fn get_text_of_span(self, db: &dyn SyntaxGroup, span: TextSpan) -> String

Returns the text under the syntax node, according to the given span.

span is assumed to be contained within the span of self.

Note that this traverses the syntax tree, and generates a new string, so use responsibly.

source

pub fn descendants<'db>( &self, db: &'db dyn SyntaxGroup, ) -> impl Iterator<Item = SyntaxNode> + 'db

Traverse the subtree rooted at the current node (including the current node) in preorder.

This is a shortcut for Self::preorder paired with filtering for WalkEvent::Enter events only.

source

pub fn preorder<'db>(&self, db: &'db dyn SyntaxGroup) -> Preorder<'db>

Traverse the subtree rooted at the current node (including the current node) in preorder, excluding tokens.

source

pub fn tokens<'a>( &'a self, db: &'a dyn SyntaxGroup, ) -> impl Iterator<Item = Self> + 'a

Gets all the leaves of the SyntaxTree, where the self node is the root of a tree.

Trait Implementations§

source§

impl Clone for SyntaxNode

source§

fn clone(&self) -> SyntaxNode

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SyntaxNode

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for SyntaxNode

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for SyntaxNode

source§

fn eq(&self, other: &SyntaxNode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl QueryAttrs for SyntaxNode

Allows querying attributes of a syntax node, any typed node which QueryAttrs is implemented for should be added here.

source§

fn query_attr(&self, db: &dyn SyntaxGroup, attr: &str) -> Vec<Attribute>

Collect all attributes named exactly attr attached to this node.
source§

fn find_attr(&self, db: &dyn SyntaxGroup, attr: &str) -> Option<Attribute>

Find first attribute named exactly attr attached do this node.
source§

fn has_attr(&self, db: &dyn SyntaxGroup, attr: &str) -> bool

Check if this node has an attribute named exactly attr.
source§

fn has_attr_with_arg( &self, db: &dyn SyntaxGroup, attr_name: &str, arg_name: &str, ) -> bool

Checks if the given object has an attribute with the given name and argument.
source§

impl Eq for SyntaxNode

source§

impl StructuralPartialEq for SyntaxNode

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T
where T: ?Sized,

source§

fn upcast(&self) -> &T

source§

impl<T> UpcastMut<T> for T
where T: ?Sized,

source§

fn upcast_mut(&mut self) -> &mut T

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more