summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Types.scala4
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