aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/ConstraintHandling.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-19 12:59:40 +0100
committerMartin Odersky <odersky@gmail.com>2015-01-19 13:01:23 +0100
commit963af8e852a4234b7739b881dda997a88843ad33 (patch)
tree0ed031f9516cb0a53c6d7e5592de9e7f5ae329f2 /src/dotty/tools/dotc/core/ConstraintHandling.scala
parentb9d018e7af67428c7fff74ae5ed0c55af9f621ff (diff)
downloaddotty-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.scala12
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