pub enum ForceCodeResume {
ReifyDrain {
saved: ScopeSnapshot,
then: ReifyResume,
},
WrapAsCode,
IsCodeStaged {
s1: Rc<Exp>,
},
}Expand description
Discriminator for what to do with the Exp produced by a ForceCode
continuation. Different callers want to assemble different surrounding
constructions from the forced Exp.
Variants§
ReifyDrain
We are completing a reifyc-style scope: drain ctx.block into
a Let-chain ending in this Exp, restore the snapshot, dispatch
the original ReifyResume.
Fields
saved: ScopeSnapshotStaging state to restore after draining the block.
then: ReifyResumeWhat surrounding staged Exp the Let-chain slots into.
WrapAsCode
Wrap as Val::Code(exp) and produce Mode::Apply. Used by
LiftRef’s non-Code-v1 branch.
IsCodeStaged
Reflect Exp::IsCode(s1, exp) and produce Mode::Apply. Used by
code?’s Code-first-arg branch — the paper lifts a non-Code v2
via force-code before constructing the staged check, so this
resume runs after force-coding v2 (which may have driven a
lift-Clo η-expansion through the kont stack).