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 c988c334c89..76353fa3371 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 @@ -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 = 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, diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt index fb4a5fdee3f..f218c38bbae 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.serialization import com.intellij.openapi.project.Project import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.isSuspendFunctionType -import org.jetbrains.kotlin.builtins.isSuspendFunctionTypeOrSubtype import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings @@ -43,7 +42,6 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptorVisibility import org.jetbrains.kotlin.serialization.deserialization.memberKind import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.extensions.TypeAttributeTranslators -import org.jetbrains.kotlin.types.typeUtil.contains import org.jetbrains.kotlin.types.typeUtil.replaceAnnotations import java.util.* @@ -296,10 +294,6 @@ class DescriptorSerializer private constructor( versionRequirementTable?.run { builder.addAllVersionRequirement(serializeVersionRequirements(descriptor)) - if (descriptor.isSuspendOrHasSuspendTypesInSignature()) { - builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion()) - } - if (local.metDefinitelyNotNullType) { builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } @@ -389,10 +383,6 @@ class DescriptorSerializer private constructor( versionRequirementTable?.run { builder.addAllVersionRequirement(serializeVersionRequirements(descriptor)) - if (descriptor.isSuspendOrHasSuspendTypesInSignature()) { - builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion()) - } - if (local.metDefinitelyNotNullType) { builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } @@ -421,10 +411,6 @@ class DescriptorSerializer private constructor( versionRequirementTable?.run { builder.addAllVersionRequirement(serializeVersionRequirements(descriptor)) - if (descriptor.isSuspendOrHasSuspendTypesInSignature()) { - builder.addVersionRequirement(writeVersionRequirementDependingOnCoroutinesVersion()) - } - if (local.metDefinitelyNotNullType) { builder.addVersionRequirement(writeVersionRequirement(LanguageFeature.DefinitelyNonNullableTypes)) } @@ -437,24 +423,6 @@ class DescriptorSerializer private constructor( return builder } - private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int = - writeVersionRequirement(LanguageFeature.ReleaseCoroutines) - - private fun CallableMemberDescriptor.isSuspendOrHasSuspendTypesInSignature(): Boolean { - if (this is FunctionDescriptor && isSuspend) return true - - return allTypesFromSignature().any { type -> type.contains(UnwrappedType::isSuspendFunctionTypeOrSubtype) } - } - - private fun CallableMemberDescriptor.allTypesFromSignature(): List { - return listOfNotNull( - extensionReceiverParameter?.type, - returnType, - *typeParameters.flatMap { it.upperBounds }.toTypedArray(), - *valueParameters.map(ValueParameterDescriptor::getType).toTypedArray() - ) - } - private fun typeAliasProto(descriptor: TypeAliasDescriptor): ProtoBuf.TypeAlias.Builder? { val builder = ProtoBuf.TypeAlias.newBuilder() val local = createChildSerializer(descriptor) diff --git a/compiler/testData/versionRequirement/nestedClassMembers.kt b/compiler/testData/versionRequirement/nestedClassMembers.kt index ad651b2c192..56a703a9169 100644 --- a/compiler/testData/versionRequirement/nestedClassMembers.kt +++ b/compiler/testData/versionRequirement/nestedClassMembers.kt @@ -12,8 +12,6 @@ class Outer { @RequireKotlin("1.3") val x = "" - - suspend fun s() {} } } diff --git a/compiler/testData/versionRequirement/suspendFun.kt b/compiler/testData/versionRequirement/suspendFun.kt deleted file mode 100644 index 6e3777d81b7..00000000000 --- a/compiler/testData/versionRequirement/suspendFun.kt +++ /dev/null @@ -1,16 +0,0 @@ -package test - -suspend fun topLevel() {} - -class Foo { - constructor(block: suspend () -> Unit) - - suspend fun member() {} -} - -fun async1(block: suspend () -> Unit) {} -fun (suspend () -> Unit).async2() {} -fun async3(): suspend () -> Unit = null!! -fun async4(): Map Unit>? = null - -val (suspend () -> Unit).asyncVal: () -> Unit get() = {} diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt index 69ea63f1797..30472bcbc72 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractVersionRequirementTest.kt @@ -124,23 +124,6 @@ abstract class AbstractVersionRequirementTest : TestCaseWithTmpdir() { protected abstract fun loadModule(directory: File): ModuleDescriptor - fun testSuspendFun() { - doTest( - VersionRequirement.Version(1, 3), DeprecationLevel.ERROR, null, ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION, null, - customLanguageVersion = LanguageVersion.KOTLIN_1_3, - fqNamesWithRequirements = listOf( - "test.topLevel", - "test.Foo.member", - "test.Foo.", - "test.async1", - "test.async2", - "test.async3", - "test.async4", - "test.asyncVal" - ) - ) - } - fun testDefinitelyNotNull() { doTest( VersionRequirement.Version(1, 7), DeprecationLevel.ERROR, null, ProtoBuf.VersionRequirement.VersionKind.LANGUAGE_VERSION, null, @@ -221,7 +204,6 @@ abstract class AbstractVersionRequirementTest : TestCaseWithTmpdir() { "test.Outer.Inner.Deep.", "test.Outer.Inner.Deep.f", "test.Outer.Inner.Deep.x", - "test.Outer.Inner.Deep.s", "test.Outer.Nested.g", "test.Outer.Companion" ) diff --git a/libraries/tools/kotlinp/testData/SimpleClass.txt b/libraries/tools/kotlinp/testData/SimpleClass.txt index e8464cdeec6..36ea50ff3da 100644 --- a/libraries/tools/kotlinp/testData/SimpleClass.txt +++ b/libraries/tools/kotlinp/testData/SimpleClass.txt @@ -11,7 +11,6 @@ public final class SimpleClass : kotlin/Any { // signature: f$test_module(Ljava/lang/Object;[Ljava/util/Map;)Ljava/util/Set; internal final fun T#3.f(vararg z: kotlin/collections/Map /* kotlin/Array> */): kotlin/collections/Set<*> - // requires language version 1.3.0 (level=ERROR) // signature: g(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; protected final inline suspend fun g(crossinline a: kotlin/Function0, noinline b: suspend kotlin/Function1, kotlin/Any?>): kotlin/Unit diff --git a/libraries/tools/kotlinp/testData/ValueClass.kt b/libraries/tools/kotlinp/testData/ValueClass.kt index 3fbfad6fea7..086f58458fc 100644 --- a/libraries/tools/kotlinp/testData/ValueClass.kt +++ b/libraries/tools/kotlinp/testData/ValueClass.kt @@ -1,5 +1,3 @@ -// IGNORE K2 - @JvmInline value class A(private val i: Int?) diff --git a/libraries/tools/kotlinp/testData/ValueClass.txt b/libraries/tools/kotlinp/testData/ValueClass.txt index 36754899dd6..1370f9ab0a5 100644 --- a/libraries/tools/kotlinp/testData/ValueClass.txt +++ b/libraries/tools/kotlinp/testData/ValueClass.txt @@ -28,7 +28,6 @@ public final value class A : kotlin/Any { // ------------------------------------------ public final value class B : kotlin/Any { - // requires language version 1.3.0 (level=ERROR) // signature: constructor-impl(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1; public constructor(f: suspend kotlin/Function1, kotlin/Any?>) @@ -41,7 +40,6 @@ public final value class B : kotlin/Any { // signature: toString-impl(Lkotlin/jvm/functions/Function1;)Ljava/lang/String; public open /* synthesized */ fun toString(): kotlin/String - // requires language version 1.3.0 (level=ERROR) // field: f:Lkotlin/jvm/functions/Function1; private final val f: suspend kotlin/Function1, kotlin/Any?> private final get