DiagnosticKind

Enum DiagnosticKind 

Source
pub enum DiagnosticKind {
Show 68 variants UnclosedTree, UnclosedSequence, UnclosedAlternation, UnclosedRegex, ExpectedExpression, ExpectedTypeName, ExpectedCaptureName, ExpectedFieldName, ExpectedSubtype, ExpectedPredicateValue, EmptyTree, EmptyAnonymousNode, EmptySequence, EmptyAlternation, BareIdentifier, InvalidSeparator, AnchorInAlternation, InvalidFieldEquals, InvalidSupertypeSyntax, InvalidTypeAnnotationSyntax, ErrorTakesNoArguments, RefCannotHaveChildren, ErrorMissingOutsideParens, UnsupportedPredicate, UnexpectedToken, CaptureWithoutTarget, LowercaseBranchLabel, CaptureNameHasDots, CaptureNameHasHyphens, CaptureNameUppercase, DefNameLowercase, DefNameHasSeparators, BranchLabelHasSeparators, FieldNameHasDots, FieldNameHasHyphens, FieldNameUppercase, TypeNameInvalidChars, TreeSitterSequenceSyntax, NegationSyntaxDeprecated, DuplicateDefinition, UndefinedReference, MixedAltBranches, RecursionNoEscape, DirectRecursion, FieldSequenceValue, AnchorWithoutContext, IncompatibleTypes, MultiCaptureQuantifierNoName, UnusedBranchLabels, StrictDimensionalityViolation, MultiElementScalarCapture, UncapturedOutputWithCaptures, AmbiguousUncapturedOutputs, DuplicateCaptureInScope, IncompatibleCaptureTypes, IncompatibleStructShapes, PredicateOnNonLeaf, EmptyRegex, RegexBackreference, RegexLookaround, RegexNamedCapture, RegexSyntaxError, UnknownNodeType, UnknownField, FieldNotOnNodeType, InvalidFieldChildType, InvalidChildType, UnnamedDef,
}
Expand description

Diagnostic kinds ordered by priority (highest priority first).

When two diagnostics have overlapping spans, the higher-priority one suppresses the lower-priority one. This prevents cascading error noise.

Priority rationale:

  • Unclosed delimiters cause massive cascading errors downstream
  • Expected token errors are root causes the user should fix first
  • Invalid syntax usage is a specific mistake at a location
  • Naming validation errors are convention violations
  • Semantic errors assume valid syntax
  • Structural observations are often consequences of earlier errors

Variants§

§

UnclosedTree

§

UnclosedSequence

§

UnclosedAlternation

§

UnclosedRegex

§

ExpectedExpression

§

ExpectedTypeName

§

ExpectedCaptureName

§

ExpectedFieldName

§

ExpectedSubtype

§

ExpectedPredicateValue

§

EmptyTree

§

EmptyAnonymousNode

§

EmptySequence

§

EmptyAlternation

§

BareIdentifier

§

InvalidSeparator

§

AnchorInAlternation

§

InvalidFieldEquals

§

InvalidSupertypeSyntax

§

InvalidTypeAnnotationSyntax

§

ErrorTakesNoArguments

§

RefCannotHaveChildren

§

ErrorMissingOutsideParens

§

UnsupportedPredicate

§

UnexpectedToken

§

CaptureWithoutTarget

§

LowercaseBranchLabel

§

CaptureNameHasDots

§

CaptureNameHasHyphens

§

CaptureNameUppercase

§

DefNameLowercase

§

DefNameHasSeparators

§

BranchLabelHasSeparators

§

FieldNameHasDots

§

FieldNameHasHyphens

§

FieldNameUppercase

§

TypeNameInvalidChars

§

TreeSitterSequenceSyntax

§

NegationSyntaxDeprecated

§

DuplicateDefinition

§

UndefinedReference

§

MixedAltBranches

§

RecursionNoEscape

§

DirectRecursion

§

FieldSequenceValue

§

AnchorWithoutContext

§

IncompatibleTypes

§

MultiCaptureQuantifierNoName

§

UnusedBranchLabels

§

StrictDimensionalityViolation

§

MultiElementScalarCapture

§

UncapturedOutputWithCaptures

§

AmbiguousUncapturedOutputs

§

DuplicateCaptureInScope

§

IncompatibleCaptureTypes

§

IncompatibleStructShapes

§

PredicateOnNonLeaf

§

EmptyRegex

§

RegexBackreference

§

RegexLookaround

§

RegexNamedCapture

§

RegexSyntaxError

§

UnknownNodeType

§

UnknownField

§

FieldNotOnNodeType

§

InvalidFieldChildType

§

InvalidChildType

§

UnnamedDef

Implementations§

Source§

impl DiagnosticKind

Source

pub fn default_severity(&self) -> Severity

Default severity for this kind. Can be overridden by policy.

Source

pub fn suppresses(&self, other: &DiagnosticKind) -> bool

Whether this kind suppresses other when spans overlap.

Uses enum discriminant ordering: lower position = higher priority. A higher-priority diagnostic suppresses lower-priority ones in the same span.

Source

pub fn is_structural_error(&self) -> bool

Structural errors are Unclosed* - they cause cascading errors but should be suppressed by root-cause errors at the same position.

Source

pub fn is_root_cause_error(&self) -> bool

Root cause errors - user omitted something required. These suppress structural errors at the same position.

Source

pub fn is_consequence_error(&self) -> bool

Consequence errors - often caused by earlier parse errors. These get suppressed when any root-cause or structural error exists.

Source

pub fn default_hint(&self) -> Option<&'static str>

Default hint for this kind, automatically included in diagnostics. Call sites can add additional hints for context-specific information.

Source

pub fn fallback_message(&self) -> &'static str

Base message for this diagnostic kind, used when no custom message is provided.

Source

pub fn custom_message(&self) -> String

Template for custom messages. Contains {} placeholder for caller-provided detail.

Source

pub fn message(&self, msg: Option<&str>) -> String

Render the final message.

  • None → returns fallback_message()
  • Some(detail) → returns custom_message() with {} replaced by detail

Trait Implementations§

Source§

impl Clone for DiagnosticKind

Source§

fn clone(&self) -> DiagnosticKind

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 Debug for DiagnosticKind

Source§

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

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

impl Hash for DiagnosticKind

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 Ord for DiagnosticKind

Source§

fn cmp(&self, other: &DiagnosticKind) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for DiagnosticKind

Source§

fn eq(&self, other: &DiagnosticKind) -> 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 PartialOrd for DiagnosticKind

Source§

fn partial_cmp(&self, other: &DiagnosticKind) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for DiagnosticKind

Source§

impl Eq for DiagnosticKind

Source§

impl StructuralPartialEq for DiagnosticKind

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, 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> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
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<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.