Remove annotation Suspend. Use modificator instead.

This commit is contained in:
Stanislav Erokhin
2016-12-14 22:35:38 +03:00
parent 6d73e13798
commit 642ea81625
7 changed files with 7 additions and 23 deletions
@@ -16,10 +16,10 @@
package org.jetbrains.kotlin.coroutines package org.jetbrains.kotlin.coroutines
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
import org.jetbrains.kotlin.descriptors.isSuspendFunctionType
val CallableDescriptor.isSuspendLambda get() = this is AnonymousFunctionDescriptor && this.isCoroutine val CallableDescriptor.isSuspendLambda get() = this is AnonymousFunctionDescriptor && this.isCoroutine
@@ -17,16 +17,12 @@
package org.jetbrains.kotlin.types.expressions package org.jetbrains.kotlin.types.expressions
import com.google.common.collect.Lists import com.google.common.collect.Lists
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.*
import org.jetbrains.kotlin.builtins.createFunctionType
import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType
import org.jetbrains.kotlin.builtins.isBuiltinFunctionalType
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
import org.jetbrains.kotlin.descriptors.isSuspendFunctionType
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.diagnostics.Errors.*
@@ -49,11 +49,6 @@ public annotation class AllowSuspendExtensions
@SinceKotlin("1.1") @SinceKotlin("1.1")
public val SUSPENDED: Any? = Any() 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 * 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 * `suspend` functions. These `suspend` extensions can only invoke other member or extension `suspend` functions on this parcitular
@@ -19,12 +19,10 @@ package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.builtins.* import org.jetbrains.kotlin.builtins.*
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotations 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.load.java.typeEnhancement.hasEnhancedNullability
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
@@ -74,7 +72,7 @@ fun <T : Any> mapType(
return mapType( return mapType(
createFunctionType( createFunctionType(
kotlinType.builtIns, kotlinType.builtIns,
FilteredAnnotations(kotlinType.annotations) { it != DescriptorUtils.SUSPEND_ANNOTATION_FQ_NAME }, kotlinType.annotations,
kotlinType.getReceiverTypeFromFunctionType(), kotlinType.getReceiverTypeFromFunctionType(),
kotlinType.getValueParameterTypesFromFunctionType().map(TypeProjection::getType) + kotlinType.getValueParameterTypesFromFunctionType().map(TypeProjection::getType) +
KotlinTypeFactory.simpleType( KotlinTypeFactory.simpleType(
@@ -34,6 +34,4 @@ fun ModuleDescriptor.resolveClassByFqName(fqName: FqName, lookupLocation: Lookup
?.getContributedClassifier(fqName.shortName(), lookupLocation) as? ClassDescriptor ?.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) val KotlinBuiltIns.continuationClassDescriptor get() = getBuiltInClassByFqName(DescriptorUtils.CONTINUATION_INTERFACE_FQ_NAME)
@@ -54,9 +54,6 @@ public class DescriptorUtils {
public static final FqName CONTINUATION_INTERFACE_FQ_NAME = public static final FqName CONTINUATION_INTERFACE_FQ_NAME =
KotlinBuiltIns.COROUTINES_PACKAGE_FQ_NAME.child(Name.identifier("Continuation")); 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() { private DescriptorUtils() {
} }
@@ -44,7 +44,7 @@ public interface ResumeInterceptor {
*/ */
@SinceKotlin("1.1") @SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
public fun <R, T> (@Suspend() (R.() -> T)).createCoroutine( public fun <R, T> (suspend R.() -> T).createCoroutine(
receiver: R, receiver: R,
resultHandler: Continuation<T>, resultHandler: Continuation<T>,
resumeInterceptor: ResumeInterceptor? = null resumeInterceptor: ResumeInterceptor? = null
@@ -57,7 +57,7 @@ public fun <R, T> (@Suspend() (R.() -> T)).createCoroutine(
*/ */
@SinceKotlin("1.1") @SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
public fun <R, T> (@Suspend() (R.() -> T)).startCoroutine( public fun <R, T> (suspend R.() -> T).startCoroutine(
receiver: R, receiver: R,
resultHandler: Continuation<T>, resultHandler: Continuation<T>,
resumeInterceptor: ResumeInterceptor? = null resumeInterceptor: ResumeInterceptor? = null
@@ -74,7 +74,7 @@ public fun <R, T> (@Suspend() (R.() -> T)).startCoroutine(
*/ */
@SinceKotlin("1.1") @SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
public fun <T> (@Suspend() (() -> T)).createCoroutine( public fun <T> (suspend () -> T).createCoroutine(
resultHandler: Continuation<T>, resultHandler: Continuation<T>,
resumeInterceptor: ResumeInterceptor? = null resumeInterceptor: ResumeInterceptor? = null
): Continuation<Unit> = (this as (Continuation<T>) -> Continuation<Unit>).invoke(withInterceptor(resultHandler, resumeInterceptor)) ): Continuation<Unit> = (this as (Continuation<T>) -> Continuation<Unit>).invoke(withInterceptor(resultHandler, resumeInterceptor))
@@ -87,7 +87,7 @@ public fun <T> (@Suspend() (() -> T)).createCoroutine(
*/ */
@SinceKotlin("1.1") @SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
public fun <T> (@Suspend() (() -> T)).startCoroutine( public fun <T> (suspend () -> T).startCoroutine(
resultHandler: Continuation<T>, resultHandler: Continuation<T>,
resumeInterceptor: ResumeInterceptor? = null resumeInterceptor: ResumeInterceptor? = null
) { ) {