Remove version requirements for -Xjvm-default=enable (1.2.40) and JvmFieldInInterface(1.2.70)
This commit is contained in:
-13
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.codegen.createFreeFakeLocalPropertyDescriptor
|
|||||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.*
|
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.*
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapperBase
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapperBase
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
@@ -32,7 +31,6 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils.isInterface
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPrivateApi
|
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPrivateApi
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.nonSourceAnnotations
|
import org.jetbrains.kotlin.resolve.descriptorUtil.nonSourceAnnotations
|
||||||
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmDefaultAnnotation
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForParameterTypes
|
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForParameterTypes
|
||||||
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForReturnType
|
import org.jetbrains.kotlin.resolve.jvm.requiresFunctionNameManglingForReturnType
|
||||||
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
||||||
@@ -114,13 +112,6 @@ class JvmSerializerExtension @JvmOverloads constructor(
|
|||||||
versionRequirementTable: MutableVersionRequirementTable
|
versionRequirementTable: MutableVersionRequirementTable
|
||||||
) {
|
) {
|
||||||
if (isInterface(classDescriptor)) {
|
if (isInterface(classDescriptor)) {
|
||||||
if (jvmDefaultMode == JvmDefaultMode.ENABLE && classDescriptor.unsubstitutedMemberScope.getContributedDescriptors().any {
|
|
||||||
it is CallableMemberDescriptor && it.hasJvmDefaultAnnotation()
|
|
||||||
}) {
|
|
||||||
builder.addVersionRequirement(
|
|
||||||
writeVersionRequirement(1, 2, 40, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, versionRequirementTable)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (jvmDefaultMode == JvmDefaultMode.ALL_INCOMPATIBLE) {
|
if (jvmDefaultMode == JvmDefaultMode.ALL_INCOMPATIBLE) {
|
||||||
builder.addVersionRequirement(
|
builder.addVersionRequirement(
|
||||||
writeVersionRequirement(1, 4, 0, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, versionRequirementTable)
|
writeVersionRequirement(1, 4, 0, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, versionRequirementTable)
|
||||||
@@ -280,10 +271,6 @@ class JvmSerializerExtension @JvmOverloads constructor(
|
|||||||
|
|
||||||
if (descriptor.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
if (descriptor.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
||||||
proto.setExtension(JvmProtoBuf.flags, JvmFlags.getPropertyFlags(true))
|
proto.setExtension(JvmProtoBuf.flags, JvmFlags.getPropertyFlags(true))
|
||||||
|
|
||||||
proto.addVersionRequirement(
|
|
||||||
writeVersionRequirement(1, 2, 70, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, versionRequirementTable)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getter?.needsInlineParameterNullCheckRequirement() == true || setter?.needsInlineParameterNullCheckRequirement() == true) {
|
if (getter?.needsInlineParameterNullCheckRequirement() == true || setter?.needsInlineParameterNullCheckRequirement() == true) {
|
||||||
|
|||||||
-27
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
|||||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.protobuf.GeneratedMessageLite
|
import org.jetbrains.kotlin.protobuf.GeneratedMessageLite
|
||||||
import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_DEFAULT_FQ_NAME
|
|
||||||
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeApproximator
|
import org.jetbrains.kotlin.types.AbstractTypeApproximator
|
||||||
import org.jetbrains.org.objectweb.asm.Type
|
import org.jetbrains.org.objectweb.asm.Type
|
||||||
@@ -108,22 +107,6 @@ class FirJvmSerializerExtension(
|
|||||||
versionRequirementTable: MutableVersionRequirementTable
|
versionRequirementTable: MutableVersionRequirementTable
|
||||||
) {
|
) {
|
||||||
if (klass is FirRegularClass && klass.classKind == ClassKind.INTERFACE) {
|
if (klass is FirRegularClass && klass.classKind == ClassKind.INTERFACE) {
|
||||||
if (jvmDefaultMode == JvmDefaultMode.ENABLE && klass.declarations.any {
|
|
||||||
it is FirCallableMemberDeclaration<*> && it.annotations.any { annotationCall ->
|
|
||||||
val classId = annotationCall.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId
|
|
||||||
classId?.asSingleFqName() == JVM_DEFAULT_FQ_NAME
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
builder.addVersionRequirement(
|
|
||||||
DescriptorSerializer.writeVersionRequirement(
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
40,
|
|
||||||
ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION,
|
|
||||||
versionRequirementTable
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
if (jvmDefaultMode == JvmDefaultMode.ALL_INCOMPATIBLE) {
|
if (jvmDefaultMode == JvmDefaultMode.ALL_INCOMPATIBLE) {
|
||||||
builder.addVersionRequirement(
|
builder.addVersionRequirement(
|
||||||
DescriptorSerializer.writeVersionRequirement(
|
DescriptorSerializer.writeVersionRequirement(
|
||||||
@@ -261,16 +244,6 @@ class FirJvmSerializerExtension(
|
|||||||
|
|
||||||
if (property.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
if (property.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
||||||
proto.setExtension(JvmProtoBuf.flags, JvmFlags.getPropertyFlags(true))
|
proto.setExtension(JvmProtoBuf.flags, JvmFlags.getPropertyFlags(true))
|
||||||
|
|
||||||
proto.addVersionRequirement(
|
|
||||||
DescriptorSerializer.writeVersionRequirement(
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
70,
|
|
||||||
ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION,
|
|
||||||
versionRequirementTable
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getter?.needsInlineParameterNullCheckRequirement() == true || setter?.needsInlineParameterNullCheckRequirement() == true) {
|
if (getter?.needsInlineParameterNullCheckRequirement() == true || setter?.needsInlineParameterNullCheckRequirement() == true) {
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
interface Base {
|
|
||||||
@JvmDefault
|
|
||||||
fun foo() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Derived : Base
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
interface Base {
|
|
||||||
companion object {
|
|
||||||
@Suppress("INAPPLICABLE_JVM_FIELD")
|
|
||||||
@JvmField
|
|
||||||
val foo = object : Base {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -63,17 +63,6 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() {
|
|||||||
)
|
)
|
||||||
).moduleDescriptor
|
).moduleDescriptor
|
||||||
|
|
||||||
fun testJvmDefault() {
|
|
||||||
doTest(
|
|
||||||
VersionRequirement.Version(1, 2, 40), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
|
||||||
analysisFlags = mapOf(JvmAnalysisFlags.jvmDefaultMode to JvmDefaultMode.ENABLE),
|
|
||||||
fqNamesWithRequirements = listOf(
|
|
||||||
"test.Base",
|
|
||||||
"test.Derived"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testAllJvmDefault() {
|
fun testAllJvmDefault() {
|
||||||
doTest(
|
doTest(
|
||||||
VersionRequirement.Version(1, 4, 0), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
VersionRequirement.Version(1, 4, 0), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
||||||
@@ -109,13 +98,6 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testJvmFieldInInterfaceCompanion() {
|
|
||||||
doTest(
|
|
||||||
VersionRequirement.Version(1, 2, 70), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
|
||||||
fqNamesWithRequirements = listOf("test.Base.Companion.foo")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testInlineParameterNullCheck() {
|
fun testInlineParameterNullCheck() {
|
||||||
doTest(
|
doTest(
|
||||||
VersionRequirement.Version(1, 3, 50), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
VersionRequirement.Version(1, 3, 50), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
||||||
|
|||||||
Reference in New Issue
Block a user