FE 1.0: Make 'suspend fun', where 'suspend' is not builtin error in 1.8
#KT-49264 Fixed
This commit is contained in:
+6
@@ -6540,6 +6540,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/coroutines"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("modifierFormBuiltinSuspendFun.kt")
|
||||
public void testModifierFormBuiltinSuspendFun() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/coroutines/modifierFormBuiltinSuspendFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||
public void testSuspendInvokeInsideTry() throws Exception {
|
||||
|
||||
+6
@@ -6540,6 +6540,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/coroutines"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("modifierFormBuiltinSuspendFun.kt")
|
||||
public void testModifierFormBuiltinSuspendFun() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/coroutines/modifierFormBuiltinSuspendFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||
public void testSuspendInvokeInsideTry() throws Exception {
|
||||
|
||||
+6
@@ -6540,6 +6540,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/coroutines"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("modifierFormBuiltinSuspendFun.kt")
|
||||
public void testModifierFormBuiltinSuspendFun() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/coroutines/modifierFormBuiltinSuspendFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||
public void testSuspendInvokeInsideTry() throws Exception {
|
||||
|
||||
@@ -1290,7 +1290,8 @@ public interface Errors {
|
||||
DiagnosticFactory0<PsiElement> NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<KtReturnExpression> RETURN_FOR_BUILT_IN_SUSPEND = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN = DiagnosticFactory0.create(WARNING);
|
||||
DiagnosticFactoryForDeprecation0<PsiElement> MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN =
|
||||
DiagnosticFactoryForDeprecation0.create(LanguageFeature.ModifierNonBuiltinSuspendFunError);
|
||||
|
||||
DiagnosticFactory1<PsiElement, RenderedDiagnostic<?>> PLUGIN_ERROR = DiagnosticFactory1.create(ERROR);
|
||||
DiagnosticFactory1<PsiElement, RenderedDiagnostic<?>> PLUGIN_WARNING = DiagnosticFactory1.create(WARNING);
|
||||
|
||||
+4
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.resolve.calls.checkers
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.calls.util.isInfixCall
|
||||
@@ -38,7 +39,9 @@ object LambdaWithSuspendModifierCallChecker : CallChecker {
|
||||
context.trace.report(Errors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND.on(reportOn))
|
||||
} else {
|
||||
require(call.isInfixWithRightFun())
|
||||
context.trace.report(Errors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN.on(reportOn))
|
||||
context.trace.report(
|
||||
Errors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN.on(context.languageVersionSettings, reportOn)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// LANGUAGE: +ModifierNonBuiltinSuspendFunError
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
|
||||
infix fun Int.suspend(c: () -> Unit) {}
|
||||
|
||||
fun foo() {
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN_ERROR!>suspend<!> fun () {}
|
||||
|
||||
1.suspend(fun () {})
|
||||
}
|
||||
Vendored
+3
-3
@@ -3,7 +3,7 @@
|
||||
infix fun Int.suspend(c: () -> Unit) { c() }
|
||||
|
||||
fun bar() {
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN!>suspend<!> fun() {
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN_WARNING!>suspend<!> fun() {
|
||||
println()
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ fun bar() {
|
||||
println()
|
||||
}
|
||||
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN!>suspend<!> @Ann fun() {
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN_WARNING!>suspend<!> @Ann fun() {
|
||||
println()
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ fun bar() {
|
||||
annotation class Ann
|
||||
|
||||
fun main(suspend: WLambdaInvoke) {
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN!>suspend<!> fun() {}
|
||||
1 <!MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND_FUN_WARNING!>suspend<!> fun() {}
|
||||
}
|
||||
|
||||
class WLambdaInvoke {
|
||||
|
||||
Generated
+6
@@ -6546,6 +6546,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/coroutines"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("modifierFormBuiltinSuspendFun.kt")
|
||||
public void testModifierFormBuiltinSuspendFun() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/coroutines/modifierFormBuiltinSuspendFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||
public void testSuspendInvokeInsideTry() throws Exception {
|
||||
|
||||
@@ -259,6 +259,7 @@ enum class LanguageFeature(
|
||||
ReportMissingUpperBoundsViolatedErrorOnAbbreviationAtSupertypes(KOTLIN_1_8, kind = BUG_FIX), // KT-29168
|
||||
IgnoreNullabilityForErasedValueParameters(KOTLIN_1_8, kind = BUG_FIX),
|
||||
ForbidUsingExtensionPropertyTypeParameterInDelegate(KOTLIN_1_8, kind = BUG_FIX),
|
||||
ModifierNonBuiltinSuspendFunError(KOTLIN_1_8),
|
||||
|
||||
// 1.9
|
||||
|
||||
|
||||
Reference in New Issue
Block a user