diff --git a/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/common/common.kt b/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/common/common.kt
new file mode 100644
index 00000000000..5025978d657
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/common/common.kt
@@ -0,0 +1,5 @@
+// KT-23745
+expect interface A
+expect interface B
+
+interface Both : A, B
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/js/js.kt b/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/js/js.kt
new file mode 100644
index 00000000000..9f0a157a71a
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/js/js.kt
@@ -0,0 +1,10 @@
+actual interface A
+actual interface B {
+ fun z()
+ fun x()
+}
+
+class Impl : Both {
+ override fun z() {
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Decimal.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Decimal.kt
new file mode 100644
index 00000000000..91295e47137
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Decimal.kt
@@ -0,0 +1,4 @@
+// KT-23124
+package com.example
+
+expect class Decimal
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Foo.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Foo.kt
new file mode 100644
index 00000000000..a0338848f3d
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Foo.kt
@@ -0,0 +1,7 @@
+package com.example.bar
+
+import com.example.Decimal
+
+class Foo(
+ val bar: Decimal
+)
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/DecimalJs.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/DecimalJs.kt
new file mode 100644
index 00000000000..10c4d19576d
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/DecimalJs.kt
@@ -0,0 +1,3 @@
+package com.example
+
+actual typealias Decimal = Double
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/ExampleJs.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/ExampleJs.kt
new file mode 100644
index 00000000000..4fbf32e4064
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/ExampleJs.kt
@@ -0,0 +1,5 @@
+package com.example
+
+import com.example.bar.Foo
+
+val a = Foo(0.toDouble())
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/DecimalJvm.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/DecimalJvm.kt
new file mode 100644
index 00000000000..af0149627c1
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/DecimalJvm.kt
@@ -0,0 +1,5 @@
+package com.example
+
+import java.math.BigDecimal
+
+actual typealias Decimal = BigDecimal
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/ExampleJvm.kt b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/ExampleJvm.kt
new file mode 100644
index 00000000000..7c042584c93
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/ExampleJvm.kt
@@ -0,0 +1,6 @@
+package com.example
+
+import com.example.bar.Foo
+import java.math.BigDecimal
+
+val a = Foo(BigDecimal(1))
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/common/common.kt b/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/common/common.kt
new file mode 100644
index 00000000000..b22e64dab6a
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/common/common.kt
@@ -0,0 +1,10 @@
+// KT-23760
+package foo
+
+expect interface Upper
+
+expect interface BaseI {
+ fun f(p: Upper)
+}
+
+interface I : BaseI
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/jvm/jvm.kt b/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/jvm/jvm.kt
new file mode 100644
index 00000000000..0c8b606294a
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/jvm/jvm.kt
@@ -0,0 +1,13 @@
+package foo
+
+interface X
+actual typealias Upper = X
+
+actual interface BaseI {
+ actual fun f(p: Upper)
+}
+
+internal class Impl : I {
+ override fun f(p: Upper) {
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_common_dep(stdlib)/common.kt b/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_common_dep(stdlib)/common.kt
new file mode 100644
index 00000000000..3cb554cbbec
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_common_dep(stdlib)/common.kt
@@ -0,0 +1,4 @@
+// KT-20824
+package foo
+
+fun O.appendMe(): O = this // kotlin.text.Appendable
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_jvm_dep(stdlib)_dep(fulljdk)/jvm.kt b/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_jvm_dep(stdlib)_dep(fulljdk)/jvm.kt
new file mode 100644
index 00000000000..1cbd6b49619
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_jvm_dep(stdlib)_dep(fulljdk)/jvm.kt
@@ -0,0 +1,7 @@
+package foo
+
+fun tryIt() {
+ buildString { // kotlin.text.StringBuilder = java.lang.StringBuilder
+ appendMe()
+ }
+}
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/common/common.kt b/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/common/common.kt
new file mode 100644
index 00000000000..b5aadb8ceec
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/common/common.kt
@@ -0,0 +1,7 @@
+// KT-20605
+package foo
+
+expect class C {
+}
+
+fun getC(): C? = null
\ No newline at end of file
diff --git a/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/jvm/jvm.kt b/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/jvm/jvm.kt
new file mode 100644
index 00000000000..61d844374a1
--- /dev/null
+++ b/idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/jvm/jvm.kt
@@ -0,0 +1,15 @@
+package foo
+
+actual class C {
+ fun zzz() {
+ }
+}
+
+fun works() {
+ C().zzz()
+}
+
+fun doesnNot() {
+ getC()?.zzz()
+ getC()?.zzz()
+}
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleHighlightingTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleHighlightingTestGenerated.java
index 376f0f7078f..a8bf51984e6 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleHighlightingTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleHighlightingTestGenerated.java
@@ -25,6 +25,11 @@ public class MultiModuleHighlightingTestGenerated extends AbstractMultiModuleHig
KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
}
+ @TestMetadata("additionalMembersInPlatformInterface")
+ public void testAdditionalMembersInPlatformInterface() throws Exception {
+ runTest("idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/");
+ }
+
public void testAllFilesPresentInMultiplatform() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiModuleHighlighting/multiplatform"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
}
@@ -84,6 +89,11 @@ public class MultiModuleHighlightingTestGenerated extends AbstractMultiModuleHig
runTest("idea/testData/multiModuleHighlighting/multiplatform/nestedClassWithoutImpl/");
}
+ @TestMetadata("platformTypeAliasInterchangebleWithAliasedClass")
+ public void testPlatformTypeAliasInterchangebleWithAliasedClass() throws Exception {
+ runTest("idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/");
+ }
+
@TestMetadata("suppressHeaderWithoutImpl")
public void testSuppressHeaderWithoutImpl() throws Exception {
runTest("idea/testData/multiModuleHighlighting/multiplatform/suppressHeaderWithoutImpl/");
@@ -104,11 +114,26 @@ public class MultiModuleHighlightingTestGenerated extends AbstractMultiModuleHig
runTest("idea/testData/multiModuleHighlighting/multiplatform/triangleWithDependency/");
}
+ @TestMetadata("typeAliasedParameter")
+ public void testTypeAliasedParameter() throws Exception {
+ runTest("idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/");
+ }
+
+ @TestMetadata("useAppendable")
+ public void testUseAppendable() throws Exception {
+ runTest("idea/testData/multiModuleHighlighting/multiplatform/useAppendable/");
+ }
+
@TestMetadata("useCorrectBuiltInsForCommonModule")
public void testUseCorrectBuiltInsForCommonModule() throws Exception {
runTest("idea/testData/multiModuleHighlighting/multiplatform/useCorrectBuiltInsForCommonModule/");
}
+ @TestMetadata("usePlatformSpecificMember")
+ public void testUsePlatformSpecificMember() throws Exception {
+ runTest("idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/");
+ }
+
@TestMetadata("withOverrides")
public void testWithOverrides() throws Exception {
runTest("idea/testData/multiModuleHighlighting/multiplatform/withOverrides/");