FE: Make synchronized suspend functions and lambdas error in 1.8
#KT-27333 Fixed
This commit is contained in:
+2
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm.checkers
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||
@@ -33,7 +34,7 @@ object SynchronizedAnnotationOnLambdaChecker : AdditionalAnnotationChecker {
|
||||
val literal = (annotated?.unwrapParenthesesLabelsAndAnnotations() as? KtLambdaExpression)?.functionLiteral ?: return
|
||||
val descriptor = trace.bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, literal]
|
||||
if (descriptor is FunctionDescriptor && descriptor.isSuspend) {
|
||||
trace.report(ErrorsJvm.SYNCHRONIZED_ON_SUSPEND.on(annotation))
|
||||
trace.report(ErrorsJvm.SYNCHRONIZED_ON_SUSPEND.on(languageVersionSettings, annotation))
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -198,7 +198,7 @@ class SynchronizedAnnotationChecker : DeclarationChecker {
|
||||
} else if (descriptor.isInline) {
|
||||
context.trace.report(ErrorsJvm.SYNCHRONIZED_ON_INLINE.on(annotationEntry))
|
||||
} else if (descriptor.isSuspend) {
|
||||
context.trace.report(ErrorsJvm.SYNCHRONIZED_ON_SUSPEND.on(annotationEntry))
|
||||
context.trace.report(ErrorsJvm.SYNCHRONIZED_ON_SUSPEND.on(context.languageVersionSettings, annotationEntry))
|
||||
} else if (descriptor.containingDeclaration.let { it is ClassDescriptor && it.isValue }) {
|
||||
context.trace.report(ErrorsJvm.SYNCHRONIZED_ON_VALUE_CLASS.on(annotationEntry))
|
||||
}
|
||||
|
||||
+2
-1
@@ -49,7 +49,8 @@ public interface ErrorsJvm {
|
||||
DiagnosticFactory0<KtAnnotationEntry> SYNCHRONIZED_ON_ABSTRACT = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<KtElement> SYNCHRONIZED_ON_INLINE = DiagnosticFactory0.create(WARNING);
|
||||
DiagnosticFactory0<KtElement> SYNCHRONIZED_ON_VALUE_CLASS = DiagnosticFactory0.create(WARNING);
|
||||
DiagnosticFactory0<PsiElement> SYNCHRONIZED_ON_SUSPEND = DiagnosticFactory0.create(WARNING);
|
||||
DiagnosticFactoryForDeprecation0<PsiElement> SYNCHRONIZED_ON_SUSPEND =
|
||||
DiagnosticFactoryForDeprecation0.create(LanguageFeature.SynchronizedSuspendError);
|
||||
DiagnosticFactory0<KtAnnotationEntry> SYNCHRONIZED_IN_INTERFACE = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
DiagnosticFactory0<KtAnnotationEntry> OVERLOADS_WITHOUT_DEFAULT_ARGUMENTS = DiagnosticFactory0.create(WARNING);
|
||||
|
||||
Reference in New Issue
Block a user