diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala index cd9267e0c4..248b24bc43 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/ClosureElimination.scala @@ -195,6 +195,8 @@ abstract class ClosureElimination extends SubComponent { CONSTANT(k) case Deref(This) => THIS(definitions.ObjectClass) + case Boxed(LocalVar(v)) => + LOAD_LOCAL(v) } /** is field 'f' accessible from method 'm'? */ diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 5aafda4430..3816b89e59 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -1002,7 +1002,10 @@ abstract class ClassfileParser { innerClasses.get(externalName) match { case Some(entry) => - val sym = classSymbol(entry.outerName) + val outerName = + if (entry.outerName.endsWith("$")) entry.outerName.subName(0, entry.outerName.length - 1) + else entry.outerName + val sym = classSymbol(outerName) val s = atPhase(currentRun.typerPhase)(getMember(sym, innerName.toTypeName)) assert(s ne NoSymbol, sym + "." + innerName + " linkedModule: " + sym.linkedModuleOfClass + sym.linkedModuleOfClass.info.members) s |