Properly handle null types in pattern typechecking.
This commit is contained in:
parent
33f8040886
commit
1e5d43e5e8
|
@ -355,10 +355,11 @@ void pattern_constr::find_variables(std::set<std::string>& into) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void pattern_constr::typecheck(type_ptr t, type_mgr& mgr, type_env_ptr& env) const {
|
void pattern_constr::typecheck(type_ptr t, type_mgr& mgr, type_env_ptr& env) const {
|
||||||
type_ptr constructor_type = env->lookup(constr)->instantiate(mgr);
|
type_scheme_ptr constructor_type_scheme = env->lookup(constr);
|
||||||
if(!constructor_type) {
|
if(!constructor_type_scheme) {
|
||||||
throw type_error(std::string("pattern using unknown constructor ") + constr);
|
throw type_error(std::string("pattern using unknown constructor ") + constr);
|
||||||
}
|
}
|
||||||
|
type_ptr constructor_type = constructor_type_scheme->instantiate(mgr);
|
||||||
|
|
||||||
for(auto& param : params) {
|
for(auto& param : params) {
|
||||||
type_arr* arr = dynamic_cast<type_arr*>(constructor_type.get());
|
type_arr* arr = dynamic_cast<type_arr*>(constructor_type.get());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user