[FIR] Prohibit suspend anonymous functions in statement position
^KT-62018 Fixed ^KT-62019
This commit is contained in:
committed by
Space Team
parent
cae6e0ee0f
commit
fb00c1dfb6
+6
@@ -1691,6 +1691,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.ANONYMOUS_SUSPEND_FUNCTION) { firDiagnostic ->
|
||||
AnonymousSuspendFunctionImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.VALUE_CLASS_NOT_TOP_LEVEL) { firDiagnostic ->
|
||||
ValueClassNotTopLevelImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
|
||||
+4
@@ -1220,6 +1220,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = NoExplicitReturnTypeInApiModeWarning::class
|
||||
}
|
||||
|
||||
interface AnonymousSuspendFunction : KtFirDiagnostic<KtDeclaration> {
|
||||
override val diagnosticClass get() = AnonymousSuspendFunction::class
|
||||
}
|
||||
|
||||
interface ValueClassNotTopLevel : KtFirDiagnostic<KtDeclaration> {
|
||||
override val diagnosticClass get() = ValueClassNotTopLevel::class
|
||||
}
|
||||
|
||||
+5
@@ -1460,6 +1460,11 @@ internal class NoExplicitReturnTypeInApiModeWarningImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.NoExplicitReturnTypeInApiModeWarning
|
||||
|
||||
internal class AnonymousSuspendFunctionImpl(
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtDeclaration>(firDiagnostic, token), KtFirDiagnostic.AnonymousSuspendFunction
|
||||
|
||||
internal class ValueClassNotTopLevelImpl(
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
|
||||
+6
@@ -2027,6 +2027,12 @@ public class DiagnosticCompilerTestFirTestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/diagnostics/supertypeInitializedWithoutPrimaryConstructor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendAnonymousFunction.kt")
|
||||
public void testSuspendAnonymousFunction() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/diagnostics/suspendAnonymousFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("testIllegalAnnotationClass.kt")
|
||||
public void testTestIllegalAnnotationClass() throws Exception {
|
||||
|
||||
+6
@@ -2027,6 +2027,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFirTestDataTestGenerated
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/diagnostics/supertypeInitializedWithoutPrimaryConstructor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendAnonymousFunction.kt")
|
||||
public void testSuspendAnonymousFunction() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/diagnostics/suspendAnonymousFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("testIllegalAnnotationClass.kt")
|
||||
public void testTestIllegalAnnotationClass() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user