diff --git a/compiler/testData/multiplatform/jsNameClash/common.kt b/compiler/testData/multiplatform/jsNameClash/common.kt new file mode 100644 index 00000000000..b1c8b810b1a --- /dev/null +++ b/compiler/testData/multiplatform/jsNameClash/common.kt @@ -0,0 +1,2 @@ +header class ClassWithImplByExtension +header val ClassWithImplByExtension.extensionVal: Int \ No newline at end of file diff --git a/compiler/testData/multiplatform/jsNameClash/js.kt b/compiler/testData/multiplatform/jsNameClash/js.kt new file mode 100644 index 00000000000..17b3a6342f1 --- /dev/null +++ b/compiler/testData/multiplatform/jsNameClash/js.kt @@ -0,0 +1,3 @@ +impl class ClassWithImplByExtension +impl val ClassWithImplByExtension.extensionVal: Int + get() = 0 \ No newline at end of file diff --git a/compiler/testData/multiplatform/jsNameClash/output.txt b/compiler/testData/multiplatform/jsNameClash/output.txt new file mode 100644 index 00000000000..6b3f5dfc27f --- /dev/null +++ b/compiler/testData/multiplatform/jsNameClash/output.txt @@ -0,0 +1,7 @@ +-- Common -- +Exit code: OK +Output: + +-- JS -- +Exit code: OK +Output: diff --git a/compiler/tests/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java index 26cf0795928..a7d2f06b80f 100644 --- a/compiler/tests/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/multiplatform/MultiPlatformIntegrationTestGenerated.java @@ -96,6 +96,12 @@ public class MultiPlatformIntegrationTestGenerated extends AbstractMultiPlatform doTest(fileName); } + @TestMetadata("jsNameClash") + public void testJsNameClash() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/multiplatform/jsNameClash/"); + doTest(fileName); + } + @TestMetadata("missingOverload") public void testMissingOverload() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/multiplatform/missingOverload/"); diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsNameClashChecker.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsNameClashChecker.kt index b2d782e6197..da62c9b60f8 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsNameClashChecker.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsNameClashChecker.kt @@ -110,10 +110,10 @@ class JsNameClashChecker : SimpleDeclarationChecker { } private val DeclarationDescriptor.isActual: Boolean - get() = this is MemberDescriptor && this.isActual + get() = this is MemberDescriptor && this.isActual || this is PropertyAccessorDescriptor && this.correspondingProperty.isActual private val DeclarationDescriptor.isExpect: Boolean - get() = this is MemberDescriptor && this.isExpect + get() = this is MemberDescriptor && this.isExpect || this is PropertyAccessorDescriptor && this.correspondingProperty.isExpect private fun isFakeOverridingNative(descriptor: CallableMemberDescriptor): Boolean { return descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE &&