pub enum SkipReason {
Show 19 variants
EmptyBody,
BindingOnlyTail,
MissingResolution,
BindingSlotLookupMissing,
PatternSlotShortfall,
BuiltinCtorConstruction,
BuiltinCtorPattern,
UnresolvedCtor,
UnsupportedCallee,
BuiltinRecord,
UnsupportedTry,
UnsupportedTailCall,
UnsupportedList,
UnsupportedTuple,
UnsupportedMap,
UnsupportedInterpolatedStr,
UnsupportedIndependentProduct,
UnresolvedIdent,
UnsupportedOther,
}Expand description
Why a single ResolvedFnDef failed to lower.
One variant per source-level reason — the dominant unsupported shape inside the fn body. Wave PRs sequentially remove reasons from the live set; once the set is empty the lowerer is corpus-complete on the shipped examples.
Variants§
EmptyBody
ResolvedFnDef.body had no statements. Frontend should
have rejected this earlier; recorded for safety.
BindingOnlyTail
Single-stmt body whose only statement is a binding (no tail expression). Well-typed Aver can’t produce this, but the lowerer guards anyway.
MissingResolution
Multi-stmt body, FnResolution not populated by the
resolver pass — usually means the fn wasn’t visited.
BindingSlotLookupMissing
Binding referenced by name didn’t resolve to a slot via
FnResolution.local_slots. Indicates a resolver gap.
PatternSlotShortfall
Match arm’s binding_slots had fewer slots than the
pattern’s preorder binding count. Indicates a resolver /
pattern desync.
BuiltinCtorConstruction
Built-in constructor construction (Result.Ok(v),
Option.Some(v), …) — wave 3c-i territory. Built-in
ctors need a typed identity story beyond raw CtorId.
BuiltinCtorPattern
Built-in constructor pattern (Result.Ok(v) -> ...,
Option.Some(v) -> ...) — same wave 3c-i territory as
the construction side.
UnresolvedCtor
Result-like ctor whose CtorId didn’t resolve — usually
a typecheck error that leaked past the gate. Drops the fn
rather than panic on a half-resolved ctor.
UnsupportedCallee
First-class fn value / intrinsic / unresolved call target. Wave 3c-iii (closures / intrinsics) territory.
BuiltinRecord
Record{...} / Record{base & ...} on a built-in type
(HttpResponse, Header, Buffer, …) with no TypeId.
Wave 3c-i / 3c-iv territory depending on the type.
UnsupportedTry
Try (the ? propagation node) — wave 3c-ii.
UnsupportedTailCall
Tail call — wave 3c-iii.
UnsupportedList
List literal — wave 3c-iv.
UnsupportedTuple
Tuple literal — wave 3c-iv.
UnsupportedMap
Map literal — wave 3c-iv.
UnsupportedInterpolatedStr
Interpolated string — wave 3c-iv.
UnsupportedIndependentProduct
IndependentProduct (?! / !) — wave 3c-v.
UnresolvedIdent
Unresolved top-level Ident that survived past the
resolver — usually a resolver gap. Drops the fn rather than
emit a half-resolved name.
UnsupportedOther
A ResolvedExpr variant the lowerer doesn’t recognise at
all. Should be empty after wave 3c lands — anything
here points to a missed variant.
Implementations§
Trait Implementations§
Source§impl Clone for SkipReason
impl Clone for SkipReason
Source§fn clone(&self) -> SkipReason
fn clone(&self) -> SkipReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SkipReason
Source§impl Debug for SkipReason
impl Debug for SkipReason
impl Eq for SkipReason
Source§impl Hash for SkipReason
impl Hash for SkipReason
Source§impl PartialEq for SkipReason
impl PartialEq for SkipReason
impl StructuralPartialEq for SkipReason
Auto Trait Implementations§
impl Freeze for SkipReason
impl RefUnwindSafe for SkipReason
impl Send for SkipReason
impl Sync for SkipReason
impl Unpin for SkipReason
impl UnsafeUnpin for SkipReason
impl UnwindSafe for SkipReason
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.