aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/OrderingConstraint.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-07-02 16:51:37 +0200
committerMartin Odersky <odersky@gmail.com>2016-07-11 13:35:07 +0200
commitbeff8f857b53096326f62b615250e39386c579c6 (patch)
tree7d39cb1aa1bae7625935ea52517258595b401e9c /src/dotty/tools/dotc/core/OrderingConstraint.scala
parent34a068b7f6039637d6f1330e3d071f5bf75e9cec (diff)
downloaddotty-beff8f857b53096326f62b615250e39386c579c6.tar.gz
dotty-beff8f857b53096326f62b615250e39386c579c6.tar.bz2
dotty-beff8f857b53096326f62b615250e39386c579c6.zip
Avoid orphan parameters in Constraint#replace
The previous implementation of `replace` made it possible that formerly constrained parameters would stay on embedded in bounds of other constraint enrties.
Diffstat (limited to 'src/dotty/tools/dotc/core/OrderingConstraint.scala')
-rw-r--r--src/dotty/tools/dotc/core/OrderingConstraint.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/OrderingConstraint.scala b/src/dotty/tools/dotc/core/OrderingConstraint.scala
index 8dbaee25f..1e284c341 100644
--- a/src/dotty/tools/dotc/core/OrderingConstraint.scala
+++ b/src/dotty/tools/dotc/core/OrderingConstraint.scala
@@ -419,7 +419,7 @@ class OrderingConstraint(private val boundsMap: ParamBounds,
def replaceIn(tp: Type, isUpper: Boolean): Type = tp match {
case `param` => normalize(replacement, isUpper)
case tp: AndOrType if isUpper == tp.isAnd => recombine(tp, replaceIn, isUpper)
- case _ => tp
+ case _ => tp.substParam(param, replacement)
}
bounds.derivedTypeBounds(replaceIn(lo, isUpper = false), replaceIn(hi, isUpper = true))