aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeComparer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index a517f4b8c..88f563cb9 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -52,18 +52,12 @@ class TypeComparer(initctx: Context) extends DotClass {
* @pre `param` is in the constraint's domain
*/
def addConstraint1(param: PolyParam, bound: Type, fromBelow: Boolean): Boolean = {
- val pt = param.binder
- val pnum = param.paramNum
- val oldEntries = constraint(pt)
- val oldBounds = oldEntries(pnum).asInstanceOf[TypeBounds]
+ val oldBounds = constraint.bounds(param)
val newBounds =
if (fromBelow) oldBounds.derivedTypeBounds(oldBounds.lo | bound, oldBounds.hi)
else oldBounds.derivedTypeBounds(oldBounds.lo, oldBounds.hi & bound)
- if (oldBounds ne newBounds) {
- val newEntries = oldEntries.clone
- newEntries(pnum) = newBounds
- constraint = constraint.updated(pt, newEntries)
- }
+ if (oldBounds ne newBounds)
+ constraint = constraint.updated(param, newBounds)
isSubType(newBounds.lo, newBounds.hi)
}