Add test on using correct builtins in MPP

Note that Native built-ins are not resolved correctly in this module
(CPointed and similar). This is not a bug, but rather a technical
limitation of the current testing infrastructure: we can't depend on
kotlin-native stdlib in "big-Kotlin" repo, and native stdlib is used as
the only one source of Native built-ins.
This commit is contained in:
Dmitry Savvinov
2019-06-05 12:02:15 +03:00
parent 1fe8e4ba15
commit b103f42ca8
7 changed files with 105 additions and 2 deletions
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null
}
fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null
}
fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>closed<!>
}
@@ -0,0 +1,19 @@
MODULE common { platform=[JS, JVM, Native] }
MODULE js { platform=[JS] }
MODULE jvmNoSdk { platform=[JVM] }
MODULE jvmWithSdk { platform=[JVM] }
MODULE native { platform=[Native] }
common -> STDLIB_COMMON { kind=DEPENDENCY }
js -> common { kind=DEPENDS_ON }
js -> STDLIB_JS { kind=DEPENDENCY }
jvmNoSdk -> common { kind=DEPENDS_ON }
jvmNoSdk -> STDLIB_JVM { kind=DEPENDENCY }
jvmWithSdk -> common { kind=DEPENDS_ON }
jvmWithSdk -> STDLIB_JVM { kind=DEPENDENCY }
jvmWithSdk -> FULL_JDK { kind=DEPENDENCY }
native -> common { kind=DEPENDS_ON }
+16
View File
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.browser.window
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null
}
fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null
}
fun jsSpecific() {
val windowClosed = window.closed
}
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
//import kotlin.browser.window
//import kotlinx.cinterop.CPointed
//
fun jvmSpecific() {
val x: Cloneable? = null
}
//fun nativeSpecific() {
// val x: CPointed? = null
//}
//
//fun jsSpecific() {
// val windowClosed = window.closed
//}
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() {
val x: Cloneable? = null
}
fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null
}
fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>closed<!>
}
@@ -0,0 +1,16 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.<!UNRESOLVED_REFERENCE("browser")!>browser<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>window<!>
import <!UNRESOLVED_REFERENCE("kotlinx")!>kotlinx<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>cinterop<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>CPointed<!>
fun jvmSpecific() {
val x: <!UNRESOLVED_REFERENCE("Cloneable")!>Cloneable<!>? = null
}
fun nativeSpecific() {
val x: <!UNRESOLVED_REFERENCE("CPointed")!>CPointed<!>? = null
}
fun jsSpecific() {
val windowClosed = <!UNRESOLVED_REFERENCE("window")!>window<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>closed<!>
}
@@ -45,6 +45,11 @@ public class MultiplatformAnalysisTestGenerated extends AbstractMultiplatformAna
public void testInternalFromProduction() throws Exception {
runTest("idea/testData/multiplatform/internalFromProduction/");
}
@TestMetadata("useCorrectBuiltIns")
public void testUseCorrectBuiltIns() throws Exception {
runTest("idea/testData/multiplatform/useCorrectBuiltIns/");
}
}
@TestMetadata("idea/testData/multiplatformTypeRefinement")
@@ -61,8 +66,7 @@ public class MultiplatformAnalysisTestGenerated extends AbstractMultiplatformAna
}
public void testAllFilesPresentInMultiplatformTypeRefinement() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"),
Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
}
@TestMetadata("callableReferences")