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();
45 auto& world = type->
world();
46 auto pass_lists = arg->
projs();
49 for (
auto pass_list_def : pass_lists) {
52 passes.insert(passes.end(), pass_list_defs.begin(), pass_list_defs.end());
55 for (
auto pass : passes) app_list = world.app(app_list, pass);
auto projs(F f) const
Splits this Def via Def::projections into an Array (if A == std::dynamic_extent) or std::array (other...
Helper class to retrieve Infer::arg if present.
const Def * call(Id id, Args &&... args)
Complete curried call of annexes obeying implicits.
#define MIM_compile_NORMALIZER_IMPL
Ref normalize_combined_phase(Ref type, Ref, Ref arg)
combined_phase (phase_list phase1 ... phasen) -> phases_to_phase n (phase1, ..., phasen)
Ref normalize_pass_phase(Ref type, Ref, Ref arg)
Ref normalize_single_pass_phase(Ref type, Ref, Ref arg)
single_pass_phase pass -> passes_to_phase 1 pass
Ref normalize_combine_pass_list(Ref type, Ref, Ref arg)
combine_pass_list K (pass_list pass11 ... pass1N) ... (pass_list passK1 ... passKM) = pass_list pass1...
std::pair< Ref, DefVec > collect_args(Ref def)
Helper function to cope with the fact that normalizers take all arguments and not only its axiom argu...
static constexpr flags_t Base