aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2015-01-31 19:32:17 +0100
committerodersky <odersky@gmail.com>2015-01-31 19:32:17 +0100
commit698935a661122ea2ba983cdab29805f15f8a153c (patch)
treeff13a07330ff5332eda3a1b9ff3118eb491c0d2c /src/dotty/tools/dotc/core/Types.scala
parenta822fc15235d9cc91302bd82d180830eff357ae2 (diff)
parent57b616c1a7adc78dd46cb3ae5545e312c11e69be (diff)
downloaddotty-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.scala12
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)