Skip to content

Commit 1d16dd7

Browse files
committed
fix: minor bugs
1 parent 5ef1a5e commit 1d16dd7

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

crates/erg_compiler/context/compare.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use erg_common::dict::Dict;
77
use erg_common::set::Set;
88
use erg_common::style::colors::DEBUG_ERROR;
99
use erg_common::traits::StructuralEq;
10-
use erg_common::{assume_unreachable, log, set, set_recursion_limit};
10+
use erg_common::{assume_unreachable, fmt_vec, log, set, set_recursion_limit};
1111
use erg_common::{Str, Triple};
1212

1313
use crate::context::eval::UndoableLinkedList;
@@ -1548,7 +1548,13 @@ impl Context {
15481548
params: rps,
15491549
},
15501550
) if ln == rn => {
1551-
debug_assert_eq!(lps.len(), rps.len());
1551+
debug_assert_eq!(
1552+
lps.len(),
1553+
rps.len(),
1554+
"[{}], [{}]",
1555+
fmt_vec(lps),
1556+
fmt_vec(rps)
1557+
);
15521558
let mut unified_params = vec![];
15531559
for (lp, rp) in lps.iter().zip(rps.iter()) {
15541560
if let Some(union) = self.union_tp(lp, rp) {

crates/erg_compiler/context/initialize/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,8 @@ impl Context {
11161116
.quantify();
11171117
let subr = move |data: ClosureData, args, _ctx: &Context| {
11181118
let passed = Vec::<TyParam>::from(args);
1119-
let lack = data.nd_params.len() + data.d_params.len() - passed.len();
1119+
let lack =
1120+
(data.nd_params.len() + data.d_params.len()).saturating_sub(passed.len());
11201121
let erased = data
11211122
.d_params
11221123
.clone()

crates/erg_compiler/lower.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,10 @@ impl<A: ASTBuildable> GenericASTLowerer<A> {
562562
let mut new_tuple = vec![];
563563
let (elems, .., paren) = tuple.elems.deconstruct();
564564
let expect_ts = expect.transpose(elems.len());
565-
for (elem, expect) in elems.into_iter().zip(expect_ts) {
565+
for (elem, expect) in elems
566+
.into_iter()
567+
.zip(expect_ts.into_iter().chain(std::iter::repeat(None)))
568+
{
566569
match self.lower_expr(elem.expr, expect.as_ref()) {
567570
Ok(elem) => new_tuple.push(elem),
568571
Err((expr, errs)) => {

0 commit comments

Comments
 (0)