diff options
author | odersky <odersky@gmail.com> | 2015-11-17 22:02:10 +0100 |
---|---|---|
committer | odersky <odersky@gmail.com> | 2015-11-17 22:02:10 +0100 |
commit | da97bfb6e1284f906d529b62ca4c1c69e15c140e (patch) | |
tree | ec57941728389450297195da83377033db0691a7 /src/dotty | |
parent | 57d05d3cc2456bcb7bfa743ad664690ad5a3aaac (diff) | |
parent | 3ec504cf4586dc99964b1b049eae745077c20b37 (diff) | |
download | dotty-da97bfb6e1284f906d529b62ca4c1c69e15c140e.tar.gz dotty-da97bfb6e1284f906d529b62ca4c1c69e15c140e.tar.bz2 dotty-da97bfb6e1284f906d529b62ca4c1c69e15c140e.zip |
Merge pull request #957 from dotty-staging/fix-#938
Fix #938
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/dotc/core/Phases.scala | 4 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/TypeComparer.scala | 3 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/TypeAssigner.scala | 7 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/core/Phases.scala b/src/dotty/tools/dotc/core/Phases.scala index 8d5ec08f7..970a9297a 100644 --- a/src/dotty/tools/dotc/core/Phases.scala +++ b/src/dotty/tools/dotc/core/Phases.scala @@ -7,6 +7,7 @@ import dotty.tools.backend.jvm.{LabelDefs, GenBCode} import util.DotClass import DenotTransformers._ import Denotations._ +import Decorators._ import config.Printers._ import scala.collection.mutable.{ListBuffer, ArrayBuffer} import dotty.tools.dotc.transform.TreeTransforms.{TreeTransformer, MiniPhase, TreeTransform} @@ -121,10 +122,9 @@ object Phases { phase } squashedPhases += phaseToAdd - val shouldAddYCheck = YCheckAfter.exists(nm => phaseToAdd.phaseName.contains(nm)) || YCheckAll + val shouldAddYCheck = YCheckAfter.containsPhase(phaseToAdd) || YCheckAll if (shouldAddYCheck) { val checker = new TreeChecker - squashedPhases += checker } } diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala index 2045de3ce..6e2346710 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 } diff --git a/src/dotty/tools/dotc/typer/TypeAssigner.scala b/src/dotty/tools/dotc/typer/TypeAssigner.scala index af5fdd428..f7cda1ef6 100644 --- a/src/dotty/tools/dotc/typer/TypeAssigner.scala +++ b/src/dotty/tools/dotc/typer/TypeAssigner.scala @@ -46,10 +46,9 @@ trait TypeAssigner { // TODO: measure the cost of using `existsPart`, and if necessary replace it // by a `TypeAccumulator` where we have set `stopAtStatic = true`. tp existsPart { - case tp: NamedType => - forbidden contains tp.symbol - case _ => - false + case tp: NamedType => forbidden contains tp.symbol + case tp: ThisType => forbidden contains tp.cls + case _ => false } def apply(tp: Type): Type = tp match { case tp: TermRef if toAvoid(tp) && variance > 0 => |