summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-08-05 15:43:46 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-08-05 15:43:46 +0000
commit0a787b6477311a718cbb6abec15df9dfdc12186e (patch)
tree0c4eb20c15a17312c3d1cce51ea68344287a227a /src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
parentc690bf16b9dae7fec67b23b2deb105d7bd27621d (diff)
downloadscala-0a787b6477311a718cbb6abec15df9dfdc12186e.tar.gz
scala-0a787b6477311a718cbb6abec15df9dfdc12186e.tar.bz2
scala-0a787b6477311a718cbb6abec15df9dfdc12186e.zip
close #3667.
scala> def ser(o: AnyRef) = new java.io.ObjectOutputStream(new java.io.ByteArrayOutputStream()).writeObject(o) ser: (o: AnyRef)Unit scala> @serializable class Outer { | case class Inner(x: Int) | } defined class Outer scala> val o = new Outer o: Outer = Outer@34469729 scala> ser(new o.Inner(1)) scala> o.Inner // initialize the Inner$module field of o res1: o.Inner.type = Inner scala> ser(new o.Inner(1)) java.io.NotSerializableException: Outer$Inner$ review by extempore.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Unapplies.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Unapplies.scala7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala b/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
index 735cb4a3c4..57540fffef 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Unapplies.scala
@@ -147,14 +147,15 @@ trait Unapplies extends ast.TreeDSL
TypeTree(),
Literal(Constant(cdef.name.decode)))
- companionModuleDef(cdef, parents ::: List(gen.scalaScalaObjectConstr), List(toString))
+ companionModuleDef(cdef, parents, List(toString))
}
- def companionModuleDef(cdef: ClassDef, parents: List[Tree], body: List[Tree] = Nil): ModuleDef = atPos(cdef.pos.focus) {
+ def companionModuleDef(cdef: ClassDef, parents: List[Tree] = Nil, body: List[Tree] = Nil): ModuleDef = atPos(cdef.pos.focus) {
+ val allParents = parents ::: List( gen.scalaScalaObjectConstr)
ModuleDef(
Modifiers(cdef.mods.flags & AccessFlags | SYNTHETIC, cdef.mods.privateWithin),
cdef.name.toTermName,
- Template(parents, emptyValDef, NoMods, Nil, List(Nil), body, cdef.impl.pos.focus))
+ Template(allParents, emptyValDef, NoMods, Nil, List(Nil), body, cdef.impl.pos.focus))
}
private val caseMods = Modifiers(SYNTHETIC | CASE)