From 7c6870e4d5ac3a9206aed16633c5f0a92fc97b5d Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 16 Nov 2015 09:54:10 +0100 Subject: Compensate for getter transform in isSubType test Getters transform `T` to `=> T`. This means that `=> T <: T` might need to be true after getters. Observed in the wild tree checking t938.scala after getters. --- src/dotty/tools/dotc/core/TypeComparer.scala | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala') diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala index 2045de3ce..66965f427 100644 --- a/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/src/dotty/tools/dotc/core/TypeComparer.scala @@ -488,6 +488,9 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling { case _ => tp2 isRef ObjectClass } compareJavaArray + case tp1: ExprType if ctx.phase.id >= ctx.gettersPhase.id => + // getters might have converted T to => T, need to compensate. + isSubType(tp1.widenExpr, tp2) case _ => false } -- cgit v1.2.3