[FE] Prohibit expect external and expect tailrec

^KT-58536 Fixed
This commit is contained in:
Roman Efremov
2023-05-17 16:08:33 +02:00
committed by Space Team
parent e6d5df18b8
commit 439cc88525
26 changed files with 298 additions and 34 deletions
@@ -3252,6 +3252,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.EXPECTED_EXTERNAL_DECLARATION) { firDiagnostic ->
ExpectedExternalDeclarationImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.EXPECTED_TAILREC_FUNCTION) { firDiagnostic ->
ExpectedTailrecFunctionImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.IMPLEMENTATION_BY_DELEGATION_IN_EXPECT_CLASS) { firDiagnostic ->
ImplementationByDelegationInExpectClassImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -2290,6 +2290,14 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = ExpectedPrivateDeclaration::class
}
abstract class ExpectedExternalDeclaration : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = ExpectedExternalDeclaration::class
}
abstract class ExpectedTailrecFunction : KtFirDiagnostic<KtModifierListOwner>() {
override val diagnosticClass get() = ExpectedTailrecFunction::class
}
abstract class ImplementationByDelegationInExpectClass : KtFirDiagnostic<KtDelegatedSuperTypeEntry>() {
override val diagnosticClass get() = ImplementationByDelegationInExpectClass::class
}
@@ -2761,6 +2761,16 @@ internal class ExpectedPrivateDeclarationImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ExpectedPrivateDeclaration(), KtAbstractFirDiagnostic<KtModifierListOwner>
internal class ExpectedExternalDeclarationImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ExpectedExternalDeclaration(), KtAbstractFirDiagnostic<KtModifierListOwner>
internal class ExpectedTailrecFunctionImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ExpectedTailrecFunction(), KtAbstractFirDiagnostic<KtModifierListOwner>
internal class ImplementationByDelegationInExpectClassImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,