diff options
author | Martin Odersky <odersky@gmail.com> | 2016-01-10 16:08:04 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-02-19 14:00:00 +0100 |
commit | 6947b630bada85dabd7904ecf5d1da724c5d281d (patch) | |
tree | 06f1bb26eac234b854f34848f612ee1acaa23ae0 /src/dotty/tools/dotc/core/TypeOps.scala | |
parent | 3363c4e4dde98d58e99f7d7ce44f5cc206cef4c7 (diff) | |
download | dotty-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.scala | 14 |
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 |