summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-04-18 14:56:59 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-04-18 14:56:59 +0000
commit258c55afa7d88b3e9860b4b556a77e26d1885791 (patch)
tree9380677ff816997f14d8eb70fb2c8eec96866348 /src
parent7d3d4982251ec8b713bceaaba8c0afe5c504e3a1 (diff)
downloadscala-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.scala9
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) =