Implement correct is check for SuspendFunction

Add test for suspend functions with language version 1.2.
Minor edit in SuspendFunction docs.
This commit is contained in:
Ilmir Usmanov
2018-08-10 20:22:06 +03:00
committed by Ilya Gorbunov
parent a205019156
commit fe451dce31
7 changed files with 49 additions and 5 deletions
@@ -0,0 +1,19 @@
// IGNORE_BACKEND: JS_IR, JS
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// LANGUAGE_VERSION: 1.2
import helpers.*
import kotlin.coroutines.*
val lambda1 = { x: Any -> } as (Any) -> Unit
val suspendLambda0: suspend () -> Unit = {}
fun box(): String {
assert(lambda1 is SuspendFunction0<*>) { "Failed: lambda1 !is SuspendFunction0<*>" }
assert(suspendLambda0 is Function1<*, *>) { "Failed: suspendLambda0 is Function1<*, *>" }
assert(suspendLambda0 is SuspendFunction0<*>) { "Failed: suspendLambda0 is SuspendFunction0<*>" }
return "OK"
}
@@ -6510,6 +6510,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/featureIntersection/suspendDestructuringInLambdas.kt", "kotlin.coroutines");
}
@TestMetadata("suspendFunction12.kt")
public void testSuspendFunction12() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunction12.kt");
}
@TestMetadata("suspendFunctionIsAs.kt")
public void testSuspendFunctionIsAs() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunctionIsAs.kt");
@@ -6510,6 +6510,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/featureIntersection/suspendDestructuringInLambdas.kt", "kotlin.coroutines");
}
@TestMetadata("suspendFunction12.kt")
public void testSuspendFunction12() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunction12.kt");
}
@TestMetadata("suspendFunctionIsAs.kt")
public void testSuspendFunctionIsAs() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunctionIsAs.kt");
@@ -6510,6 +6510,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/featureIntersection/suspendDestructuringInLambdas.kt", "kotlin.coroutines");
}
@TestMetadata("suspendFunction12.kt")
public void testSuspendFunction12() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunction12.kt");
}
@TestMetadata("suspendFunctionIsAs.kt")
public void testSuspendFunctionIsAs() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunctionIsAs.kt");
@@ -5665,6 +5665,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/featureIntersection/suspendDestructuringInLambdas.kt", "kotlin.coroutines.experimental");
}
@TestMetadata("suspendFunction12.kt")
public void testSuspendFunction12() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunction12.kt");
}
@TestMetadata("suspendFunctionIsAs.kt")
public void testSuspendFunctionIsAs() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunctionIsAs.kt");
@@ -12979,11 +12984,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
public static class PrimitiveCompanion extends AbstractIrJsCodegenBoxTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS_IR, testDataFilePath);
}
}
public void testAllFilesPresentInPrimitiveCompanion() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/objects/companionObjectAccess/primitiveCompanion"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS_IR, true);
}
}
@TestMetadata("byteCompanionObject.kt")
public void testByteCompanionObject() throws Exception {
@@ -6220,6 +6220,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/featureIntersection/suspendDestructuringInLambdas.kt", "kotlin.coroutines");
}
@TestMetadata("suspendFunction12.kt")
public void testSuspendFunction12() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunction12.kt");
}
@TestMetadata("suspendFunctionIsAs.kt")
public void testSuspendFunctionIsAs() throws Exception {
runTest("compiler/testData/codegen/box/coroutines/featureIntersection/suspendFunctionIsAs.kt");
@@ -14039,11 +14044,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
public static class PrimitiveCompanion extends AbstractJsCodegenBoxTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS, testDataFilePath);
}
}
public void testAllFilesPresentInPrimitiveCompanion() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/objects/companionObjectAccess/primitiveCompanion"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS, true);
}
}
@TestMetadata("byteCompanionObject.kt")
public void testByteCompanionObject() throws Exception {
@@ -126,7 +126,7 @@ internal object CompletedContinuation : Continuation<Any?> {
}
@SinceKotlin("1.3")
// To distinguish suspend function types from ordinary function types all suspend function type shall implement this interface
// To distinguish suspend function types from ordinary function types all suspend function types shall implement this interface
internal interface SuspendFunction
@SinceKotlin("1.3")