Skip to content

Commit fb5af97

Browse files
committed
backed out NativeArray usage in GenCodecs for binary compatibility
1 parent b040ade commit fb5af97

File tree

3 files changed

+28
-30
lines changed

3 files changed

+28
-30
lines changed

commons-core/src/main/scala/com/avsystem/commons/serialization/FieldValues.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
package com.avsystem.commons
22
package serialization
33

4-
import com.avsystem.commons.misc.CrossUtils._
54
import com.avsystem.commons.serialization.GenCodec.ReadFailure
65

76
import scala.annotation.tailrec
87

98
object FieldValues {
10-
final val Empty = new FieldValues(newNativeArray(0), newNativeArray(0))
9+
final val Empty = new FieldValues(new Array(0), new Array(0))
1110
private object NullMarker
1211
}
1312
final class FieldValues(
14-
private val fieldNames: NativeArray[String], codecs: NativeArray[GenCodec[_]], ofWhat: OptArg[String] = OptArg.Empty) {
13+
private val fieldNames: Array[String], codecs: Array[GenCodec[_]], ofWhat: OptArg[String] = OptArg.Empty) {
1514

1615
@tailrec private def fieldIndex(fieldName: String, idx: Int): Int =
1716
if (idx >= fieldNames.length) -1
1817
else if (fieldNames(idx) == fieldName) idx
1918
else fieldIndex(fieldName, idx + 1)
2019

21-
private val values = newNativeArray[Any](fieldNames.length)
20+
private val values = new Array[Any](fieldNames.length)
2221

2322
import FieldValues._
2423

commons-core/src/main/scala/com/avsystem/commons/serialization/macroCodecs.scala

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.avsystem.commons
22
package serialization
33

4-
import com.avsystem.commons.misc.CrossUtils.NativeArray
54
import com.avsystem.commons.serialization.GenCodec.{DefaultCaseField, NullSafeCodec, OOOFieldsObjectCodec, ObjectCodec, ReadFailure, WriteFailure}
65

76
import scala.annotation.tailrec
@@ -18,10 +17,10 @@ class SingletonCodec[T <: Singleton](
1817
abstract class ApplyUnapplyCodec[T](
1918
protected val typeRepr: String,
2019
val nullable: Boolean,
21-
fieldNames: NativeArray[String]
20+
fieldNames: Array[String]
2221
) extends OOOFieldsObjectCodec[T] with ErrorReportingCodec[T] {
2322

24-
protected def dependencies: NativeArray[GenCodec[_]]
23+
protected def dependencies: Array[GenCodec[_]]
2524
protected def instantiate(fieldValues: FieldValues): T
2625

2726
private[this] lazy val deps = dependencies
@@ -48,7 +47,7 @@ abstract class ApplyUnapplyCodec[T](
4847
abstract class ProductCodec[T <: Product](
4948
typeRepr: String,
5049
nullable: Boolean,
51-
fieldNames: NativeArray[String]
50+
fieldNames: Array[String]
5251
) extends ApplyUnapplyCodec[T](typeRepr, nullable, fieldNames) {
5352
final def writeObject(output: ObjectOutput, value: T): Unit = {
5453
var i = 0
@@ -74,8 +73,8 @@ abstract class TransparentCodec[T, U](
7473
abstract class SealedHierarchyCodec[T](
7574
protected val typeRepr: String,
7675
val nullable: Boolean,
77-
caseNames: NativeArray[String],
78-
cases: NativeArray[Class[_ <: T]]
76+
caseNames: Array[String],
77+
cases: Array[Class[_ <: T]]
7978
) extends ObjectCodec[T] with ErrorReportingCodec[T] {
8079

8180
@tailrec protected final def caseIndexByValue(value: T, idx: Int = 0): Int =
@@ -92,11 +91,11 @@ abstract class SealedHierarchyCodec[T](
9291
abstract class NestedSealedHierarchyCodec[T](
9392
typeRepr: String,
9493
nullable: Boolean,
95-
caseNames: NativeArray[String],
96-
cases: NativeArray[Class[_ <: T]]
94+
caseNames: Array[String],
95+
cases: Array[Class[_ <: T]]
9796
) extends SealedHierarchyCodec[T](typeRepr, nullable, caseNames, cases) {
9897

99-
protected def caseDependencies: NativeArray[GenCodec[_ <: T]]
98+
protected def caseDependencies: Array[GenCodec[_ <: T]]
10099

101100
private[this] lazy val caseDeps = caseDependencies
102101

@@ -120,17 +119,17 @@ abstract class NestedSealedHierarchyCodec[T](
120119
abstract class FlatSealedHierarchyCodec[T](
121120
typeRepr: String,
122121
nullable: Boolean,
123-
caseNames: NativeArray[String],
124-
cases: NativeArray[Class[_ <: T]],
125-
oooFieldNames: NativeArray[String],
122+
caseNames: Array[String],
123+
cases: Array[Class[_ <: T]],
124+
oooFieldNames: Array[String],
126125
caseDependentFieldNames: Set[String],
127126
override protected val caseFieldName: String,
128127
defaultCaseIdx: Int,
129128
defaultCaseTransient: Boolean
130129
) extends SealedHierarchyCodec[T](typeRepr, nullable, caseNames, cases) {
131130

132-
protected def oooDependencies: NativeArray[GenCodec[_]]
133-
protected def caseDependencies: NativeArray[OOOFieldsObjectCodec[_ <: T]]
131+
protected def oooDependencies: Array[GenCodec[_]]
132+
protected def caseDependencies: Array[OOOFieldsObjectCodec[_ <: T]]
134133

135134
private[this] lazy val oooDeps = oooDependencies
136135
private[this] lazy val caseDeps = caseDependencies

commons-macros/src/main/scala/com/avsystem/commons/macros/serialization/GenCodecMacros.scala

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ class GenCodecMacros(ctx: blackbox.Context) extends CodecMacroCommons(ctx) with
6565
addParams(q"$prefix.$sym", sym.typeSignature.paramLists)
6666
}
6767

68-
private def mkNativeArray[T: Liftable](elemTpe: Tree, elems: Seq[T]): Tree =
68+
private def mkArray[T: Liftable](elemTpe: Tree, elems: Seq[T]): Tree =
6969
q"""
70-
val res = $CommonsPackage.misc.CrossUtils.newNativeArray[$elemTpe](${elems.size})
70+
val res = new $ScalaPkg.Array[$elemTpe](${elems.size})
7171
..${elems.zipWithIndex.map({ case (e, i) => q"res($i) = $e" })}
7272
res
7373
"""
@@ -257,11 +257,11 @@ class GenCodecMacros(ctx: blackbox.Context) extends CodecMacroCommons(ctx) with
257257
new $SerializationPkg.$baseClass[$dtpe](
258258
${dtpe.toString},
259259
${typeOf[Null] <:< dtpe},
260-
${mkNativeArray(StringCls, params.map(p => nameBySym(p.sym)))}
260+
${mkArray(StringCls, params.map(p => nameBySym(p.sym)))}
261261
) {
262262
def dependencies = {
263263
..$reusedDeps
264-
${mkNativeArray(tq"$GenCodecCls[_]", depsWithReusing)}
264+
${mkArray(tq"$GenCodecCls[_]", depsWithReusing)}
265265
}
266266
..${generated.collect({ case (sym, depTpe) => generatedDepDeclaration(sym, depTpe) })}
267267
def instantiate(fieldValues: $SerializationPkg.FieldValues) =
@@ -289,10 +289,10 @@ class GenCodecMacros(ctx: blackbox.Context) extends CodecMacroCommons(ctx) with
289289
new $SerializationPkg.NestedSealedHierarchyCodec[$tpe](
290290
${tpe.toString},
291291
${typeOf[Null] <:< tpe},
292-
${mkNativeArray(StringCls, subtypes.map(st => targetNameBySym(st.sym)))},
293-
${mkNativeArray(tq"$ClassCls[_ <: $tpe]", subtypes.map(st => q"classOf[${st.tpe}]"))}
292+
${mkArray(StringCls, subtypes.map(st => targetNameBySym(st.sym)))},
293+
${mkArray(tq"$ClassCls[_ <: $tpe]", subtypes.map(st => q"classOf[${st.tpe}]"))}
294294
) {
295-
def caseDependencies = ${mkNativeArray(tq"$GenCodecCls[_ <: $tpe]", subtypes.map(_.instance))}
295+
def caseDependencies = ${mkArray(tq"$GenCodecCls[_ <: $tpe]", subtypes.map(_.instance))}
296296
}
297297
"""
298298
}
@@ -401,16 +401,16 @@ class GenCodecMacros(ctx: blackbox.Context) extends CodecMacroCommons(ctx) with
401401
new $SerializationPkg.FlatSealedHierarchyCodec[$tpe](
402402
${tpe.toString},
403403
${typeOf[Null] <:< tpe},
404-
${mkNativeArray(StringCls, caseInfos.map(_.caseName))},
405-
${mkNativeArray(tq"$ClassCls[_ <: $tpe]", caseInfos.map(_.classOf))},
406-
${mkNativeArray(StringCls, oooParamNames)},
404+
${mkArray(StringCls, caseInfos.map(_.caseName))},
405+
${mkArray(tq"$ClassCls[_ <: $tpe]", caseInfos.map(_.classOf))},
406+
${mkArray(StringCls, oooParamNames)},
407407
$SetObj(..$caseDependentFieldNames),
408408
$caseFieldName,
409409
${defaultCase.map(caseInfos.indexOf).getOrElse(-1)},
410410
${defaultCase.exists(_.transientCase)}
411411
) {
412-
def caseDependencies = ${mkNativeArray(tq"$GenCodecObj.OOOFieldsObjectCodec[_ <: $tpe]", caseInfos.map(_.depInstance))}
413-
def oooDependencies = ${mkNativeArray(tq"$GenCodecCls[_]", oooParamNames.map(oooDependency))}
412+
def caseDependencies = ${mkArray(tq"$GenCodecObj.OOOFieldsObjectCodec[_ <: $tpe]", caseInfos.map(_.depInstance))}
413+
def oooDependencies = ${mkArray(tq"$GenCodecCls[_]", oooParamNames.map(oooDependency))}
414414
}
415415
"""
416416
}

0 commit comments

Comments
 (0)