diff options
author | Martin Odersky <odersky@gmail.com> | 2015-01-19 12:59:40 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-01-19 13:01:23 +0100 |
commit | 963af8e852a4234b7739b881dda997a88843ad33 (patch) | |
tree | 0ed031f9516cb0a53c6d7e5592de9e7f5ae329f2 /src/dotty/tools/dotc/core/ConstraintHandling.scala | |
parent | b9d018e7af67428c7fff74ae5ed0c55af9f621ff (diff) | |
download | dotty-963af8e852a4234b7739b881dda997a88843ad33.tar.gz dotty-963af8e852a4234b7739b881dda997a88843ad33.tar.bz2 dotty-963af8e852a4234b7739b881dda997a88843ad33.zip |
Streamline TypeComparer/ConstraintHandling interface.
Diffstat (limited to 'src/dotty/tools/dotc/core/ConstraintHandling.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/ConstraintHandling.scala | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/dotty/tools/dotc/core/ConstraintHandling.scala b/src/dotty/tools/dotc/core/ConstraintHandling.scala index 28a0c87a2..692039b70 100644 --- a/src/dotty/tools/dotc/core/ConstraintHandling.scala +++ b/src/dotty/tools/dotc/core/ConstraintHandling.scala @@ -203,8 +203,7 @@ trait ConstraintHandling { case _ => param.binder.paramBounds(param.paramNum) } - def initialize(pt: PolyType): Boolean = { - //println(i"INIT**! $pt") + def initialize(pt: PolyType): Boolean = checkPropagated(i"initialized $pt") { pt.paramNames.indices.forall { i => val param = PolyParam(pt, i) @@ -217,14 +216,8 @@ trait ConstraintHandling { upper.forall(addOneLowerBound(_, bounds.lo)) } } - } - - protected def constraintImpliesSub(param: PolyParam, tp: Type): Boolean = - isSubTypeWhenFrozen(bounds(param).hi, tp) - - protected def constraintImpliesSuper(param: PolyParam, tp: Type): Boolean = - isSubTypeWhenFrozen(tp, bounds(param).lo) + /** Can `param` be constrained with new bounds? */ final def canConstrain(param: PolyParam): Boolean = !frozenConstraint && (constraint contains param) @@ -249,6 +242,7 @@ trait ConstraintHandling { } } + /** Check that constraint is fully propagated. See comment in Config.checkConstraintsPropagated */ def checkPropagated(msg: => String)(result: Boolean): Boolean = { if (Config.checkConstraintsPropagated && result && addConstraintInvocations == 0) { frozenConstraint = true |