kotlinx-metadata-jvm: report error on using metadata version < 1.4 in writers
The main reason for this change is that the current API for class version requirements (`KmClass.versionRequirements`) makes it impossible to support pre-1.4 metadata where this was stored incorrectly for nested classes: with the "version requirement table" in the outer class, and indexes into that table in nested classes. See KT-41011. Other than this aspect, metadata of classes is basically the same in pre-1.4 and 1.4, which means that if some kotlinx-metadata-jvm users really need to serialize metadata of an earlier version and they don't care about the version requirements issue, they can just use these new bytes but write the earlier version (e.g. 1.1) to the class file. Everything will work the same, except for the possible version requirements issue mentioned above. Note that metadata version 1.4 is still supported for `KotlinModuleMetadata.Writer` though. #KT-41011 Fixed
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
# kotlinx-metadata-jvm
|
||||
|
||||
## 0.1.1
|
||||
## 0.2.0
|
||||
|
||||
- ['KT-41011`](https://youtrack.jetbrains.com/issue/KT-41011) Using KotlinClassMetadata.Class.Writer with metadata version < 1.4 will write incorrect version requirement table
|
||||
- Breaking change: `KotlinClassMetadata.*.Writer.write` throws exception on `metadataVersion` earlier than 1.4.0.
|
||||
Note: metadata of version 1.4 is readable by Kotlin compiler/reflection of versions 1.3 and later.
|
||||
- Breaking change: `KotlinClassMetadata.*.Writer.write` no longer accept `bytecodeVersion`.
|
||||
- [`KT-42429`](https://youtrack.jetbrains.com/issue/KT-42429) Wrong interpretation of Flag.Constructor.IS_PRIMARY
|
||||
- Breaking change: `Flag.Constructor.IS_PRIMARY` is deprecated, use `Flag.Constructor.IS_SECONDARY` instead
|
||||
|
||||
Reference in New Issue
Block a user