Do not write version requirements for suspend functions

Previous attempt was at 6807ed6642, but it was reverted in 7771e5914d
(see that commit for the explanation). Now it should be fine to remove
these version requirements.

No issue reported because it's mostly not a user-visible change. The
main effect is that it reduces differences in metadata between K1 and
K2, namely it fixes the ValueClass.kt kotlinp test.
This commit is contained in:
Alexander Udalov
2023-07-27 15:54:54 +02:00
committed by Space Team
parent 06e370b012
commit 9c03dcd230
8 changed files with 2 additions and 95 deletions
@@ -478,10 +478,6 @@ class FirElementSerializer private constructor(
versionRequirementTable?.run {
builder.addAllVersionRequirement(serializeVersionRequirements(property))
if (property.isSuspendOrHasSuspendTypesInSignature()) {
builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion())
}
if (local.metDefinitelyNotNullType) {
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
}
@@ -573,10 +569,6 @@ class FirElementSerializer private constructor(
versionRequirementTable?.run {
builder.addAllVersionRequirement(serializeVersionRequirements(function))
if (function.isSuspendOrHasSuspendTypesInSignature()) {
builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion())
}
if (local.metDefinitelyNotNullType) {
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
}
@@ -679,10 +671,6 @@ class FirElementSerializer private constructor(
versionRequirementTable?.run {
builder.addAllVersionRequirement(serializeVersionRequirements(constructor))
if (constructor.isSuspendOrHasSuspendTypesInSignature()) {
builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion())
}
if (local.metDefinitelyNotNullType) {
builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes))
}
@@ -1062,11 +1050,6 @@ class FirElementSerializer private constructor(
private fun useTypeTable(): Boolean = extension.shouldUseTypeTable()
private fun FirCallableDeclaration.isSuspendOrHasSuspendTypesInSignature(): Boolean {
// TODO (types in signature)
return this.isSuspend
}
private fun MutableVersionRequirementTable.serializeVersionRequirements(container: FirAnnotationContainer): List<Int> =
serializeVersionRequirements(container.annotations)
@@ -1082,9 +1065,6 @@ class FirElementSerializer private constructor(
return writeLanguageVersionRequirement(languageFeature, this)
}
private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int =
writeVersionRequirement(LanguageFeature.ReleaseCoroutines)
private fun serializeVersionRequirementFromRequireKotlin(annotation: FirAnnotation): ProtoBuf.VersionRequirement.Builder? {
val argumentMapping = annotation.argumentMapping.mapping
@@ -1240,7 +1220,7 @@ class FirElementSerializer private constructor(
return serializer
}
fun writeLanguageVersionRequirement(
private fun writeLanguageVersionRequirement(
languageFeature: LanguageFeature,
versionRequirementTable: MutableVersionRequirementTable
): Int {
@@ -1252,7 +1232,7 @@ class FirElementSerializer private constructor(
)
}
fun writeVersionRequirement(
private fun writeVersionRequirement(
major: Int,
minor: Int,
patch: Int,