From 629006b3e5c456d5073e5eda2fa9c39ddc32a135 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Sun, 21 Nov 2021 19:16:45 +0100 Subject: [PATCH] Remove now-unnecessary `avoid` when typing closures This is no longer needed thanks to the improvements to avoidance in this PR. --- compiler/src/dotty/tools/dotc/typer/Namer.scala | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/typer/Namer.scala b/compiler/src/dotty/tools/dotc/typer/Namer.scala index aa213d03b4e9..073ad0704640 100644 --- a/compiler/src/dotty/tools/dotc/typer/Namer.scala +++ b/compiler/src/dotty/tools/dotc/typer/Namer.scala @@ -1479,22 +1479,7 @@ class Namer { typer: Typer => // This case applies if the closure result type contains uninstantiated // type variables. In this case, constrain the closure result from below // by the parameter-capture-avoiding type of the body. - val rhsType = typedAheadExpr(mdef.rhs, tpt.tpe).tpe - - // The following part is important since otherwise we might instantiate - // the closure result type with a plain functon type that refers - // to local parameters. An example where this happens in `dependent-closures.scala` - // If the code after `val rhsType` is commented out, this file fails pickling tests. - // AVOIDANCE TODO: Follow up why this happens, and whether there - // are better ways to achieve this. It would be good if we could get rid of this code. - // It seems at least partially redundant with the nesting level checking on TypeVar - // instantiation. - val hygienicType = TypeOps.avoid(rhsType, termParamss.flatten) - if (!hygienicType.isValueType || !(hygienicType <:< tpt.tpe)) - report.error(i"return type ${tpt.tpe} of lambda cannot be made hygienic;\n" + - i"it is not a supertype of the hygienic type $hygienicType", mdef.srcPos) - //println(i"lifting $rhsType over $termParamss -> $hygienicType = ${tpt.tpe}") - //println(TypeComparer.explained { implicit ctx => hygienicType <:< tpt.tpe }) + typedAheadExpr(mdef.rhs, tpt.tpe).tpe case _ => } WildcardType