diff options
author | odersky <odersky@gmail.com> | 2015-01-31 19:32:17 +0100 |
---|---|---|
committer | odersky <odersky@gmail.com> | 2015-01-31 19:32:17 +0100 |
commit | 698935a661122ea2ba983cdab29805f15f8a153c (patch) | |
tree | ff13a07330ff5332eda3a1b9ff3118eb491c0d2c /src/dotty/tools/dotc/core/Types.scala | |
parent | a822fc15235d9cc91302bd82d180830eff357ae2 (diff) | |
parent | 57b616c1a7adc78dd46cb3ae5545e312c11e69be (diff) | |
download | dotty-698935a661122ea2ba983cdab29805f15f8a153c.tar.gz dotty-698935a661122ea2ba983cdab29805f15f8a153c.tar.bz2 dotty-698935a661122ea2ba983cdab29805f15f8a153c.zip |
Merge pull request #338 from dotty-staging/fix/t3152-findMember
Fix/t3152 find member
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index a36dda7e3..18f854f12 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -419,6 +419,8 @@ object Types { if mt.paramTypes.isEmpty && (tp.symbol is Stable) => mt.resultType case tp1 => tp1 }) + case tp: PolyParam => + goParam(tp) case tp: TypeProxy => go(tp.underlying) case tp: ClassInfo => @@ -460,6 +462,16 @@ object Types { // loadClassWithPrivateInnerAndSubSelf in ShowClassTests go(tp.cls.typeRef) orElse d } + def goParam(tp: PolyParam) = { + val next = tp.underlying + ctx.typerState.constraint.entry(tp) match { + case bounds: TypeBounds if bounds ne next => + ctx.typerState.ephemeral = true + go(bounds.hi) + case _ => + go(next) + } + } def goAnd(l: Type, r: Type) = go(l) & (go(r), pre) def goOr(l: Type, r: Type) = go(l) | (go(r), pre) go(this) |