Enum tvix_eval::compiler::TrackedFormal
source · enum TrackedFormal {
NoDefault {
local_idx: LocalIdx,
pattern_entry: PatEntry,
},
WithDefault {
local_idx: LocalIdx,
finalise_request_idx: LocalIdx,
default_expr: Expr,
pattern_entry: PatEntry,
},
}
Expand description
When compiling functions with an argument attribute set destructuring pattern,
we need to do multiple passes over the declared formal arguments when setting
up their local bindings (similarly to let … in
expressions and recursive
attribute sets. For this purpose, this struct is used to represent the two
kinds of formal arguments:
TrackedFormal::NoDefault
is always required and causes an evaluation error if the corresponding attribute is missing in a function call.TrackedFormal::WithDefault
may be missing in the passed attribute set— in which case adefault_expr
will be evaluated and placed in the formal argument’s local variable slot.
Variants§
Implementations§
source§impl TrackedFormal
impl TrackedFormal
Auto Trait Implementations§
impl Freeze for TrackedFormal
impl !RefUnwindSafe for TrackedFormal
impl !Send for TrackedFormal
impl !Sync for TrackedFormal
impl Unpin for TrackedFormal
impl !UnwindSafe for TrackedFormal
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
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more