diff --git a/base/src/main/java/org/aya/resolve/visitor/ExprResolver.java b/base/src/main/java/org/aya/resolve/visitor/ExprResolver.java index cb0fa86c8..8807ae1ea 100644 --- a/base/src/main/java/org/aya/resolve/visitor/ExprResolver.java +++ b/base/src/main/java/org/aya/resolve/visitor/ExprResolver.java @@ -115,11 +115,6 @@ public ExprResolver(@NotNull Context ctx, boolean allowGeneralizing) { return switch (pre(expr)) { case Expr.Do doExpr -> doExpr.update(apply(SourcePos.NONE, doExpr.bindName()), bind(doExpr.binds(), MutableValue.create(ctx))); - case Expr.Lambda lam -> { - var mCtx = MutableValue.create(ctx); - mCtx.update(ctx -> ctx.bind(lam.ref())); - yield lam.update(lam.body().descent(enter(mCtx.get()))); - } case Expr.IrrefutableLam lam -> lam.update(clause(ImmutableSeq.empty(), lam.clause())); case Expr.DepType depType -> { var mCtx = MutableValue.create(ctx); @@ -202,6 +197,8 @@ public ExprResolver(@NotNull Context ctx, boolean allowGeneralizing) { yield match.update(discriminant, clauses, returns); } + // Expr.Lambda is a desugar target, which is produced after resolving. + case Expr.Lambda _ -> Panic.unreachable(); case Expr newExpr -> newExpr.descent(this); }; }