diff options
author | Martin Odersky <odersky@gmail.com> | 2016-07-02 16:51:37 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:35:07 +0200 |
commit | beff8f857b53096326f62b615250e39386c579c6 (patch) | |
tree | 7d39cb1aa1bae7625935ea52517258595b401e9c /src/dotty | |
parent | 34a068b7f6039637d6f1330e3d071f5bf75e9cec (diff) | |
download | dotty-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')
-rw-r--r-- | src/dotty/tools/dotc/core/OrderingConstraint.scala | 2 |
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)) |