diff --git a/idea/testData/multiplatform/builtinsAndStdlib/common/common.kt b/idea/testData/multiplatform/builtinsAndStdlib/common/common.kt new file mode 100644 index 00000000000..6147c6a5830 --- /dev/null +++ b/idea/testData/multiplatform/builtinsAndStdlib/common/common.kt @@ -0,0 +1,17 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +package mpp + +import kotlin.reflect.KCallable + +fun some() { + val string: String = "" + val any: Any = "" + val callableRef: KCallable<*> = ::commonFun + callableRef.name + // should be unresolved + callableRef.call() +} + +fun commonFun() { +} diff --git a/idea/testData/multiplatform/builtinsAndStdlib/dependencies.txt b/idea/testData/multiplatform/builtinsAndStdlib/dependencies.txt new file mode 100644 index 00000000000..a59401d4b5e --- /dev/null +++ b/idea/testData/multiplatform/builtinsAndStdlib/dependencies.txt @@ -0,0 +1,10 @@ +MODULE common { platform=[JVM, JS] } +MODULE jvm { platform=[JVM] } +MODULE js { platform=[JS] } + +jvm -> common { kind=DEPENDS_ON } +js -> common { kind=DEPENDS_ON } + +common -> STDLIB_COMMON { kind=DEPENDENCY } +jvm -> STDLIB_JVM, KOTLIN_TEST, KOTLIN_TEST_JVM, JUNIT, MOCK_JDK { kind=DEPENDENCY } +js -> STDLIB_JS { kind=DEPENDENCY } diff --git a/idea/testData/multiplatform/builtinsAndStdlib/js/js.kt b/idea/testData/multiplatform/builtinsAndStdlib/js/js.kt new file mode 100644 index 00000000000..2fbcb422850 --- /dev/null +++ b/idea/testData/multiplatform/builtinsAndStdlib/js/js.kt @@ -0,0 +1,14 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE + +package mpp + +fun jsFun() { +} + +fun test() { + val string: String = "" + val ref: kotlin.reflect.KCallable<*> = ::jsFun + ref.name + // should be unresolved + ref.call() +} \ No newline at end of file diff --git a/idea/testData/multiplatform/builtinsAndStdlib/jvm/jvm.kt b/idea/testData/multiplatform/builtinsAndStdlib/jvm/jvm.kt new file mode 100644 index 00000000000..50d41176a72 --- /dev/null +++ b/idea/testData/multiplatform/builtinsAndStdlib/jvm/jvm.kt @@ -0,0 +1,27 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER -NO_REFLECTION_IN_CLASS_PATH + +package mpp + +import kotlin.reflect.KAnnotatedElement +import kotlin.reflect.KCallable +import java.lang.Cloneable + +fun foo(x: KAnnotatedElement): Boolean = true + +class Foo { + fun bar(a: Int, b: Int): KCallable<*> { TODO() } +} + +fun jvmFun() { +} + +fun getKCallable(): KCallable<*> = ::jvmFun + +fun main() { + val ref = ::jvmFun + val typedRef: KCallable<*> = getKCallable() + ref.call() + typedRef.call() + foo(Foo::bar) +} + diff --git a/idea/testData/multiplatform/useCorrectBuiltIns/common/common.kt b/idea/testData/multiplatform/useCorrectBuiltIns/common/common.kt index 362d41c92f5..5061b523fe2 100644 --- a/idea/testData/multiplatform/useCorrectBuiltIns/common/common.kt +++ b/idea/testData/multiplatform/useCorrectBuiltIns/common/common.kt @@ -3,8 +3,9 @@ import kotlin.browser.window import kotlinx.cinterop.CPointed -fun jvmSpecific() { +fun jvmSpecific(args: Array) { val x: Cloneable? = null + args.clone() } fun nativeSpecific() { diff --git a/idea/testData/multiplatform/useCorrectBuiltIns/js/js.kt b/idea/testData/multiplatform/useCorrectBuiltIns/js/js.kt index d8a4dfafd97..3025f2b2129 100644 --- a/idea/testData/multiplatform/useCorrectBuiltIns/js/js.kt +++ b/idea/testData/multiplatform/useCorrectBuiltIns/js/js.kt @@ -3,8 +3,9 @@ import kotlinx.browser.window import kotlinx.cinterop.CPointed -fun jvmSpecific() { +fun jvmSpecific(args: Array) { val x: Cloneable? = null + args.clone() } fun nativeSpecific() { diff --git a/idea/testData/multiplatform/useCorrectBuiltIns/jvmNoSdk/jvmNoSdk.kt b/idea/testData/multiplatform/useCorrectBuiltIns/jvmNoSdk/jvmNoSdk.kt index 13933ac6ba0..3ef4775c191 100644 --- a/idea/testData/multiplatform/useCorrectBuiltIns/jvmNoSdk/jvmNoSdk.kt +++ b/idea/testData/multiplatform/useCorrectBuiltIns/jvmNoSdk/jvmNoSdk.kt @@ -3,8 +3,9 @@ //import kotlin.browser.window //import kotlinx.cinterop.CPointed // -fun jvmSpecific() { +fun jvmSpecific(args: Array) { val x: Cloneable? = null + args.clone() } //fun nativeSpecific() { diff --git a/idea/testData/multiplatform/useCorrectBuiltIns/jvmWithSdk/jvmWithSdk.kt b/idea/testData/multiplatform/useCorrectBuiltIns/jvmWithSdk/jvmWithSdk.kt index 6f3a10549bc..df7b02e7eb8 100644 --- a/idea/testData/multiplatform/useCorrectBuiltIns/jvmWithSdk/jvmWithSdk.kt +++ b/idea/testData/multiplatform/useCorrectBuiltIns/jvmWithSdk/jvmWithSdk.kt @@ -3,8 +3,9 @@ import kotlin.browser.window import kotlinx.cinterop.CPointed -fun jvmSpecific() { +fun jvmSpecific(args: Array) { val x: Cloneable? = null + args.clone() } fun nativeSpecific() { diff --git a/idea/testData/multiplatform/useCorrectBuiltIns/native/native.kt b/idea/testData/multiplatform/useCorrectBuiltIns/native/native.kt index 362d41c92f5..5061b523fe2 100644 --- a/idea/testData/multiplatform/useCorrectBuiltIns/native/native.kt +++ b/idea/testData/multiplatform/useCorrectBuiltIns/native/native.kt @@ -3,8 +3,9 @@ import kotlin.browser.window import kotlinx.cinterop.CPointed -fun jvmSpecific() { +fun jvmSpecific(args: Array) { val x: Cloneable? = null + args.clone() } fun nativeSpecific() { diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiplatformAnalysisTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiplatformAnalysisTestGenerated.java index 6c3e532452b..959cb5cc3ce 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiplatformAnalysisTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiplatformAnalysisTestGenerated.java @@ -34,6 +34,11 @@ public class MultiplatformAnalysisTestGenerated extends AbstractMultiplatformAna KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/multiplatform"), Pattern.compile("^([^\\.]+)$"), null, false); } + @TestMetadata("builtinsAndStdlib") + public void testBuiltinsAndStdlib() throws Exception { + runTest("idea/testData/multiplatform/builtinsAndStdlib/"); + } + @TestMetadata("callableReferences") public void testCallableReferences() throws Exception { runTest("idea/testData/multiplatform/callableReferences/");