summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-09-14 14:10:11 +0000
committerPaul Phillips <paulp@improving.org>2009-09-14 14:10:11 +0000
commitc45e93e798e6a97aeda628b6d10f0e549b085704 (patch)
tree7e29ade84b9f851183166de46f00d7eaf42c3873 /src
parent9a22b72231871f1704dc3296ee58b4ebaa1f1660 (diff)
downloadscala-c45e93e798e6a97aeda628b6d10f0e549b085704.tar.gz
scala-c45e93e798e6a97aeda628b6d10f0e549b085704.tar.bz2
scala-c45e93e798e6a97aeda628b6d10f0e549b085704.zip
Proposed (ideally destined for improvement and/...
Proposed (ideally destined for improvement and/or generalization) fix for #2323.
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