ExprData

Enum ExprData 

Source
pub enum ExprData<'a> {
Show 30 variants DummyExpr, LiteralExpr(Lit), IdentExpr(Spanned<Name>), SysIdentExpr(Spanned<Name>), ThisExpr, DollarExpr, NullExpr, ScopeExpr(Box<Expr<'a>>, Spanned<Name>), IndexExpr { indexee: Box<Expr<'a>>, index: Box<Expr<'a>>, }, UnaryExpr { op: Op, expr: Box<Expr<'a>>, postfix: bool, }, BinaryExpr { op: Op, lhs: Box<Expr<'a>>, rhs: Box<Expr<'a>>, }, TernaryExpr { cond: Box<Expr<'a>>, true_expr: Box<Expr<'a>>, false_expr: Box<Expr<'a>>, }, AssignExpr { op: AssignOp, lhs: Box<Expr<'a>>, rhs: Box<Expr<'a>>, }, CallExpr(Box<Expr<'a>>, Vec<CallArg<'a>>), TypeExpr(Box<Type<'a>>), ConstructorCallExpr(Vec<CallArg<'a>>), ClassNewExpr(Option<Box<Expr<'a>>>), ArrayNewExpr(Box<Expr<'a>>, Option<Box<Expr<'a>>>), EmptyQueueExpr, StreamConcatExpr { slice: Option<StreamConcatSlice<'a>>, exprs: Vec<StreamExpr<'a>>, }, ConcatExpr { repeat: Option<Box<Expr<'a>>>, exprs: Vec<Expr<'a>>, }, MinTypMaxExpr { min: Box<Expr<'a>>, typ: Box<Expr<'a>>, max: Box<Expr<'a>>, }, RangeExpr { mode: RangeMode, lhs: Box<Expr<'a>>, rhs: Box<Expr<'a>>, }, MemberExpr { expr: Box<Expr<'a>>, name: Spanned<Name>, }, PatternExpr(Vec<PatternField<'a>>), InsideExpr(Box<Expr<'a>>, Vec<ValueRange<'a>>), CastExpr(Type<'a>, Box<Expr<'a>>), CastSizeExpr(Box<Expr<'a>>, Box<Expr<'a>>), CastSignExpr(Spanned<TypeSign>, Box<Expr<'a>>), BitsExpr { name: Spanned<Name>, arg: TypeOrExpr<'a>, },
}
Expand description

An expression.

Variants§

§

DummyExpr

§

LiteralExpr(Lit)

§

IdentExpr(Spanned<Name>)

An identifier, like foo.

§

SysIdentExpr(Spanned<Name>)

A system identifier, like $foo.

§

ThisExpr

§

DollarExpr

§

NullExpr

§

ScopeExpr(Box<Expr<'a>>, Spanned<Name>)

§

IndexExpr

Fields

§indexee: Box<Expr<'a>>
§index: Box<Expr<'a>>
§

UnaryExpr

Fields

§op: Op
§expr: Box<Expr<'a>>
§postfix: bool
§

BinaryExpr

Fields

§op: Op
§lhs: Box<Expr<'a>>
§rhs: Box<Expr<'a>>
§

TernaryExpr

Fields

§cond: Box<Expr<'a>>
§true_expr: Box<Expr<'a>>
§false_expr: Box<Expr<'a>>
§

AssignExpr

Fields

§lhs: Box<Expr<'a>>
§rhs: Box<Expr<'a>>
§

CallExpr(Box<Expr<'a>>, Vec<CallArg<'a>>)

§

TypeExpr(Box<Type<'a>>)

§

ConstructorCallExpr(Vec<CallArg<'a>>)

§

ClassNewExpr(Option<Box<Expr<'a>>>)

§

ArrayNewExpr(Box<Expr<'a>>, Option<Box<Expr<'a>>>)

§

EmptyQueueExpr

§

StreamConcatExpr

Fields

§exprs: Vec<StreamExpr<'a>>
§

ConcatExpr

Fields

§repeat: Option<Box<Expr<'a>>>
§exprs: Vec<Expr<'a>>
§

MinTypMaxExpr

Fields

§min: Box<Expr<'a>>
§typ: Box<Expr<'a>>
§max: Box<Expr<'a>>
§

RangeExpr

Fields

§lhs: Box<Expr<'a>>
§rhs: Box<Expr<'a>>
§

MemberExpr

A member expression, like a.b.

Fields

§expr: Box<Expr<'a>>
§

PatternExpr(Vec<PatternField<'a>>)

§

InsideExpr(Box<Expr<'a>>, Vec<ValueRange<'a>>)

§

CastExpr(Type<'a>, Box<Expr<'a>>)

§

CastSizeExpr(Box<Expr<'a>>, Box<Expr<'a>>)

§

CastSignExpr(Spanned<TypeSign>, Box<Expr<'a>>)

§

BitsExpr

A $bits call.

Fields

§arg: TypeOrExpr<'a>

Trait Implementations§

Source§

impl<'a> AcceptVisitor<'a> for ExprData<'a>

Source§

fn accept(&'a self, visitor: &mut dyn Visitor<'a>)

Walk a visitor over the contents of self.
Source§

impl<'a> AnyNodeData for ExprData<'a>

Source§

fn get_name(&self) -> Option<Spanned<Name>>

Get this node’s name, or None if it does not have one.
Source§

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

Describe this node for diagnostics in indefinite form, e.g. “entity”. Read more
Source§

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

Describe this node for diagnostics in definite form, e.g. “entity ‘top’”. Read more
Source§

fn as_data(&self) -> &dyn AnyNodeData
where Self: Sized,

Source§

fn format_indefinite(&self) -> FormatNodeIndefinite<'_>
where Self: Sized,

Describe this node for diagnostics in indefinite form, e.g. “entity”.
Source§

fn format_definite(&self) -> FormatNodeDefinite<'_>
where Self: Sized,

Describe this node for diagnostics in definite form, e.g. “entity ‘top’”.
Source§

fn to_indefinite_string(&self) -> String
where Self: Sized,

Describe this node for diagnostics in indefinite form, e.g. “entity”.
Source§

fn to_definite_string(&self) -> String
where Self: Sized,

Describe this node for diagnostics in definite form, e.g. “entity ‘top’”.
Source§

impl<'a> Clone for ExprData<'a>

Source§

fn clone(&self) -> ExprData<'a>

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<'a> Debug for ExprData<'a>

Source§

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

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

impl<'a> ForEachChild<'a> for ExprData<'a>

Source§

fn for_each_child(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))

Apply a function to each child node.
Source§

impl<'a> ForEachNode<'a> for ExprData<'a>

Source§

fn for_each_node(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))

Apply a function to this node.
Source§

impl<'a> PartialEq for ExprData<'a>

Source§

fn eq(&self, other: &ExprData<'a>) -> 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<'a> Eq for ExprData<'a>

Source§

impl<'a> StructuralPartialEq for ExprData<'a>

Auto Trait Implementations§

§

impl<'a> !Freeze for ExprData<'a>

§

impl<'a> !RefUnwindSafe for ExprData<'a>

§

impl<'a> Send for ExprData<'a>

§

impl<'a> Sync for ExprData<'a>

§

impl<'a> Unpin for ExprData<'a>

§

impl<'a> !UnwindSafe for ExprData<'a>

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