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);
|
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
|
@Test
|
||||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||||
public void testSuspendInvokeInsideTry() throws Exception {
|
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);
|
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
|
@Test
|
||||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||||
public void testSuspendInvokeInsideTry() throws Exception {
|
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);
|
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
|
@Test
|
||||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||||
public void testSuspendInvokeInsideTry() throws Exception {
|
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<PsiElement> NON_MODIFIER_FORM_FOR_BUILT_IN_SUSPEND = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtReturnExpression> RETURN_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 = 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_ERROR = DiagnosticFactory1.create(ERROR);
|
||||||
DiagnosticFactory1<PsiElement, RenderedDiagnostic<?>> PLUGIN_WARNING = DiagnosticFactory1.create(WARNING);
|
DiagnosticFactory1<PsiElement, RenderedDiagnostic<?>> PLUGIN_WARNING = DiagnosticFactory1.create(WARNING);
|
||||||
|
|||||||
+4
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.calls.checkers
|
package org.jetbrains.kotlin.resolve.calls.checkers
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.util.isInfixCall
|
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))
|
context.trace.report(Errors.MODIFIER_FORM_FOR_NON_BUILT_IN_SUSPEND.on(reportOn))
|
||||||
} else {
|
} else {
|
||||||
require(call.isInfixWithRightFun())
|
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() }
|
infix fun Int.suspend(c: () -> Unit) { c() }
|
||||||
|
|
||||||
fun bar() {
|
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()
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ fun bar() {
|
|||||||
println()
|
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()
|
println()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ fun bar() {
|
|||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
fun main(suspend: WLambdaInvoke) {
|
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 {
|
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);
|
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
|
@Test
|
||||||
@TestMetadata("suspendInvokeInsideTry.kt")
|
@TestMetadata("suspendInvokeInsideTry.kt")
|
||||||
public void testSuspendInvokeInsideTry() throws Exception {
|
public void testSuspendInvokeInsideTry() throws Exception {
|
||||||
|
|||||||
@@ -259,6 +259,7 @@ enum class LanguageFeature(
|
|||||||
ReportMissingUpperBoundsViolatedErrorOnAbbreviationAtSupertypes(KOTLIN_1_8, kind = BUG_FIX), // KT-29168
|
ReportMissingUpperBoundsViolatedErrorOnAbbreviationAtSupertypes(KOTLIN_1_8, kind = BUG_FIX), // KT-29168
|
||||||
IgnoreNullabilityForErasedValueParameters(KOTLIN_1_8, kind = BUG_FIX),
|
IgnoreNullabilityForErasedValueParameters(KOTLIN_1_8, kind = BUG_FIX),
|
||||||
ForbidUsingExtensionPropertyTypeParameterInDelegate(KOTLIN_1_8, kind = BUG_FIX),
|
ForbidUsingExtensionPropertyTypeParameterInDelegate(KOTLIN_1_8, kind = BUG_FIX),
|
||||||
|
ModifierNonBuiltinSuspendFunError(KOTLIN_1_8),
|
||||||
|
|
||||||
// 1.9
|
// 1.9
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user