diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index e27a3ff0736..fc2f53adcb5 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -985,6 +985,9 @@ class FirElementSerializer private constructor( return writeLanguageVersionRequirement(languageFeature, this) } + private fun MutableVersionRequirementTable.writeCompilerVersionRequirement(major: Int, minor: Int, patch: Int): Int = + writeCompilerVersionRequirement(major, minor, patch, this) + private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int = writeVersionRequirement(LanguageFeature.ReleaseCoroutines) @@ -1156,6 +1159,17 @@ class FirElementSerializer private constructor( ) } + fun writeCompilerVersionRequirement( + major: Int, + minor: Int, + patch: Int, + versionRequirementTable: MutableVersionRequirementTable + ): Int = writeVersionRequirement( + major, minor, patch, + ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION, + versionRequirementTable + ) + fun writeVersionRequirement( major: Int, minor: Int, diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt index f46f2cdb072..e8005b601f3 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt @@ -215,12 +215,6 @@ class DescriptorSerializer private constructor( ) } - if (classDescriptor.contextReceivers.isNotEmpty()) { - builder.addVersionRequirement( - writeCompilerVersionRequirement(1, 6, 20, versionRequirementTable) - ) - } - typeTable.serialize()?.let { builder.typeTable = it } versionRequirementTable.serialize()?.let { builder.versionRequirementTable = it } @@ -346,10 +340,6 @@ class DescriptorSerializer private constructor( builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses)) } - if (descriptor.contextReceiverParameters.isNotEmpty()) { - builder.addVersionRequirement(writeCompilerVersionRequirement(1, 6, 20)) - } - if (local.metDefinitelyNotNullType) { builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } @@ -447,10 +437,6 @@ class DescriptorSerializer private constructor( builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses)) } - if (descriptor.contextReceiverParameters.isNotEmpty()) { - builder.addVersionRequirement(writeCompilerVersionRequirement(1, 6, 20)) - } - if (local.metDefinitelyNotNullType) { builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } diff --git a/compiler/testData/versionRequirement/contextReceivers.kt b/compiler/testData/versionRequirement/contextReceivers.kt deleted file mode 100644 index 19acc29040d..00000000000 --- a/compiler/testData/versionRequirement/contextReceivers.kt +++ /dev/null @@ -1,21 +0,0 @@ -package test - -interface A -interface B - -context(A, B) -class ClassWithCR { - context(A, B) - val memberPropWithCR: Any? - get() = null - - context(A, B) - fun memberFunWithCR() {} -} - -context(A, B) -fun topLevelFunWithCR() {} - -context(A, B) -val topLevelPropWithCR: Any? - get() = null diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/JvmVersionRequirementTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/JvmVersionRequirementTest.kt index c8dd3ed8891..e0eda0de261 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/JvmVersionRequirementTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/JvmVersionRequirementTest.kt @@ -170,21 +170,4 @@ class JvmVersionRequirementTest : AbstractVersionRequirementTest() { shouldBeSingleRequirement = false ) } - - fun testContextReceivers() { - doTest( - VersionRequirement.Version(1, 6, 20), DeprecationLevel.ERROR, null, COMPILER_VERSION, null, - fqNamesWithRequirements = listOf( - "test.ClassWithCR", - "test.ClassWithCR.memberPropWithCR", - "test.ClassWithCR.memberFunWithCR", - "test.topLevelFunWithCR", - "test.topLevelPropWithCR" - ), - customLanguageVersion = LanguageVersion.KOTLIN_1_7, - specificFeatures = mapOf( - LanguageFeature.ContextReceivers to LanguageFeature.State.ENABLED - ) - ) - } } diff --git a/libraries/tools/kotlinp/testData/ContextReceivers.txt b/libraries/tools/kotlinp/testData/ContextReceivers.txt index 7f4309d7c7a..3c08792b73b 100644 --- a/libraries/tools/kotlinp/testData/ContextReceivers.txt +++ b/libraries/tools/kotlinp/testData/ContextReceivers.txt @@ -12,14 +12,12 @@ public abstract interface B : kotlin/Any { } // C.class // ------------------------------------------ -// requires compiler version 1.6.20 (level=ERROR) context(A) public final class C : kotlin/Any { // signature: (LA;)V public constructor() - // requires compiler version 1.6.20 (level=ERROR) // signature: f(LB;)V context(B) public final fun f(): kotlin/Unit @@ -30,12 +28,10 @@ public final class C : kotlin/Any { // ------------------------------------------ package { - // requires compiler version 1.6.20 (level=ERROR) // signature: g(LA;)V context(A) public final fun g(): kotlin/Unit - // requires compiler version 1.6.20 (level=ERROR) // getter: getH(LB;)I context(B) public final val h: kotlin/Int