diff --git a/code/compiler/13/ast.cpp b/code/compiler/13/ast.cpp index efa84a4..7efe9b1 100644 --- a/code/compiler/13/ast.cpp +++ b/code/compiler/13/ast.cpp @@ -135,7 +135,8 @@ void ast_binop::compile(const env_ptr& env, std::vector& into) right->compile(env, into); left->compile(env_ptr(new env_offset(1, env)), into); - into.push_back(instruction_ptr(new instruction_pushglobal(op_action(op)))); + auto mangled_name = this->env->get_mangled_name(op_name(op)); + into.push_back(instruction_ptr(new instruction_pushglobal(mangled_name))); into.push_back(instruction_ptr(new instruction_mkapp())); into.push_back(instruction_ptr(new instruction_mkapp())); } diff --git a/code/compiler/13/main.cpp b/code/compiler/13/main.cpp index 19904a3..44fe331 100644 --- a/code/compiler/13/main.cpp +++ b/code/compiler/13/main.cpp @@ -43,9 +43,11 @@ void prelude_types(definition_group& defs, type_env_ptr env) { constexpr binop cmp_ops[] = { EQUALS, LESS_EQUALS }; for(auto& op : number_ops) { env->bind(op_name(op), binop_type, visibility::global); + env->set_mangled_name(op_name(op), op_action(op)); } for(auto& op : cmp_ops) { env->bind(op_name(op), cmp_type, visibility::global); + env->set_mangled_name(op_name(op), op_action(op)); } env->bind("True", bool_type_app, visibility::global);