pub enum ExprKind<'a, E: ExprNode> {
SizedInt {
value: u64,
size: Option<usize>,
},
Ident(Ident),
Load(LoadNode<'a, E>),
Range(RangeNode<E>),
SubPieceMsb {
src: E,
count: usize,
},
SubPieceLsb {
src: E,
count: usize,
},
FunctionCall {
builtin: Builtin,
args: E::Args,
},
PcodeOp {
id: PCodeOpId,
args: E::Args,
},
Unop {
op: UnaryOperator,
e: E,
},
Binop {
op: BinaryOperator,
lhs: E,
rhs: E,
},
Internal(&'static str),
}Expand description
The shape of one expression node. See ExpressionTy for the meaning of
each variant; this is the same inventory with the children abstracted.
Variants§
SizedInt
An integer literal.
Ident(Ident)
A named storage location.
Load(LoadNode<'a, E>)
*[space]:size ptr.
Range(RangeNode<E>)
value[start, size].
SubPieceMsb
src(count): drop count low bytes.
SubPieceLsb
src:count: keep count low bytes.
FunctionCall
A built-in function.
PcodeOp
A define pcodeop call.
Unop
A unary operator.
Binop
A binary operator.
Internal(&'static str)
A node that has no place in a consumer-form AST: a macro call or a
deferred call. The passes reject it with
PcodeLowerError::InternalNode.
Trait Implementations§
Auto Trait Implementations§
impl<'a, E> Freeze for ExprKind<'a, E>
impl<'a, E> RefUnwindSafe for ExprKind<'a, E>where
LoadNode<'a, E>: RefUnwindSafe,
RangeNode<E>: RefUnwindSafe,
E: RefUnwindSafe,
<E as ExprNode>::Args: RefUnwindSafe,
impl<'a, E> Send for ExprKind<'a, E>
impl<'a, E> Sync for ExprKind<'a, E>
impl<'a, E> Unpin for ExprKind<'a, E>
impl<'a, E> UnsafeUnpin for ExprKind<'a, E>where
LoadNode<'a, E>: UnsafeUnpin,
RangeNode<E>: UnsafeUnpin,
E: UnsafeUnpin,
<E as ExprNode>::Args: UnsafeUnpin,
impl<'a, E> UnwindSafe for ExprKind<'a, E>where
LoadNode<'a, E>: UnwindSafe,
RangeNode<E>: UnwindSafe,
E: UnwindSafe,
<E as ExprNode>::Args: UnwindSafe,
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