From beff8f857b53096326f62b615250e39386c579c6 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sat, 2 Jul 2016 16:51:37 +0200 Subject: 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. --- src/dotty/tools/dotc/core/OrderingConstraint.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dotty/tools/dotc/core/OrderingConstraint.scala') 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)) -- cgit v1.2.3