[K2] Disallow named functions as expressions

^KT-62573 Fixed
^KT-59945 Fixed
This commit is contained in:
Alejandro Serrano Mena
2023-10-13 12:42:46 +02:00
committed by Space Team
parent aaf7ccbebd
commit f227447837
18 changed files with 112 additions and 4 deletions
@@ -3056,6 +3056,18 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.SINGLE_ANONYMOUS_FUNCTION_WITH_NAME.errorFactory) { firDiagnostic ->
SingleAnonymousFunctionWithNameErrorImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.SINGLE_ANONYMOUS_FUNCTION_WITH_NAME.warningFactory) { firDiagnostic ->
SingleAnonymousFunctionWithNameWarningImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE) { firDiagnostic ->
AnonymousFunctionParameterWithDefaultValueImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -2164,6 +2164,14 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = AnonymousFunctionWithName::class
}
interface SingleAnonymousFunctionWithNameError : KtFirDiagnostic<KtFunction> {
override val diagnosticClass get() = SingleAnonymousFunctionWithNameError::class
}
interface SingleAnonymousFunctionWithNameWarning : KtFirDiagnostic<KtFunction> {
override val diagnosticClass get() = SingleAnonymousFunctionWithNameWarning::class
}
interface AnonymousFunctionParameterWithDefaultValue : KtFirDiagnostic<KtParameter> {
override val diagnosticClass get() = AnonymousFunctionParameterWithDefaultValue::class
}
@@ -2592,6 +2592,16 @@ internal class AnonymousFunctionWithNameImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtFunction>(firDiagnostic, token), KtFirDiagnostic.AnonymousFunctionWithName
internal class SingleAnonymousFunctionWithNameErrorImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtFunction>(firDiagnostic, token), KtFirDiagnostic.SingleAnonymousFunctionWithNameError
internal class SingleAnonymousFunctionWithNameWarningImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtFunction>(firDiagnostic, token), KtFirDiagnostic.SingleAnonymousFunctionWithNameWarning
internal class AnonymousFunctionParameterWithDefaultValueImpl(
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
@@ -9212,6 +9212,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/declarationChecks/kt2643MultiDeclInControlFlow.kt");
}
@Test
@TestMetadata("kt47245.kt")
public void testKt47245() throws Exception {
runTest("compiler/testData/diagnostics/tests/declarationChecks/kt47245.kt");
}
@Test
@TestMetadata("kt559.kt")
public void testKt559() throws Exception {
@@ -9212,6 +9212,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/declarationChecks/kt2643MultiDeclInControlFlow.kt");
}
@Test
@TestMetadata("kt47245.kt")
public void testKt47245() throws Exception {
runTest("compiler/testData/diagnostics/tests/declarationChecks/kt47245.kt");
}
@Test
@TestMetadata("kt559.kt")
public void testKt559() throws Exception {