Fix minor bugs

* Fix Lambda parsing bugs
* Fix a bug that is registered as parameters instead of variables
* Fix Lambda formatting
This commit is contained in:
Shunsuke Shibayama 2022-08-28 10:34:12 +09:00
parent 259ba2c172
commit 49fb4848a2
6 changed files with 9 additions and 15 deletions

10
Cargo.lock generated
View file

@ -15,7 +15,7 @@ dependencies = [
[[package]] [[package]]
name = "erg" name = "erg"
version = "0.2.8" version = "0.3.0"
dependencies = [ dependencies = [
"erg_common", "erg_common",
"erg_compiler", "erg_compiler",
@ -25,14 +25,14 @@ dependencies = [
[[package]] [[package]]
name = "erg_common" name = "erg_common"
version = "0.2.8" version = "0.3.0"
dependencies = [ dependencies = [
"atty", "atty",
] ]
[[package]] [[package]]
name = "erg_compiler" name = "erg_compiler"
version = "0.2.8" version = "0.3.0"
dependencies = [ dependencies = [
"erg_common", "erg_common",
"erg_parser", "erg_parser",
@ -41,14 +41,14 @@ dependencies = [
[[package]] [[package]]
name = "erg_parser" name = "erg_parser"
version = "0.2.8" version = "0.3.0"
dependencies = [ dependencies = [
"erg_common", "erg_common",
] ]
[[package]] [[package]]
name = "erg_type" name = "erg_type"
version = "0.2.8" version = "0.3.0"
dependencies = [ dependencies = [
"erg_common", "erg_common",
] ]

View file

@ -901,7 +901,7 @@ impl Context {
return Some((t, ctx)); return Some((t, ctx));
} }
} }
_ => todo!(), other => todo!("{other}"),
} }
if let Some(outer) = &self.outer { if let Some(outer) = &self.outer {
outer.rec_get_nominal_type_ctx(typ) outer.rec_get_nominal_type_ctx(typ)

View file

@ -170,7 +170,7 @@ impl Context {
} }
let vis = ident.vis(); let vis = ident.vis();
let vi = VarInfo::new(generalized, muty, vis, VarKind::Defined(id)); let vi = VarInfo::new(generalized, muty, vis, VarKind::Defined(id));
self.params.push((Some(ident.name.clone()), vi)); self.locals.insert(ident.name.clone(), vi);
Ok(()) Ok(())
} }
} }

View file

@ -1136,8 +1136,7 @@ pub struct Def {
impl NestedDisplay for Def { impl NestedDisplay for Def {
fn fmt_nest(&self, f: &mut fmt::Formatter<'_>, level: usize) -> fmt::Result { fn fmt_nest(&self, f: &mut fmt::Formatter<'_>, level: usize) -> fmt::Result {
self.sig.fmt_nest(f, level)?; writeln!(f, "{} {}", self.sig, self.body.op.content)?;
writeln!(f, " {}", self.body.op.content)?;
self.body.block.fmt_nest(f, level + 1) self.body.block.fmt_nest(f, level + 1)
} }
} }

View file

@ -2389,8 +2389,7 @@ pub struct Def {
impl NestedDisplay for Def { impl NestedDisplay for Def {
fn fmt_nest(&self, f: &mut fmt::Formatter<'_>, level: usize) -> fmt::Result { fn fmt_nest(&self, f: &mut fmt::Formatter<'_>, level: usize) -> fmt::Result {
self.sig.fmt_nest(f, level)?; writeln!(f, "{} {}", self.sig, self.body.op.content)?;
writeln!(f, " {}", self.body.op.content)?;
self.body.block.fmt_nest(f, level + 1) self.body.block.fmt_nest(f, level + 1)
} }
} }

View file

@ -1645,10 +1645,6 @@ impl Parser {
self.errs.push(err); self.errs.push(err);
return Err(()); return Err(());
} }
// REVIEW: need this?
while self.cur_is(Newline) {
self.skip();
}
let body = self.try_reduce_block().map_err(|_| self.stack_dec())?; let body = self.try_reduce_block().map_err(|_| self.stack_dec())?;
self.counter.inc(); self.counter.inc();
self.level -= 1; self.level -= 1;