Add language feature for suspend functions in fun interfaces

Since in 1.5 JVM_IR is enabled by default and supports suspend functions
in fun interfaces, it is safe to enable the feature by default as well.
This commit is contained in:
Ilmir Usmanov
2021-01-18 13:30:52 +01:00
parent 6aa6f82c47
commit d1ee45b518
9 changed files with 82 additions and 1 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.resolve.checkers
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
@@ -60,7 +61,10 @@ class FunInterfaceDeclarationChecker : DeclarationChecker {
) {
val ktFunction = abstractMember.source.getPsi() as? KtNamedFunction
if (abstractMember.isSuspend) {
if (abstractMember.isSuspend &&
!(context.languageVersionSettings.supportsFeature(LanguageFeature.SuspendFunctionsInFunInterfaces) &&
context.languageVersionSettings.supportsFeature(LanguageFeature.JvmIrEnabledByDefault))
) {
val reportOn = ktFunction?.modifierList?.getModifier(KtTokens.SUSPEND_KEYWORD) ?: funInterfaceKeyword
context.trace.report(Errors.FUN_INTERFACE_WITH_SUSPEND_FUNCTION.on(reportOn))
return