Update lower.rs

This commit is contained in:
Shunsuke Shibayama 2022-12-21 14:21:08 +09:00
parent 08aa4054a1
commit fb50e77cea

View file

@ -267,8 +267,8 @@ impl ASTLowerer {
} }
fn pop_append_errs(&mut self) { fn pop_append_errs(&mut self) {
if let Err(mut errs) = self.ctx.check_decls_and_pop() { if let Err(errs) = self.ctx.check_decls_and_pop() {
self.errs.append(&mut errs); self.errs.extend(errs);
} }
} }
@ -1329,14 +1329,18 @@ impl ASTLowerer {
self.errs.extend(errs); self.errs.extend(errs);
} }
}, },
ast::ClassAttr::Decl(decl) => { ast::ClassAttr::Decl(decl) => match self.lower_type_asc(decl) {
let decl = self.lower_type_asc(decl)?; Ok(decl) => {
hir_methods.push(hir::Expr::TypeAsc(decl)); hir_methods.push(hir::Expr::TypeAsc(decl));
} }
Err(errs) => {
self.errs.extend(errs);
}
},
} }
} }
if let Err(mut errs) = self.ctx.check_decls() { if let Err(errs) = self.ctx.check_decls() {
self.errs.append(&mut errs); self.errs.extend(errs);
} }
if let Some((trait_, _)) = &impl_trait { if let Some((trait_, _)) = &impl_trait {
self.check_override(&class, Some(trait_)); self.check_override(&class, Some(trait_));
@ -1438,14 +1442,18 @@ impl ASTLowerer {
self.errs.extend(errs); self.errs.extend(errs);
} }
}, },
ast::ClassAttr::Decl(decl) => { ast::ClassAttr::Decl(decl) => match self.lower_type_asc(decl) {
let decl = self.lower_type_asc(decl)?; Ok(decl) => {
hir_methods.push(hir::Expr::TypeAsc(decl)); hir_methods.push(hir::Expr::TypeAsc(decl));
} }
Err(errs) => {
self.errs.extend(errs);
}
},
} }
} }
if let Err(mut errs) = self.ctx.check_decls() { if let Err(errs) = self.ctx.check_decls() {
self.errs.append(&mut errs); self.errs.extend(errs);
} }
self.push_patch(); self.push_patch();
} }
@ -1934,8 +1942,8 @@ impl ASTLowerer {
} }
} }
self.ctx.clear_invalid_vars(); self.ctx.clear_invalid_vars();
self.ctx.check_decls().unwrap_or_else(|mut errs| { self.ctx.check_decls().unwrap_or_else(|errs| {
self.errs.append(&mut errs); self.errs.extend(errs);
}); });
let hir = HIR::new(ast.name, module); let hir = HIR::new(ast.name, module);
log!(info "HIR (not resolved, current errs: {}):\n{hir}", self.errs.len()); log!(info "HIR (not resolved, current errs: {}):\n{hir}", self.errs.len());