Skip to content

Commit ad6358f

Browse files
committed
Mitigate #9596 for SJS: Make objects serializable only in the JVM back-end.
1 parent c5e1f0c commit ad6358f

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,16 @@ trait BCodeSkelBuilder extends BCodeHelpers {
238238

239239
val ps = claszSymbol.info.parents
240240
val superClass: String = if (ps.isEmpty) ObjectReference.internalName else internalName(ps.head.widenDealias.typeSymbol)
241-
val interfaceNames = classBTypeFromSymbol(claszSymbol).info.interfaces map {
241+
val interfaceNames0 = classBTypeFromSymbol(claszSymbol).info.interfaces map {
242242
case classBType =>
243243
if (classBType.isNestedClass) { innerClassBufferASM += classBType }
244244
classBType.internalName
245245
}
246+
val interfaceNames =
247+
if (claszSymbol.is(ModuleClass) && !interfaceNames0.contains("java/io/Serializable"))
248+
interfaceNames0 :+ "java/io/Serializable"
249+
else
250+
interfaceNames0
246251

247252
val flags = javaFlags(claszSymbol)
248253

compiler/src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -614,8 +614,6 @@ object desugar {
614614
parents1 = enumClassTypeRef :: Nil
615615
if (isCaseClass | isCaseObject)
616616
parents1 = parents1 :+ scalaDot(str.Product.toTypeName) :+ scalaDot(nme.Serializable.toTypeName)
617-
else if (isObject)
618-
parents1 = parents1 :+ scalaDot(nme.Serializable.toTypeName)
619617
if (isEnum)
620618
parents1 = parents1 :+ ref(defn.EnumClass.typeRef)
621619

0 commit comments

Comments
 (0)