[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)
|
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 =
|
private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int =
|
||||||
writeVersionRequirement(LanguageFeature.ReleaseCoroutines)
|
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(
|
fun writeVersionRequirement(
|
||||||
major: Int,
|
major: Int,
|
||||||
minor: 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 }
|
typeTable.serialize()?.let { builder.typeTable = it }
|
||||||
versionRequirementTable.serialize()?.let { builder.versionRequirementTable = it }
|
versionRequirementTable.serialize()?.let { builder.versionRequirementTable = it }
|
||||||
|
|
||||||
@@ -346,10 +340,6 @@ class DescriptorSerializer private constructor(
|
|||||||
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses))
|
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (descriptor.contextReceiverParameters.isNotEmpty()) {
|
|
||||||
builder.addVersionRequirement(writeCompilerVersionRequirement(1, 6, 20))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (local.metDefinitelyNotNullType) {
|
if (local.metDefinitelyNotNullType) {
|
||||||
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
|
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
|
||||||
}
|
}
|
||||||
@@ -447,10 +437,6 @@ class DescriptorSerializer private constructor(
|
|||||||
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses))
|
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.InlineClasses))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (descriptor.contextReceiverParameters.isNotEmpty()) {
|
|
||||||
builder.addVersionRequirement(writeCompilerVersionRequirement(1, 6, 20))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (local.metDefinitelyNotNullType) {
|
if (local.metDefinitelyNotNullType) {
|
||||||
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
|
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
|
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
|
// C.class
|
||||||
// ------------------------------------------
|
// ------------------------------------------
|
||||||
// requires compiler version 1.6.20 (level=ERROR)
|
|
||||||
context(A)
|
context(A)
|
||||||
public final class C : kotlin/Any {
|
public final class C : kotlin/Any {
|
||||||
|
|
||||||
// signature: <init>(LA;)V
|
// signature: <init>(LA;)V
|
||||||
public constructor()
|
public constructor()
|
||||||
|
|
||||||
// requires compiler version 1.6.20 (level=ERROR)
|
|
||||||
// signature: f(LB;)V
|
// signature: f(LB;)V
|
||||||
context(B)
|
context(B)
|
||||||
public final fun f(): kotlin/Unit
|
public final fun f(): kotlin/Unit
|
||||||
@@ -30,12 +28,10 @@ public final class C : kotlin/Any {
|
|||||||
// ------------------------------------------
|
// ------------------------------------------
|
||||||
package {
|
package {
|
||||||
|
|
||||||
// requires compiler version 1.6.20 (level=ERROR)
|
|
||||||
// signature: g(LA;)V
|
// signature: g(LA;)V
|
||||||
context(A)
|
context(A)
|
||||||
public final fun g(): kotlin/Unit
|
public final fun g(): kotlin/Unit
|
||||||
|
|
||||||
// requires compiler version 1.6.20 (level=ERROR)
|
|
||||||
// getter: getH(LB;)I
|
// getter: getH(LB;)I
|
||||||
context(B)
|
context(B)
|
||||||
public final val h: kotlin/Int
|
public final val h: kotlin/Int
|
||||||
|
|||||||
Reference in New Issue
Block a user