mirror of
https://github.com/erg-lang/erg.git
synced 2025-10-01 05:11:09 +00:00
Fix a scope escaping bug
This commit is contained in:
parent
fee464945b
commit
06e0b9c1ae
3 changed files with 18 additions and 15 deletions
|
@ -1036,7 +1036,10 @@ impl Context {
|
|||
}
|
||||
|
||||
pub(crate) fn check_decls_and_pop(&mut self) -> Result<Context, TyCheckErrors> {
|
||||
self.check_decls()?;
|
||||
self.check_decls().map_err(|errs| {
|
||||
self.pop();
|
||||
errs
|
||||
})?;
|
||||
Ok(self.pop())
|
||||
}
|
||||
|
||||
|
|
|
@ -642,9 +642,9 @@ impl Context {
|
|||
self.grow(__name__, ContextKind::Proc, vis, Some(tv_cache));
|
||||
let (obj, const_t) = match self.eval_const_block(&def.body.block) {
|
||||
Ok(obj) => (obj.clone(), v_enum(set! {obj})),
|
||||
Err(e) => {
|
||||
Err(errs) => {
|
||||
self.pop();
|
||||
return Err(e);
|
||||
return Err(errs);
|
||||
}
|
||||
};
|
||||
if let Some(spec) = sig.return_t_spec.as_ref() {
|
||||
|
@ -657,14 +657,14 @@ impl Context {
|
|||
PreRegister,
|
||||
false,
|
||||
)
|
||||
.map_err(|err| {
|
||||
.map_err(|errs| {
|
||||
self.pop();
|
||||
err
|
||||
errs
|
||||
})?;
|
||||
self.sub_unify(&const_t, &spec_t, def.body.loc(), None)
|
||||
.map_err(|err| {
|
||||
.map_err(|errs| {
|
||||
self.pop();
|
||||
err
|
||||
errs
|
||||
})?;
|
||||
}
|
||||
self.pop();
|
||||
|
@ -694,14 +694,14 @@ impl Context {
|
|||
PreRegister,
|
||||
false,
|
||||
)
|
||||
.map_err(|err| {
|
||||
.map_err(|errs| {
|
||||
self.pop();
|
||||
err
|
||||
errs
|
||||
})?;
|
||||
self.sub_unify(&const_t, &spec_t, def.body.loc(), None)
|
||||
.map_err(|err| {
|
||||
.map_err(|errs| {
|
||||
self.pop();
|
||||
err
|
||||
errs
|
||||
})?;
|
||||
}
|
||||
self.pop();
|
||||
|
|
|
@ -469,9 +469,9 @@ impl ASTLowerer {
|
|||
hir::Record::new(record.l_brace, record.r_brace, hir::RecordAttrs::empty());
|
||||
self.ctx.grow("<record>", ContextKind::Dummy, Private, None);
|
||||
for attr in record.attrs.into_iter() {
|
||||
let attr = self.lower_def(attr).map_err(|e| {
|
||||
let attr = self.lower_def(attr).map_err(|errs| {
|
||||
self.pop_append_errs();
|
||||
e
|
||||
errs
|
||||
})?;
|
||||
hir_record.push(attr);
|
||||
}
|
||||
|
@ -998,9 +998,9 @@ impl ASTLowerer {
|
|||
if let Err(errs) = self.ctx.preregister(&lambda.body) {
|
||||
self.errs.extend(errs);
|
||||
}
|
||||
let body = self.lower_block(lambda.body).map_err(|e| {
|
||||
let body = self.lower_block(lambda.body).map_err(|errs| {
|
||||
self.pop_append_errs();
|
||||
e
|
||||
errs
|
||||
})?;
|
||||
let (non_default_params, default_params): (Vec<_>, Vec<_>) = self
|
||||
.ctx
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue