[K1] Remove compiler version requirements for context receivers in metadata.
This commit is contained in:
+14
@@ -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
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user