diff --git a/compiler/frontend/src/org/jetbrains/kotlin/coroutines/coroutineUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/coroutines/coroutineUtil.kt index 497dc3ae9ec..008090a7468 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/coroutines/coroutineUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/coroutines/coroutineUtil.kt @@ -16,10 +16,10 @@ package org.jetbrains.kotlin.coroutines +import org.jetbrains.kotlin.builtins.isSuspendFunctionType import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor -import org.jetbrains.kotlin.descriptors.isSuspendFunctionType val CallableDescriptor.isSuspendLambda get() = this is AnonymousFunctionDescriptor && this.isCoroutine diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/FunctionsTypingVisitor.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/FunctionsTypingVisitor.kt index f1c43d3097f..48d4c1f9453 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/FunctionsTypingVisitor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/FunctionsTypingVisitor.kt @@ -17,16 +17,12 @@ package org.jetbrains.kotlin.types.expressions import com.google.common.collect.Lists -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.builtins.createFunctionType -import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType -import org.jetbrains.kotlin.builtins.isBuiltinFunctionalType +import org.jetbrains.kotlin.builtins.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl -import org.jetbrains.kotlin.descriptors.isSuspendFunctionType import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors.* diff --git a/core/builtins/src/kotlin/coroutines/Coroutines.kt b/core/builtins/src/kotlin/coroutines/Coroutines.kt index 8862e00248f..9c13bf81c63 100644 --- a/core/builtins/src/kotlin/coroutines/Coroutines.kt +++ b/core/builtins/src/kotlin/coroutines/Coroutines.kt @@ -49,11 +49,6 @@ public annotation class AllowSuspendExtensions @SinceKotlin("1.1") public val SUSPENDED: Any? = Any() -@SinceKotlin("1.1") -@Target(AnnotationTarget.TYPE) -@Retention(AnnotationRetention.BINARY) -public annotation class Suspend - /** * Classes and interfaces marked with this annotation are restricted when used as receivers for extension * `suspend` functions. These `suspend` extensions can only invoke other member or extension `suspend` functions on this parcitular diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt index fc0650bf01d..34f213c3ee4 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt @@ -19,12 +19,10 @@ package org.jetbrains.kotlin.load.kotlin import org.jetbrains.kotlin.builtins.* import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotations -import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations import org.jetbrains.kotlin.load.java.typeEnhancement.hasEnhancedNullability import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.platform.JavaToKotlinClassMap -import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType @@ -74,7 +72,7 @@ fun mapType( return mapType( createFunctionType( kotlinType.builtIns, - FilteredAnnotations(kotlinType.annotations) { it != DescriptorUtils.SUSPEND_ANNOTATION_FQ_NAME }, + kotlinType.annotations, kotlinType.getReceiverTypeFromFunctionType(), kotlinType.getValueParameterTypesFromFunctionType().map(TypeProjection::getType) + KotlinTypeFactory.simpleType( diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/descriptorUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/descriptorUtil.kt index 90a6c6a47b9..ad5fca337d3 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/descriptorUtil.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/descriptorUtil.kt @@ -34,6 +34,4 @@ fun ModuleDescriptor.resolveClassByFqName(fqName: FqName, lookupLocation: Lookup ?.getContributedClassifier(fqName.shortName(), lookupLocation) as? ClassDescriptor } -val KotlinType.isSuspendFunctionType get() = isFunctionType && annotations.hasAnnotation(DescriptorUtils.SUSPEND_ANNOTATION_FQ_NAME) - val KotlinBuiltIns.continuationClassDescriptor get() = getBuiltInClassByFqName(DescriptorUtils.CONTINUATION_INTERFACE_FQ_NAME) diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index 943dad4aa38..4e24de63e74 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -54,9 +54,6 @@ public class DescriptorUtils { public static final FqName CONTINUATION_INTERFACE_FQ_NAME = KotlinBuiltIns.COROUTINES_PACKAGE_FQ_NAME.child(Name.identifier("Continuation")); - public static final FqName SUSPEND_ANNOTATION_FQ_NAME = - KotlinBuiltIns.COROUTINES_PACKAGE_FQ_NAME.child(Name.identifier("Suspend")); - private DescriptorUtils() { } diff --git a/core/runtime.jvm/src/kotlin/coroutines/Builders.kt b/core/runtime.jvm/src/kotlin/coroutines/Builders.kt index 0e247efef61..814c3731d6b 100644 --- a/core/runtime.jvm/src/kotlin/coroutines/Builders.kt +++ b/core/runtime.jvm/src/kotlin/coroutines/Builders.kt @@ -44,7 +44,7 @@ public interface ResumeInterceptor { */ @SinceKotlin("1.1") @Suppress("UNCHECKED_CAST") -public fun (@Suspend() (R.() -> T)).createCoroutine( +public fun (suspend R.() -> T).createCoroutine( receiver: R, resultHandler: Continuation, resumeInterceptor: ResumeInterceptor? = null @@ -57,7 +57,7 @@ public fun (@Suspend() (R.() -> T)).createCoroutine( */ @SinceKotlin("1.1") @Suppress("UNCHECKED_CAST") -public fun (@Suspend() (R.() -> T)).startCoroutine( +public fun (suspend R.() -> T).startCoroutine( receiver: R, resultHandler: Continuation, resumeInterceptor: ResumeInterceptor? = null @@ -74,7 +74,7 @@ public fun (@Suspend() (R.() -> T)).startCoroutine( */ @SinceKotlin("1.1") @Suppress("UNCHECKED_CAST") -public fun (@Suspend() (() -> T)).createCoroutine( +public fun (suspend () -> T).createCoroutine( resultHandler: Continuation, resumeInterceptor: ResumeInterceptor? = null ): Continuation = (this as (Continuation) -> Continuation).invoke(withInterceptor(resultHandler, resumeInterceptor)) @@ -87,7 +87,7 @@ public fun (@Suspend() (() -> T)).createCoroutine( */ @SinceKotlin("1.1") @Suppress("UNCHECKED_CAST") -public fun (@Suspend() (() -> T)).startCoroutine( +public fun (suspend () -> T).startCoroutine( resultHandler: Continuation, resumeInterceptor: ResumeInterceptor? = null ) {