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.state.GenerationState
|
||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapperBase
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
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.isEffectivelyPrivateApi
|
||||
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.requiresFunctionNameManglingForReturnType
|
||||
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
||||
@@ -114,13 +112,6 @@ class JvmSerializerExtension @JvmOverloads constructor(
|
||||
versionRequirementTable: MutableVersionRequirementTable
|
||||
) {
|
||||
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) {
|
||||
builder.addVersionRequirement(
|
||||
writeVersionRequirement(1, 4, 0, ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, versionRequirementTable)
|
||||
@@ -280,10 +271,6 @@ class JvmSerializerExtension @JvmOverloads constructor(
|
||||
|
||||
if (descriptor.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
||||
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) {
|
||||
|
||||
-27
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
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.types.AbstractTypeApproximator
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
@@ -108,22 +107,6 @@ class FirJvmSerializerExtension(
|
||||
versionRequirementTable: MutableVersionRequirementTable
|
||||
) {
|
||||
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) {
|
||||
builder.addVersionRequirement(
|
||||
DescriptorSerializer.writeVersionRequirement(
|
||||
@@ -261,16 +244,6 @@ class FirJvmSerializerExtension(
|
||||
|
||||
if (property.isJvmFieldPropertyInInterfaceCompanion() && versionRequirementTable != null) {
|
||||
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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
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() {
|
||||
doTest(
|
||||
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() {
|
||||
doTest(
|
||||
VersionRequirement.Version(1, 3, 50), DeprecationLevel.ERROR, null, COMPILER_VERSION, null,
|
||||
|
||||
Reference in New Issue
Block a user