diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt index 96a9556ff41..4c58e6613dd 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/expectActualUtil.kt @@ -86,7 +86,7 @@ fun ModuleDescriptor.actualsFor(descriptor: MemberDescriptor, checkCompatible: B } else { descriptor.findAnyActualForExpected(this@actualsFor) } - } + }.filter { (it as? MemberDescriptor)?.isEffectivelyActual() == true } private fun DeclarationDescriptor.actualsForExpected(): Collection { if (this is MemberDescriptor) { @@ -129,9 +129,11 @@ fun KtDeclaration.isEffectivelyActual(): Boolean { if (hasActualModifier()) return true val descriptor = toDescriptor() as? MemberDescriptor ?: return false - return descriptor.isActual || descriptor.isEnumEntryInActual() + return descriptor.isEffectivelyActual() } +private fun MemberDescriptor.isEffectivelyActual() = isActual || isEnumEntryInActual() + private fun MemberDescriptor.isEnumEntryInActual() = (DescriptorUtils.isEnumEntry(this) && (containingDeclaration as? MemberDescriptor)?.isActual == true) diff --git a/idea/testData/multiModuleLineMarker/actualWithOverload/common/common.kt b/idea/testData/multiModuleLineMarker/actualWithOverload/common/common.kt new file mode 100644 index 00000000000..72b4b60ce07 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/actualWithOverload/common/common.kt @@ -0,0 +1,3 @@ +// !CHECK_HIGHLIGHTING + +expect fun some() \ No newline at end of file diff --git a/idea/testData/multiModuleLineMarker/actualWithOverload/jvm/jvm.kt b/idea/testData/multiModuleLineMarker/actualWithOverload/jvm/jvm.kt new file mode 100644 index 00000000000..5d9da3ecee2 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/actualWithOverload/jvm/jvm.kt @@ -0,0 +1,3 @@ +actual fun doAnother(s: String) {} + +fun doAnother(s: String, i: Int) {} \ No newline at end of file diff --git a/idea/testData/multiModuleLineMarker/expectWithOverload/common/common.kt b/idea/testData/multiModuleLineMarker/expectWithOverload/common/common.kt new file mode 100644 index 00000000000..cf425265d80 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/expectWithOverload/common/common.kt @@ -0,0 +1,5 @@ +expect fun doSomething(s: String) + +fun doSomething(s: String, i: Int) { + +} \ No newline at end of file diff --git a/idea/testData/multiModuleLineMarker/expectWithOverload/jvm/jvm.kt b/idea/testData/multiModuleLineMarker/expectWithOverload/jvm/jvm.kt new file mode 100644 index 00000000000..6d565f0b6b3 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/expectWithOverload/jvm/jvm.kt @@ -0,0 +1,3 @@ +// !CHECK_HIGHLIGHTING + +fun main(args: Array) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTestGenerated.java index b14a58e08b6..5320d8757bd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTestGenerated.java @@ -45,6 +45,11 @@ public class MultiModuleLineMarkerTestGenerated extends AbstractMultiModuleLineM runTest("idea/testData/multiModuleLineMarker/actualEnumEntriesInOneLine/"); } + @TestMetadata("actualWithOverload") + public void testActualWithOverload() throws Exception { + runTest("idea/testData/multiModuleLineMarker/actualWithOverload/"); + } + public void testAllFilesPresentInMultiModuleLineMarker() throws Exception { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiModuleLineMarker"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false); } @@ -64,6 +69,11 @@ public class MultiModuleLineMarkerTestGenerated extends AbstractMultiModuleLineM runTest("idea/testData/multiModuleLineMarker/expectEnumEntriesInOneLine/"); } + @TestMetadata("expectWithOverload") + public void testExpectWithOverload() throws Exception { + runTest("idea/testData/multiModuleLineMarker/expectWithOverload/"); + } + @TestMetadata("fromActualAnnotation") public void testFromActualAnnotation() throws Exception { runTest("idea/testData/multiModuleLineMarker/fromActualAnnotation/");