aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeOps.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-01-10 16:08:04 +0100
committerMartin Odersky <odersky@gmail.com>2016-02-19 14:00:00 +0100
commit6947b630bada85dabd7904ecf5d1da724c5d281d (patch)
tree06f1bb26eac234b854f34848f612ee1acaa23ae0 /src/dotty/tools/dotc/core/TypeOps.scala
parent3363c4e4dde98d58e99f7d7ce44f5cc206cef4c7 (diff)
downloaddotty-6947b630bada85dabd7904ecf5d1da724c5d281d.tar.gz
dotty-6947b630bada85dabd7904ecf5d1da724c5d281d.tar.bz2
dotty-6947b630bada85dabd7904ecf5d1da724c5d281d.zip
Augment test case
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeOps.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeOps.scala14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/TypeOps.scala b/src/dotty/tools/dotc/core/TypeOps.scala
index 4251648a3..420333695 100644
--- a/src/dotty/tools/dotc/core/TypeOps.scala
+++ b/src/dotty/tools/dotc/core/TypeOps.scala
@@ -444,10 +444,16 @@ trait TypeOps { this: Context => // TODO: Make standalone object.
case tp: TypeRef =>
tp
case tp @ RefinedType(tp1, name: TypeName) =>
- val prevInfo = refinements(name)
- refinements = refinements.updated(name,
- if (prevInfo == null) tp.refinedInfo else prevInfo & tp.refinedInfo)
- formals = formals.updated(name, tp1.typeParamNamed(name))
+ tp.refinedInfo match {
+ case TypeAlias(TypeRef(pre, name1)) if (pre eq cls.thisType) && name1 == name =>
+ // Don't record refinements of the form X = this.X (These can arise using named parameters).
+ typr.println(s"dropping refinement $tp")
+ case _ =>
+ val prevInfo = refinements(name)
+ refinements = refinements.updated(name,
+ if (prevInfo == null) tp.refinedInfo else prevInfo & tp.refinedInfo)
+ formals = formals.updated(name, tp1.typeParamNamed(name))
+ }
normalizeToRef(tp1)
case ErrorType =>
defn.AnyType