diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt index f197708d2ef..98f98510517 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -4665,6 +4665,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES) { firDiagnostic -> + MixingSuspendAndNonSuspendSupertypesImpl( + firDiagnostic as KtPsiDiagnostic, + token, + ) + } add(FirErrors.REDUNDANT_LABEL_WARNING) { firDiagnostic -> RedundantLabelWarningImpl( firDiagnostic as KtPsiDiagnostic, diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt index 4f571da7800..569b54d71f6 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt @@ -3256,6 +3256,10 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = ReturnForBuiltInSuspend::class } + interface MixingSuspendAndNonSuspendSupertypes : KtFirDiagnostic { + override val diagnosticClass get() = MixingSuspendAndNonSuspendSupertypes::class + } + interface RedundantLabelWarning : KtFirDiagnostic { override val diagnosticClass get() = RedundantLabelWarning::class } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 2ed9f34903b..345b35cce67 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -3928,6 +3928,11 @@ internal class ReturnForBuiltInSuspendImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.ReturnForBuiltInSuspend +internal class MixingSuspendAndNonSuspendSupertypesImpl( + firDiagnostic: KtPsiDiagnostic, + token: KtLifetimeToken, +) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.MixingSuspendAndNonSuspendSupertypes + internal class RedundantLabelWarningImpl( firDiagnostic: KtPsiDiagnostic, token: KtLifetimeToken, diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index aff8ae5da7d..c21fe6d5e57 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -1649,6 +1649,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { LanguageFeature.ModifierNonBuiltinSuspendFunError, PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED ) val RETURN_FOR_BUILT_IN_SUSPEND by error() + val MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES by error(PositioningStrategy.SUPERTYPES_LIST) } val LABEL by object : DiagnosticGroup("label") { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index 2f40d56b3f9..69f355afc62 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -826,6 +826,7 @@ object FirErrors { val MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND by error0(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) val MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN by deprecationError0(ModifierNonBuiltinSuspendFunError, SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) val RETURN_FOR_BUILT_IN_SUSPEND by error0() + val MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES by error0(SourceElementPositioningStrategies.SUPERTYPES_LIST) // label val REDUNDANT_LABEL_WARNING by warning0(SourceElementPositioningStrategies.LABEL) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt index 965867236c9..4fbe57ad06e 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt @@ -109,6 +109,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirEnumCompanionInEnumConstructorCallChecker, FirBadInheritedJavaSignaturesChecker, FirSealedInterfaceAllowedChecker, + FirSuspendFunctionAsSupertypeChecker, ) override val regularClassCheckers: Set diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSuspendFunctionAsSupertypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSuspendFunctionAsSupertypeChecker.kt new file mode 100644 index 00000000000..3e26c1ac00e --- /dev/null +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirSuspendFunctionAsSupertypeChecker.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.analysis.checkers.declaration + +import org.jetbrains.kotlin.builtins.functions.isBasicFunctionOrKFunction +import org.jetbrains.kotlin.builtins.functions.isSuspendOrKSuspendFunction +import org.jetbrains.kotlin.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.diagnostics.reportOn +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.declarations.FirClass +import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes +import org.jetbrains.kotlin.fir.types.functionTypeKind + +object FirSuspendFunctionAsSupertypeChecker : FirClassChecker() { + override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) { + val supertypes = lookupSuperTypes(declaration.symbol, lookupInterfaces = true, deep = true, context.session) + .mapNotNull { it.functionTypeKind(context.session) } + + if ( + supertypes.any { it.isSuspendOrKSuspendFunction } && + supertypes.any { it.isBasicFunctionOrKFunction } + ) { + reporter.reportOn(declaration.source, FirErrors.MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES, context) + } + } +} diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index 893b711354f..a40ccf6ce46 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -356,6 +356,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.METHOD_OF_ANY_IMP import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISPLACED_TYPE_PARAMETER_CONSTRAINTS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_STDLIB_CLASS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MULTIPLE_ARGUMENTS_APPLICABLE_FOR_CONTEXT_RECEIVER @@ -2347,6 +2348,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { " See https://youtrack.jetbrains.com/issue/KT-49264" ) map.put(RETURN_FOR_BUILT_IN_SUSPEND, "Using implicit label for this lambda is prohibited") + map.put(MIXING_SUSPEND_AND_NON_SUSPEND_SUPERTYPES, "Mixing suspend and non-suspend supertypes is not allowed") // Label map.put( diff --git a/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt index bd891ebc020..c30508cc696 100644 --- a/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt +++ b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt @@ -65,7 +65,7 @@ object PositioningStrategies { val SUPERTYPES_LIST: PositioningStrategy = object : PositioningStrategy() { override fun mark(element: PsiElement): List { val supertypes = (( - element as? KtClass + element as? KtClassOrObject ) ?: return markElement(element) ).superTypeListEntries return if (supertypes.isEmpty()) diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt deleted file mode 100644 index 4ba387ac1c8..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt +++ /dev/null @@ -1,18 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED - -import kotlin.reflect.* - -class C: KSuspendFunction0, () -> Unit { - override suspend fun invoke() { - } -} - -interface I: KSuspendFunction0, () -> Unit { -} - -object O: KSuspendFunction0, () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt index a8e304860bf..a82ee179ba2 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt deleted file mode 100644 index 1a44e0821b3..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt +++ /dev/null @@ -1,29 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED - -import kotlin.reflect.* - -abstract class CSuper: () -> Unit - -class C: CSuper(), KSuspendFunction0 { - override suspend fun invoke() { - } -} - -object O: CSuper(), KSuspendFunction0 { - override suspend fun invoke() { - } -} - -abstract class SCSuper: KSuspendFunction0 - -class C1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} - -object O1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt index 699573e7413..e889865b6f6 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt deleted file mode 100644 index 02735fe5e92..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt +++ /dev/null @@ -1,20 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED - -import kotlin.reflect.* - -fun interface FISuper: () -> Unit - -class C: KSuspendFunction0, FISuper { - override suspend fun invoke() { - } -} - -interface I: KSuspendFunction0, FISuper { -} - -object O: KSuspendFunction0, FISuper { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt index f780e12b114..09b770ed246 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt deleted file mode 100644 index 4b04fe2c5d4..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt +++ /dev/null @@ -1,48 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED - -import kotlin.reflect.* - -interface ISuper: () -> Unit - -class C: KSuspendFunction0, ISuper { - override suspend fun invoke() { - } -} - -interface I: KSuspendFunction0, ISuper { -} - -object O: KSuspendFunction0, ISuper { - override suspend fun invoke() { - } -} - -interface SISuper: KSuspendFunction0 - -class C1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -interface I1: SISuper, () -> Unit { -} - -object O1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -class C2: SISuper, ISuper { - override suspend fun invoke() { - } -} - -interface I2: SISuper, ISuper { -} - -object O2: SISuper, ISuper { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt index 9bd3a1d012d..fd4eda192a2 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/kSuspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS, -ABSTRACT_MEMBER_NOT_IMPLEMENTED, -ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.fir.kt deleted file mode 100644 index 2e2ee9204f2..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.fir.kt +++ /dev/null @@ -1,19 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -class C: suspend () -> Unit, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI: suspend () -> Unit, () -> Unit { -} - -interface I: suspend () -> Unit, () -> Unit { -} - -object O: suspend () -> Unit, () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.kt index 19297601685..a3996f00cca 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt deleted file mode 100644 index e15c72476c6..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt +++ /dev/null @@ -1,27 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -abstract class CSuper: () -> Unit - -class C: CSuper(), suspend () -> Unit { - override suspend fun invoke() { - } -} - -object O: CSuper(), suspend () -> Unit { - override suspend fun invoke() { - } -} - -abstract class SCSuper: suspend () -> Unit - -class C1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} - -object O1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt index 551de20be71..e64359870c3 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt deleted file mode 100644 index 56378c72681..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt +++ /dev/null @@ -1,55 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -fun interface FISuper: () -> Unit - -class C: suspend () -> Unit, FISuper { - override suspend fun invoke() { - } -} - -fun interface FI: suspend () -> Unit, FISuper { -} - -interface I: suspend () -> Unit, FISuper { -} - -object O: suspend () -> Unit, FISuper { - override suspend fun invoke() { - } -} - -fun interface SFISuper: suspend () -> Unit - -class C1: SFISuper, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI1: SFISuper, () -> Unit { -} - -interface I1: SFISuper, () -> Unit { -} - -object O1: SFISuper, () -> Unit { - override suspend fun invoke() { - } -} - -class C2: SFISuper, FISuper { - override suspend fun invoke() { - } -} - -fun interface FI2: SFISuper, FISuper { -} - -interface I2: SFISuper, FISuper { -} - -object O2: SFISuper, FISuper { - override suspend fun invoke() { - } -} diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt index 2166de80679..34055071d13 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt deleted file mode 100644 index ba3919175ab..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt +++ /dev/null @@ -1,55 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -interface ISuper: () -> Unit - -class C: suspend () -> Unit, ISuper { - override suspend fun invoke() { - } -} - -fun interface FI: suspend () -> Unit, ISuper { -} - -interface I: suspend () -> Unit, ISuper { -} - -object O: suspend () -> Unit, ISuper { - override suspend fun invoke() { - } -} - -interface SISuper: suspend () -> Unit - -class C1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI1: SISuper, () -> Unit { -} - -interface I1: SISuper, () -> Unit { -} - -object O1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -class C2: SISuper, ISuper { - override suspend fun invoke() { - } -} - -fun interface FI2: SISuper, ISuper { -} - -interface I2: SISuper, ISuper { -} - -object O2: SISuper, ISuper { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt index 09f6919ce92..938700fcab0 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/simple/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt deleted file mode 100644 index 6d87b464d77..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.fir.kt +++ /dev/null @@ -1,20 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS -import kotlin.coroutines.* - -class C: SuspendFunction0, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI: SuspendFunction0, () -> Unit { -} - -interface I: SuspendFunction0, () -> Unit { -} - -object O: SuspendFunction0, () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt index 0feff2d10ff..b95074a3f6a 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt deleted file mode 100644 index a0fd4837d67..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.fir.kt +++ /dev/null @@ -1,29 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -import kotlin.coroutines.* - -abstract class CSuper: () -> Unit - -class C: CSuper(), SuspendFunction0 { - override suspend fun invoke() { - } -} - -object O: CSuper(), SuspendFunction0 { - override suspend fun invoke() { - } -} - -abstract class SCSuper: SuspendFunction0 - -class C1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} - -object O1: SCSuper(), () -> Unit { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt index 59556d8ed4c..b3b96a57155 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperClass.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt deleted file mode 100644 index a13f5f0ce62..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.fir.kt +++ /dev/null @@ -1,57 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -import kotlin.coroutines.* - -fun interface FISuper: () -> Unit - -class C: SuspendFunction0, FISuper { - override suspend fun invoke() { - } -} - -fun interface FI: SuspendFunction0, FISuper { -} - -interface I: SuspendFunction0, FISuper { -} - -object O: SuspendFunction0, FISuper { - override suspend fun invoke() { - } -} - -fun interface SFISuper: SuspendFunction0 - -class C1: SFISuper, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI1: SFISuper, () -> Unit { -} - -interface I1: SFISuper, () -> Unit { -} - -object O1: SFISuper, () -> Unit { - override suspend fun invoke() { - } -} - -class C2: SFISuper, FISuper { - override suspend fun invoke() { - } -} - -fun interface FI2: SFISuper, FISuper { -} - -interface I2: SFISuper, FISuper { -} - -object O2: SFISuper, FISuper { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt index 8272c7b6961..1810f4c5afa 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperFunInterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt deleted file mode 100644 index 09e83a5b688..00000000000 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.fir.kt +++ /dev/null @@ -1,57 +0,0 @@ -// !LANGUAGE: +SuspendFunctionAsSupertype -// SKIP_TXT -// DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS - -import kotlin.coroutines.* - -interface ISuper: () -> Unit - -class C: SuspendFunction0, ISuper { - override suspend fun invoke() { - } -} - -fun interface FI: SuspendFunction0, ISuper { -} - -interface I: SuspendFunction0, ISuper { -} - -object O: SuspendFunction0, ISuper { - override suspend fun invoke() { - } -} - -interface SISuper: SuspendFunction0 - -class C1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -fun interface FI1: SISuper, () -> Unit { -} - -interface I1: SISuper, () -> Unit { -} - -object O1: SISuper, () -> Unit { - override suspend fun invoke() { - } -} - -class C2: SISuper, ISuper { - override suspend fun invoke() { - } -} - -fun interface FI2: SISuper, ISuper { -} - -interface I2: SISuper, ISuper { -} - -object O2: SISuper, ISuper { - override suspend fun invoke() { - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt index 5894ad8c6b9..638329b25b6 100644 --- a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionAsSupertype/suspendFunctionN/mixingSuspendAndNonSuspendSupertypesThruSuperinterface.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +SuspendFunctionAsSupertype // SKIP_TXT // DIAGNOSTICS: -CONFLICTING_INHERITED_MEMBERS, -CONFLICTING_OVERLOADS