diff options
author | Philipp Haller <hallerp@gmail.com> | 2008-04-18 14:56:59 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2008-04-18 14:56:59 +0000 |
commit | 258c55afa7d88b3e9860b4b556a77e26d1885791 (patch) | |
tree | 9380677ff816997f14d8eb70fb2c8eec96866348 /src | |
parent | 7d3d4982251ec8b713bceaaba8c0afe5c504e3a1 (diff) | |
download | scala-258c55afa7d88b3e9860b4b556a77e26d1885791.tar.gz scala-258c55afa7d88b3e9860b4b556a77e26d1885791.tar.bz2 scala-258c55afa7d88b3e9860b4b556a77e26d1885791.zip |
Fixed #552
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index 977b174ae5..b57b0ce2ef 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -162,8 +162,13 @@ trait Symbols { newClass(pos, nme.ANON_CLASS_NAME.toTypeName) final def newAnonymousFunctionClass(pos: Position) = { val anonfun = newClass(pos, nme.ANON_FUN_NAME.toTypeName) - anonfun.attributes = - AnnotationInfo(definitions.SerializableAttr.tpe, List(), List()) :: anonfun.attributes + def firstNonSynOwner(chain: List[Symbol]): Symbol = (chain: @unchecked) match { + case o :: os => if (o != this && !(o hasFlag SYNTHETIC)) o else firstNonSynOwner(os) + } + val ownerSerial = firstNonSynOwner(ownerChain) hasAttribute SerializableAttr + if (ownerSerial) + anonfun.attributes = + AnnotationInfo(definitions.SerializableAttr.tpe, List(), List()) :: anonfun.attributes anonfun } final def newRefinementClass(pos: Position) = |