From 521357a22df3be912756abb9c78ccef148ba21a4 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 20 Apr 2018 15:09:12 +0200 Subject: [PATCH] Add tests for KT-20824, KT-23745, KT-23124, KT-20605, KT-23760 #KT-20824 Fixed #KT-23745 Fixed #KT-23124 Fixed #KT-20605 Fixed #KT-23760 Fixed --- .../common/common.kt | 5 ++++ .../js/js.kt | 10 ++++++++ .../a_common/Decimal.kt | 4 +++ .../a_common/Foo.kt | 7 ++++++ .../a_js/DecimalJs.kt | 3 +++ .../a_js/ExampleJs.kt | 5 ++++ .../a_jvm_dep(fulljdk)/DecimalJvm.kt | 5 ++++ .../a_jvm_dep(fulljdk)/ExampleJvm.kt | 6 +++++ .../typeAliasedParameter/common/common.kt | 10 ++++++++ .../typeAliasedParameter/jvm/jvm.kt | 13 ++++++++++ .../a_common_dep(stdlib)/common.kt | 4 +++ .../a_jvm_dep(stdlib)_dep(fulljdk)/jvm.kt | 7 ++++++ .../common/common.kt | 7 ++++++ .../usePlatformSpecificMember/jvm/jvm.kt | 15 +++++++++++ .../MultiModuleHighlightingTestGenerated.java | 25 +++++++++++++++++++ 15 files changed, 126 insertions(+) create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/common/common.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/additionalMembersInPlatformInterface/js/js.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Decimal.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_common/Foo.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/DecimalJs.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_js/ExampleJs.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/DecimalJvm.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/platformTypeAliasInterchangebleWithAliasedClass/a_jvm_dep(fulljdk)/ExampleJvm.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/common/common.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/typeAliasedParameter/jvm/jvm.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_common_dep(stdlib)/common.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/useAppendable/a_jvm_dep(stdlib)_dep(fulljdk)/jvm.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/common/common.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/usePlatformSpecificMember/jvm/jvm.kt 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/");