Add missing arity checks to compiler series
This commit is contained in:
		
							parent
							
								
									9d16d3840a
								
							
						
					
					
						commit
						f97d3f913c
					
				@ -58,7 +58,7 @@ void definition_defn::generate_llvm(llvm_context& ctx) {
 | 
			
		||||
 | 
			
		||||
void definition_data::insert_types(type_env_ptr& env) {
 | 
			
		||||
    this->env = env;
 | 
			
		||||
    env->bind_type(name, type_ptr(new type_data(name)));
 | 
			
		||||
    env->bind_type(name, type_ptr(new type_data(name, vars.size())));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void definition_data::insert_constructors() const {
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ type_ptr parsed_type_app::to_type(
 | 
			
		||||
    if(parent_type == nullptr) throw 0;
 | 
			
		||||
    type_base* base_type;
 | 
			
		||||
    if(!(base_type = dynamic_cast<type_base*>(parent_type.get()))) throw 0;
 | 
			
		||||
    if(base_type->arity != arguments.size()) throw 0;
 | 
			
		||||
 | 
			
		||||
    type_app* new_app = new type_app(std::move(parent_type));
 | 
			
		||||
    type_ptr to_return(new_app);
 | 
			
		||||
 | 
			
		||||
@ -53,8 +53,8 @@ struct type_data : public type_base {
 | 
			
		||||
 | 
			
		||||
    std::map<std::string, constructor> constructors;
 | 
			
		||||
 | 
			
		||||
    type_data(std::string n)
 | 
			
		||||
        : type_base(std::move(n)) {}
 | 
			
		||||
    type_data(std::string n, int32_t a = 0)
 | 
			
		||||
        : type_base(std::move(n), a) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct type_arr : public type {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user