8 auto& world = type->
world();
14 auto arg_cpl = arg->as<
App>();
17 world.ELOG(
"pass_phase expects a pass_list as argument but got {}", arg);
23 auto n = pass_list_defs.size();
30 auto& world = type->
world();
34 auto n = phase_list_defs.size();
47 auto& world = type->
world();
48 auto pass_lists = arg->
projs();
51 for (
auto pass_list_def : pass_lists) {
54 passes.insert(passes.end(), pass_list_defs.begin(), pass_list_defs.end());
57 for (
auto pass : passes) app_list = world.app(app_list, pass);
World & world() const noexcept
auto projs(F f) const
Splits this Def via Def::projections into an Array (if A == std::dynamic_extent) or std::array (other...
const Def * call(Id id, Args &&... args)
Complete curried call of annexes obeying implicits.
#define MIM_compile_NORMALIZER_IMPL
const Def * normalize_single_pass_phase(const Def *type, const Def *, const Def *arg)
single_pass_phase pass -> passes_to_phase 1 pass
const Def * normalize_combined_phase(const Def *type, const Def *, const Def *arg)
combined_phase (phase_list phase1 ... phasen) -> phases_to_phase n (phase1, ..., phasen)
const Def * normalize_combine_pass_list(const Def *type, const Def *, const Def *arg)
combine_pass_list K (pass_list pass11 ... pass1N) ... (pass_list passK1 ... passKM) = pass_list pass1...
const Def * normalize_pass_phase(const Def *type, const Def *, const Def *arg)
Vector< const Def * > DefVec
std::pair< const Def *, DefVec > collect_args(const Def *def)
Helper function to cope with the fact that normalizers take all arguments and not only its axiom argu...
static constexpr flags_t Base