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
UnaryExpr
BinaryExpr
TernaryExpr
AssignExpr
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
ConcatExpr
MinTypMaxExpr
RangeExpr
MemberExpr
A member expression, like a.b.
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.
Trait Implementations§
Source§impl<'a> AcceptVisitor<'a> for ExprData<'a>
impl<'a> AcceptVisitor<'a> for ExprData<'a>
Source§impl<'a> AnyNodeData for ExprData<'a>
impl<'a> AnyNodeData for ExprData<'a>
Source§fn get_name(&self) -> Option<Spanned<Name>>
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
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
fn fmt_definite(&self, fmt: &mut Formatter<'_>) -> Result
Describe this node for diagnostics in definite form, e.g. “entity
‘top’”. Read more
fn as_data(&self) -> &dyn AnyNodeDatawhere
Self: Sized,
Source§fn format_indefinite(&self) -> FormatNodeIndefinite<'_>where
Self: Sized,
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,
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) -> Stringwhere
Self: Sized,
fn to_indefinite_string(&self) -> Stringwhere
Self: Sized,
Describe this node for diagnostics in indefinite form, e.g. “entity”.
Source§fn to_definite_string(&self) -> Stringwhere
Self: Sized,
fn to_definite_string(&self) -> Stringwhere
Self: Sized,
Describe this node for diagnostics in definite form, e.g. “entity
‘top’”.
Source§impl<'a> ForEachChild<'a> for ExprData<'a>
impl<'a> ForEachChild<'a> for ExprData<'a>
Source§fn for_each_child(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
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>
impl<'a> ForEachNode<'a> for ExprData<'a>
Source§fn for_each_node(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
fn for_each_node(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
Apply a function to this node.
impl<'a> Eq for ExprData<'a>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more