diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-03-27 22:46:23 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-03-27 22:46:23 -0700 |
commit | 66fb8118f9c48c6be703e4e89aaaf8e76e430d5a (patch) | |
tree | 3ff5955b14d84ece8b3b6d506f12b61a9a72ed78 /src/reflect | |
parent | f2a74c5ebda2a6d3438203572059a4cee509002d (diff) | |
parent | dd89b006218d76a74d0185392d5e427c0867a33c (diff) | |
download | scala-66fb8118f9c48c6be703e4e89aaaf8e76e430d5a.tar.gz scala-66fb8118f9c48c6be703e4e89aaaf8e76e430d5a.tar.bz2 scala-66fb8118f9c48c6be703e4e89aaaf8e76e430d5a.zip |
Merge pull request #2292 from retronym/ticket/7285
SI-7285 Fix match analysis with nested objects
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index a27b37dae5..a2c9f1fadf 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -5036,10 +5036,11 @@ trait Types extends api.Types { self: SymbolTable => if (tp.isTrivial) tp else if (tp.prefix.typeSymbol isNonBottomSubClass owner) { val widened = tp match { - case _: ConstantType => tp // Java enum constants: don't widen to the enum type! - case _ => tp.widen // C.X.type widens to C.this.X.type, otherwise `tp asSeenFrom (pre, C)` has no effect. + case _: ConstantType => tp // Java enum constants: don't widen to the enum type! + case _ => tp.widen // C.X.type widens to C.this.X.type, otherwise `tp asSeenFrom (pre, C)` has no effect. } - widened asSeenFrom (pre, tp.typeSymbol.owner) + val memType = widened asSeenFrom (pre, tp.typeSymbol.owner) + if (tp eq widened) memType else memType.narrow } else loop(tp.prefix) memberType tp.typeSymbol |