diff options
author | Martin Odersky <odersky@gmail.com> | 2006-09-19 14:19:49 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-09-19 14:19:49 +0000 |
commit | b3d9e27b95bee280fa1b403a7fafb8da81ff4a2c (patch) | |
tree | 365a597cfc34df054e2107c15c43bf4fc8fab9f9 /src | |
parent | d9be3828b7602831f1aeed73fc5116cd444d7b54 (diff) | |
download | scala-b3d9e27b95bee280fa1b403a7fafb8da81ff4a2c.tar.gz scala-b3d9e27b95bee280fa1b403a7fafb8da81ff4a2c.tar.bz2 scala-b3d9e27b95bee280fa1b403a7fafb8da81ff4a2c.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/matching/PatternMatchers.scala | 8 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala index c2c315d0f6..85075d19ff 100644 --- a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala +++ b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala @@ -1185,12 +1185,14 @@ trait PatternMatchers requires (transform.ExplicitOuter with PatternNodes) { } theRef = handleOuter(theRef) - val outername = casted.tpe.symbol.expandedName(nme.OUTER) + val outerAcc = outerAccessor(casted.tpe.symbol) - if(node.getTpe().decls.lookup(outername) != NoSymbol) { // some guys don't have outers + //val outername = casted.tpe.symbol.expandedName(nme.OUTER) + + if(outerAcc != NoSymbol) { // some guys don't have outers cond = And(cond, Eq(Apply(Select( - gen.mkAsInstanceOf(selector.duplicate, node.getTpe(), true), outername),List()), theRef)) + gen.mkAsInstanceOf(selector.duplicate, node.getTpe(), true), outerAcc),List()), theRef)) } case _ => //ignore ; diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala index 3412d04b2c..0caa0f6522 100644 --- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala +++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala @@ -44,7 +44,7 @@ abstract class ExplicitOuter extends InfoTransform with TransMatcher with Patter result } - private def outerAccessor(clazz: Symbol): Symbol = { + def outerAccessor(clazz: Symbol): Symbol = { val firstTry = clazz.info.decl(clazz.expandedName(nme.OUTER)) if (firstTry != NoSymbol && firstTry.outerSource == clazz) firstTry else { |