pub enum LeafOp<'a> {
FieldAccess {
object: &'a Spanned<Expr>,
field_name: &'a str,
},
MapGet {
map: &'a Spanned<Expr>,
key: &'a Spanned<Expr>,
},
MapSet {
map: &'a Spanned<Expr>,
key: &'a Spanned<Expr>,
value: &'a Spanned<Expr>,
},
VectorNew {
size: &'a Spanned<Expr>,
fill: &'a Spanned<Expr>,
},
VectorSetOrDefaultSameVector {
vector: &'a Spanned<Expr>,
index: &'a Spanned<Expr>,
value: &'a Spanned<Expr>,
},
VectorGetOrDefaultLiteral {
vector: &'a Spanned<Expr>,
index: &'a Spanned<Expr>,
default_literal: &'a Literal,
},
IntModOrDefaultLiteral {
a: &'a Spanned<Expr>,
b: &'a Spanned<Expr>,
default_literal: &'a Literal,
},
ListIndexGet {
list: &'a Spanned<Expr>,
index: &'a Spanned<Expr>,
},
NoneValue,
VariantConstructor {
qualified_type_name: String,
variant_name: String,
},
StaticRef(String),
}Expand description
Small expression-shaped leaf operations shared across backends.
These are still semantic plans, not backend instructions: they recognize common Aver expression shapes whose meaning is clearer than the raw AST.
Variants§
FieldAccess
MapGet
MapSet
VectorNew
VectorSetOrDefaultSameVector
VectorGetOrDefaultLiteral
IntModOrDefaultLiteral
Fused Result.withDefault(Int.mod(a, b), literal) → skip Result allocation.
ListIndexGet
Fused Vector.get(Vector.fromList(list), index) → skip AverVector allocation.
NoneValue
Option.None in non-call position.
VariantConstructor
Nullary variant constructor: Shape.Circle, Domain.Types.TaskStatus.Blocked.
StaticRef(String)
Static module/builtin path not in call position: Fibonacci.fib, List.len.
Trait Implementations§
impl<'a> StructuralPartialEq for LeafOp<'a>
Auto Trait Implementations§
impl<'a> Freeze for LeafOp<'a>
impl<'a> RefUnwindSafe for LeafOp<'a>
impl<'a> Send for LeafOp<'a>
impl<'a> Sync for LeafOp<'a>
impl<'a> Unpin for LeafOp<'a>
impl<'a> UnsafeUnpin for LeafOp<'a>
impl<'a> UnwindSafe for LeafOp<'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