Skip to main content

Parse

Struct Parse 

Source
pub struct Parse<T> { /* private fields */ }
Expand description

The result of parsing: a syntax tree and a collection of errors.

This type is designed to be stored in Salsa databases as it contains the thread-safe GreenNode instead of the non-thread-safe SyntaxNode.

Implementations§

Source§

impl<T> Parse<T>

Source

pub fn new(green: GreenNode, errors: Vec<String>) -> Parse<T>

Create a new Parse result from a GreenNode and errors

Source

pub fn new_with_positioned_errors( green: GreenNode, errors: Vec<String>, positioned_errors: Vec<PositionedParseError>, ) -> Parse<T>

Create a new Parse result from a GreenNode, errors, and positioned errors

Source

pub fn green(&self) -> &GreenNode

Get the green node (thread-safe representation)

Source

pub fn errors(&self) -> &[String]

Get the syntax errors

Source

pub fn positioned_errors(&self) -> &[PositionedParseError]

Get parse errors with position information

Source

pub fn error_messages(&self) -> Vec<String>

Get parse errors as strings (for backward compatibility if needed)

Source

pub fn ok(&self) -> bool

Check if there are any errors

Source

pub fn to_result(self) -> Result<T, ParseError>
where T: AstNode<Language = Lang>,

Convert to a Result, returning the tree if there are no errors

Source

pub fn tree(&self) -> T
where T: AstNode<Language = Lang>,

Get the parsed syntax tree

Returns the syntax tree even if there are parse errors. Use errors() or positioned_errors() to check for errors if needed. This allows for error-resilient tooling that can work with partial/invalid input.

Source

pub fn syntax_node(&self) -> SyntaxNode<Lang>

Get the syntax node

Source§

impl Parse<Deb822>

Source

pub fn parse_deb822(text: &str) -> Parse<Deb822>

Parse deb822 text, returning a Parse result

Source

pub fn reparse(&self, new_text: &str, edit: TextRange) -> Parse<Deb822>

Incrementally reparse after a text edit.

Given the new full text and the range that was edited (in the new text coordinates after the edit has been applied), this tries to reuse unchanged paragraphs from the previous parse and only reparse the affected region.

Falls back to a full reparse if the edit spans the entire file or if incremental reparsing is not beneficial.

Trait Implementations§

Source§

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

Source§

fn clone(&self) -> Parse<T>

Returns a duplicate 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<T> Debug for Parse<T>
where T: Debug,

Source§

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

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

impl<T> PartialEq for Parse<T>
where T: PartialEq,

Source§

fn eq(&self, other: &Parse<T>) -> 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<T> Eq for Parse<T>
where T: Eq,

Source§

impl<T> Send for Parse<T>

Source§

impl<T> StructuralPartialEq for Parse<T>

Source§

impl<T> Sync for Parse<T>

Auto Trait Implementations§

§

impl<T> Freeze for Parse<T>

§

impl<T> RefUnwindSafe for Parse<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for Parse<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Parse<T>

§

impl<T> UnwindSafe for Parse<T>
where T: UnwindSafe,

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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.