@@ -711,8 +711,17 @@ object Serializers {
711
711
writeInt(length)
712
712
bufferUnderlying.continue()
713
713
714
- case JSPropertyDef (flags, name, getter, setterArgAndBody) =>
714
+ case propDef : JSPropertyDef =>
715
+ val JSPropertyDef (flags, name, getter, setterArgAndBody) = propDef
716
+
715
717
writeByte(TagJSPropertyDef )
718
+ writeOptHash(propDef.hash)
719
+
720
+ // Prepare for back-jump and write dummy length
721
+ bufferUnderlying.markJump()
722
+ writeInt(- 1 )
723
+
724
+ // Write out prop def
716
725
writeInt(MemberFlags .toBits(flags))
717
726
writeTree(name)
718
727
writeOptTree(getter)
@@ -721,6 +730,11 @@ object Serializers {
721
730
writeParamDef(arg); writeTree(body)
722
731
}
723
732
733
+ // Jump back and write true length
734
+ val length = bufferUnderlying.jumpBack()
735
+ writeInt(length)
736
+ bufferUnderlying.continue()
737
+
724
738
case JSNativeMemberDef (flags, name, jsNativeLoadSpec) =>
725
739
writeByte(TagJSNativeMemberDef )
726
740
writeInt(MemberFlags .toBits(flags))
@@ -1591,6 +1605,18 @@ object Serializers {
1591
1605
OptimizerHints .fromBits(readInt()), optHash)
1592
1606
1593
1607
case TagJSPropertyDef =>
1608
+ val optHash = {
1609
+ if (hacks.use12) {
1610
+ None
1611
+ } else {
1612
+ val optHash = readOptHash()
1613
+ // read and discard the length
1614
+ val len = readInt()
1615
+ assert(len >= 0 )
1616
+ optHash
1617
+ }
1618
+ }
1619
+
1594
1620
val flags = MemberFlags .fromBits(readInt())
1595
1621
val name = bodyHack5Expr(readTree())
1596
1622
val getterBody = readOptTree().map(bodyHack5Expr(_))
@@ -1600,7 +1626,7 @@ object Serializers {
1600
1626
else
1601
1627
None
1602
1628
}
1603
- JSPropertyDef (flags, name, getterBody, setterArgAndBody)
1629
+ JSPropertyDef (flags, name, getterBody, setterArgAndBody)(optHash)
1604
1630
1605
1631
case TagJSNativeMemberDef =>
1606
1632
val flags = MemberFlags .fromBits(readInt())
@@ -2021,6 +2047,13 @@ object Serializers {
2021
2047
private val use7 : Boolean = use6 || sourceVersion == " 1.7"
2022
2048
2023
2049
val use8 : Boolean = use7 || sourceVersion == " 1.8"
2050
+
2051
+ assert(sourceVersion != " 1.9" , " source version 1.9 does not exist" )
2052
+ assert(sourceVersion != " 1.10" , " source version 1.10 does not exist" )
2053
+
2054
+ private val use11 : Boolean = use8 || sourceVersion == " 1.11"
2055
+
2056
+ val use12 : Boolean = use11 || sourceVersion == " 1.12"
2024
2057
}
2025
2058
2026
2059
/** Names needed for hacks. */
0 commit comments