diff options
Diffstat (limited to 'compiler/src/dotty/tools/dotc')
-rw-r--r-- | compiler/src/dotty/tools/dotc/typer/Applications.scala | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Applications.scala b/compiler/src/dotty/tools/dotc/typer/Applications.scala index 5dcf16b62..310121f31 100644 --- a/compiler/src/dotty/tools/dotc/typer/Applications.scala +++ b/compiler/src/dotty/tools/dotc/typer/Applications.scala @@ -217,7 +217,14 @@ trait Applications extends Compatibility { self: Typer with Dynamic => // apply the result type constraint, unless method type is dependent val resultApprox = resultTypeApprox(methType) val savedConstraint = ctx.typerState.constraint - if (!constrainResult(resultApprox, resultType)) + if (!resultApprox.isInstanceOf[PolyType] && + // temporary fix before #2121 is in. The problem here is that errors in the code + // can lead to the result type begin higher-kinded. Then normalize gets confused + // and we end up with an assertion violation "s"inconsistent: no typevars were + // added to committable constraint". Once we distinguish between type lambdas + // and polytypes again this should hopefully become unnecessary. The error + // was triggered by neg/enums.scala. + !constrainResult(resultApprox, resultType)) if (ctx.typerState.isCommittable) // defer the problem until after the application; // it might be healed by an implicit conversion |