[K1] Remove compiler version requirements for context receivers in metadata.

This commit is contained in:
Mads Ager
2023-03-10 11:37:39 +01:00
committed by Space Cloud
parent ed84fbd8a6
commit 683220a32c
5 changed files with 14 additions and 56 deletions
@@ -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,
@@ -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))
}
@@ -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
@@ -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
)
)
}
}
-4
View File
@@ -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: <init>(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