diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 5705399428..10723f285a 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -2086,7 +2086,9 @@ A type's typeSymbol should never be inspected directly. if (phase.erasedTypes) if (parents.isEmpty) ObjectClass.tpe else parents.head else { - val clazz = recycle(owner.newRefinementClass(NoPosition)) + // having $anonfun as owner causes the pickler to break upon unpickling; see ticket #2323 + val nonAnonOwner = (owner.ownerChain dropWhile (_.isAnonymousFunction)).headOption getOrElse NoSymbol + val clazz = recycle(nonAnonOwner.newRefinementClass(NoPosition)) val result = refinementOfClass(clazz, parents, decls) clazz.setInfo(result) result |