54 , base_(
conv.pending_.size())
55 , old_liftable_(
conv.liftable_) {
57 conv_.liftable_ = liftable;
60 assert(conv_.pending_.size() == base_ &&
"pending calls must have been wire()d");
62 conv_.liftable_ = old_liftable_;
65 size_t base()
const {
return base_; }
79 const Def*
map(
const Def*,
const Def*)
final;
82 const Def* convert(
Lam*);
84 const Def* lift(
const Def* k,
const Def* arg,
const App* old_app);
86 const Def* wire(
size_t base,
const Def* body);
88 Vector<Pending> pending_;
90 bool liftable_ =
false;
RWPhase(World &world, std::string name, Analysis *analysis=nullptr)
World & world()=delete
Hides both and forbids direct access.
virtual const Def * map(const Def *old_def, const Def *new_def)
The World represents the whole program and manages creation of MimIR nodes (Defs).
const Def * rewrite_mut_Lam(Lam *) final
Conv(World &world, flags_t annex)
const Def * rewrite_imm_App(const App *) final
const Def * map(const Def *, const Def *) final
Sets< const Var >::Set Vars