diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.kt new file mode 100644 index 00000000000..7e0e3e4ce5b --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.kt @@ -0,0 +1,209 @@ +// FIR_IDENTICAL + +// FILE: FinalClass.kt +package FinalClass +class Class { + fun test() {} + fun test(x: Int) = x + fun test(x: String) = x + fun test(vararg x: Any) = x + + val test = 0 + + fun Int.test() {} + fun Int.test(x: Int) = x + + fun String.test() {} + fun String.test(x: String) = x + + val Int.test + get() = 0 + + var String.test + get() = "" + set(value) { test(value) } +} + +// FILE: OpenClassWithFinalMethods.kt +package OpenClassWithFinalMethods +open class Class { + fun test() {} + fun test(x: Int) = x + fun test(x: String) = x + fun test(vararg x: Any) = x + + fun Int.test() {} + fun Int.test(x: Int) = x + + fun String.test() {} + fun String.test(x: String) = x +} + +class MyClass1 : Class() { + fun test(x: Char) = x + + fun Char.test() {} + fun Char.test(x: Char) = x +} + +// FILE: OpenClassWithOpenMethods.kt +package OpenClassWithOpenMethods +open class Class { + open fun test() {} + open fun test(x: Int) = x + open fun test(x: String) = x + open fun test(vararg x: Any) = x + + open fun Int.test() {} + open fun Int.test(x: Int) = x + + open fun String.test() {} + open fun String.test(x: String) = x +} + +class MyClass : Class() { + fun test(x: List) = x + fun test(vararg x: Int) = x + + fun Char.test() {} + val Char.test get() = 'w' +} + +// FILE: OpenInheritedMethodClashedWithChildOverload.kt +package OpenInheritedMethodClashedWithChildOverload +open class ExternalClass { + @JsName("test") open fun noTest(x: String): String = x +} + +class MyClass : ExternalClass() { + fun test() {} +} + +// FILE: OpenInheritedMethodClashedWithChildProperty.kt +package OpenInheritedMethodClashedWithChildProperty +open class Class { + @JsName("test") open fun test(x: String): String = x +} + +class MyClass : Class() { + val test = 1 +} + +// FILE: OpenInheritedPropertyClashedWithChildMethod.kt +package OpenInheritedPropertyClashedWithChildMethod +open class Class { + open val test: String = "" +} + +class MyClass : Class() { + fun test() {} +} + +// FILE: OpenInheritedMethodClashedWithChildMethodJsName.kt +package OpenInheritedMethodClashedWithChildMethodJsName +open class Class { + open fun test() {} +} + +class MyClass : Class() { + @JsName("test") fun notTest(x: String) = x +} + +// FILE: OpenInheritedMethodClashedWithChildPropertyJsName.kt +package OpenInheritedMethodClashedWithChildPropertyJsName +open class Class { + open fun test() {} +} + +class MyClass : Class() { + @JsName("test") val notTest = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildPropertyGetterJsName.kt +package OpenInheritedMethodClashedWithChildPropertyGetterJsName +open class Class { + open fun test() {} +} + +class MyClass : Class() { + val notTest: Int + @JsName("test") get() = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildPropertySetterJsName.kt +package OpenInheritedMethodClashedWithChildPropertySetterJsName +open class Class { + open fun test() {} +} + +class MyClass : Class() { + fun ignore(x: T) = x + + var notTest: Int + @JsName("getterTest") get() = 1 + @JsName("test") set(value) { ignore(value) } +} + +// FILE: OpenInheritedMethodClashedWithOtherInheritedMethod.kt +package OpenInheritedMethodClashedWithOtherInheritedMethod +open class Class { + open fun test() {} +} + +interface MyInterface { + @JsName("test") fun noTest(x: Int) = 1 +} + +class MyClass : Class(), MyInterface + +// FILE: OpenInheritedMethodNotClashedWithAbstractMethod.kt +package OpenInheritedMethodNotClashedWithAbstractMethod +open class Class { + open fun test(): String = "" +} + +interface MyInterface { + fun test(): String +} + +class MyClass : Class(), MyInterface + +// FILE: OpenInheritedMethodNotClashedWithDefaultInterfaceMethod.kt +package OpenInheritedMethodNotClashedWithDefaultInterfaceMethod +open class Class { + open fun test(): String = "0" +} + +interface MyInterface { + fun test(): String = "1" +} + +class MyClass : Class(), MyInterface { + override fun test(): String = "2" +} + +// FILE: InterfaceImplementationWithSameJsNameClash.kt +package MultipleInterfaceInheritanceWithSameJsNameClash +interface MyInterface1 { + @JsName("test") fun test1(): Int +} + +class MyClass : MyInterface1 { + override fun test1() = 1 + @JsName("test") fun test2(): Int = 2 +} + +// FILE: MultipleInterfaceImplementationWithSameJsNameClash.kt +package MultipleInterfaceImplementationWithSameJsNameClash +interface MyInterface1 { + @JsName("test") fun test1(): Int +} + +interface MyInterface2 { + @JsName("test") fun test2(): Int +} + +class MyClass : MyInterface1, MyInterface2 { + override fun test1() = 1 + override fun test2() = 2 +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.txt new file mode 100644 index 00000000000..8af4883b99c --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.txt @@ -0,0 +1,361 @@ +package + +package FinalClass { + + public final class Class { + public constructor Class() + public final val test: kotlin.Int = 0 + public final val kotlin.Int.test: kotlin.Int + public final var kotlin.String.test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public final fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public final fun test(/*0*/ x: kotlin.Int): kotlin.Int + public final fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit + public final fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public final fun kotlin.String.test(): kotlin.Unit + public final fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String + } +} + +package MultipleInterfaceImplementationWithSameJsNameClash { + + public final class MyClass : MultipleInterfaceImplementationWithSameJsNameClash.MyInterface1, MultipleInterfaceImplementationWithSameJsNameClash.MyInterface2 { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ fun test1(): kotlin.Int + public open override /*1*/ fun test2(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface1 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public abstract fun test1(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface2 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public abstract fun test2(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package MultipleInterfaceInheritanceWithSameJsNameClash { + + public final class MyClass : MultipleInterfaceInheritanceWithSameJsNameClash.MyInterface1 { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ fun test1(): kotlin.Int + @kotlin.js.JsName(name = "test") public final fun test2(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface1 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public abstract fun test1(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenClassWithFinalMethods { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public final fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public final fun test(/*0*/ x: kotlin.Int): kotlin.Int + public final fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit + public final fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public final fun kotlin.String.test(): kotlin.Unit + public final fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String + } + + public final class MyClass1 : OpenClassWithFinalMethods.Class { + public constructor MyClass1() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public final override /*1*/ /*fake_override*/ fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public final fun test(/*0*/ x: kotlin.Char): kotlin.Char + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.Int + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Char.test(): kotlin.Unit + public final fun kotlin.Char.test(/*0*/ x: kotlin.Char): kotlin.Char + public final override /*1*/ /*fake_override*/ fun kotlin.Int.test(): kotlin.Unit + public final override /*1*/ /*fake_override*/ fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public final override /*1*/ /*fake_override*/ fun kotlin.String.test(): kotlin.Unit + public final override /*1*/ /*fake_override*/ fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String + } +} + +package OpenClassWithOpenMethods { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public open fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open fun kotlin.Int.test(): kotlin.Unit + public open fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public open fun kotlin.String.test(): kotlin.Unit + public open fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String + } + + public final class MyClass : OpenClassWithOpenMethods.Class { + public constructor MyClass() + public final val kotlin.Char.test: kotlin.Char + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.Int + public final fun test(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.IntArray + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public final fun test(/*0*/ x: kotlin.collections.List): kotlin.collections.List + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Char.test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun kotlin.Int.test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun kotlin.String.test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildMethodJsName { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildMethodJsName.Class { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final fun notTest(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildOverload { + + public open class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open fun noTest(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildOverload.ExternalClass { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ fun noTest(/*0*/ x: kotlin.String): kotlin.String + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildProperty { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildProperty.Class { + public constructor MyClass() + public final val test: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertyGetterJsName { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertyGetterJsName.Class { + public constructor MyClass() + @get:kotlin.js.JsName(name = "test") public final val notTest: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertyJsName { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertyJsName.Class { + public constructor MyClass() + @kotlin.js.JsName(name = "test") public final val notTest: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertySetterJsName { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertySetterJsName.Class { + public constructor MyClass() + @get:kotlin.js.JsName(name = "getterTest") @set:kotlin.js.JsName(name = "test") public final var notTest: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun ignore(/*0*/ x: T): T + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithOtherInheritedMethod { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithOtherInheritedMethod.Class, OpenInheritedMethodClashedWithOtherInheritedMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ fun noTest(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(): kotlin.Unit + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open fun noTest(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodNotClashedWithAbstractMethod { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodNotClashedWithAbstractMethod.Class, OpenInheritedMethodNotClashedWithAbstractMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun test(): kotlin.String + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodNotClashedWithDefaultInterfaceMethod { + + public open class Class { + public constructor Class() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodNotClashedWithDefaultInterfaceMethod.Class, OpenInheritedMethodNotClashedWithDefaultInterfaceMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ fun test(): kotlin.String + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedPropertyClashedWithChildMethod { + + public open class Class { + public constructor Class() + public open val test: kotlin.String = "" + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedPropertyClashedWithChildMethod.Class { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.fir.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.fir.kt new file mode 100644 index 00000000000..76439b0dfa7 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.fir.kt @@ -0,0 +1,11 @@ +// FIR_DIFFERENCE +// This case is only relevant for the JS Legacy BE and is not applicable to the JS IR backend, +// as the IR BE can resolve such name collisions. + +open class Class { + fun Int.test() {} + val Int.test + get() = 0 +} + +class MyClass1 : Class() diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.kt new file mode 100644 index 00000000000..c3e37f16f51 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.kt @@ -0,0 +1,11 @@ +// FIR_DIFFERENCE +// This case is only relevant for the JS Legacy BE and is not applicable to the JS IR backend, +// as the IR BE can resolve such name collisions. + +open class Class { + fun Int.test() {} + val Int.test + get() = 0 +} + +class MyClass1 : Class() diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.txt new file mode 100644 index 00000000000..69da868219b --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.txt @@ -0,0 +1,20 @@ +package + +public open class Class { + public constructor Class() + public final val kotlin.Int.test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit +} + +public final class MyClass1 : Class { + public constructor MyClass1() + public final override /*1*/ /*fake_override*/ val kotlin.Int.test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final override /*1*/ /*fake_override*/ fun kotlin.Int.test(): kotlin.Unit +} + diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.kt new file mode 100644 index 00000000000..bec3457f41c --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.kt @@ -0,0 +1,207 @@ +// FIR_IDENTICAL +@file:Suppress("UNUSED_PARAMETER", "CONFLICTING_OVERLOADS", "REDECLARATION") + +class A1 { + fun foo(x: Int) {} + fun foo(x: String) {} +} + +class A2 { + fun Int.foo() {} + fun String.foo() {} +} + +class A3 { + fun foo(x: Int) {} + fun Int.foo() {} +} + +class A4 { + fun foo(x: Int) {} + val foo = 1 +} + +class A5 { + fun foo() {} + val foo = 1 +} + +class A6 { + fun Int.foo() {} + val foo = 1 +} + +class A7 { + fun Int.foo() {} + val Int.foo get() = 1 +} + +class A8 { + val foo = 1 + val Int.foo get() = 1 +} + +class A9 { + val String.foo get() = 1 + val Int.foo get() = 1 +} + +class A10 { + fun foo(vararg x: Int) {} + fun foo() {} +} + +class A14 { + fun foo(vararg x: Int) {} + fun foo(x: Int) {} +} + +class A15 { + fun foo(vararg x: Int) {} + fun foo(vararg x: String) {} +} + +class A16 { + fun foo(vararg x: Int) {} + val foo = 1 +} + +class A17 { + fun foo(vararg x: Int) {} + val Int.foo get() = 1 +} + +class A18 { + fun foo(vararg x: Int) {} + fun Int.foo() = 1 +} + +class A19 { + fun setFoo() {} + var foo: Int + @JsName("getFoo") get() = 1 + @JsName("setFoo") set(value: Int) {} +} + +class A20 { + fun setFoo(x: Int) {} + var foo: Int + @JsName("getFoo") get() = 1 + @JsName("setFoo") set(value: Int) {} +} + +class A21 { + fun foo() {} + @JsName("foo") fun bar() {} +} + +class A22 { + fun foo(x: Int) {} + @JsName("foo") fun bar() {} +} + +class A23 { + val foo = 1 + @JsName("foo") fun bar() {} +} + +class A24 { + @JsName("foo") val bar = 1 + fun foo() {} +} + +class A25 { + @JsName("foo") val bar = 1 + fun foo(x: Int) {} +} + +class A26 { + fun foo() {} + var foo: Int + get() = 1 + set(value: Int) {} +} + +class A27 { + @JsName("foo") fun bar() {} + var foo: Int + get() = 1 + set(value: Int) {} +} + +class A28 { + fun foo(x: Int) {} + var foo: Int + get() = 1 + set(value: Int) {} +} + +class A29 { + val foo get() = 1 + @JsName("foo") fun bar() {} +} + +class A30 { + val Int.foo get() = 1 + @JsName("foo") fun bar() {} +} + +class A31 { + object foo + fun foo() {} +} + +class A32 { + object foo + fun foo(x: Int) {} +} + +class A33 { + object foo + val foo = 1 +} + +class A34 { + object foo + val String.foo get() = 1 +} + +class A35 { + companion object foo + fun foo() {} +} + +class A36 { + companion object foo + fun foo(x: Int) {} +} + +class A37 { + companion object foo + val foo = 1 +} + +class A38 { + companion object foo + val String.foo get() = 1 +} + +class A39 { + class foo + fun foo() {} +} + +class A40 { + class foo + fun foo(x: Int) {} +} + +class A41 { + class foo + val foo = 1 +} + +class A42 { + class foo + val String.foo get() = 1 +} diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.txt new file mode 100644 index 00000000000..c6eed679470 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.txt @@ -0,0 +1,425 @@ +package + +public final class A1 { + public constructor A1() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public final fun foo(/*0*/ x: kotlin.String): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A10 { + public constructor A10() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A14 { + public constructor A14() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A15 { + public constructor A15() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ vararg x: kotlin.String /*kotlin.Array*/): kotlin.Unit + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A16 { + public constructor A16() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A17 { + public constructor A17() + public final val kotlin.Int.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A18 { + public constructor A18() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.foo(): kotlin.Int +} + +public final class A19 { + public constructor A19() + @get:kotlin.js.JsName(name = "getFoo") @set:kotlin.js.JsName(name = "setFoo") public final var foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun setFoo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A2 { + public constructor A2() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.foo(): kotlin.Unit + public final fun kotlin.String.foo(): kotlin.Unit +} + +public final class A20 { + public constructor A20() + @get:kotlin.js.JsName(name = "getFoo") @set:kotlin.js.JsName(name = "setFoo") public final var foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun setFoo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A21 { + public constructor A21() + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A22 { + public constructor A22() + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A23 { + public constructor A23() + public final val foo: kotlin.Int = 1 + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A24 { + public constructor A24() + @kotlin.js.JsName(name = "foo") public final val bar: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A25 { + public constructor A25() + @kotlin.js.JsName(name = "foo") public final val bar: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A26 { + public constructor A26() + public final var foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A27 { + public constructor A27() + public final var foo: kotlin.Int + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A28 { + public constructor A28() + public final var foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A29 { + public constructor A29() + public final val foo: kotlin.Int + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A3 { + public constructor A3() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.foo(): kotlin.Unit +} + +public final class A30 { + public constructor A30() + public final val kotlin.Int.foo: kotlin.Int + @kotlin.js.JsName(name = "foo") public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A31 { + public constructor A31() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A32 { + public constructor A32() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A33 { + public constructor A33() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A34 { + public constructor A34() + public final val kotlin.String.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A35 { + public constructor A35() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public companion object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A36 { + public constructor A36() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public companion object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A37 { + public constructor A37() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public companion object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A38 { + public constructor A38() + public final val kotlin.String.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public companion object foo { + private constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A39 { + public constructor A39() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class foo { + public constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A4 { + public constructor A4() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A40 { + public constructor A40() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(/*0*/ x: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class foo { + public constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A41 { + public constructor A41() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class foo { + public constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A42 { + public constructor A42() + public final val kotlin.String.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final class foo { + public constructor foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public final class A5 { + public constructor A5() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A6 { + public constructor A6() + public final val foo: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.foo(): kotlin.Unit +} + +public final class A7 { + public constructor A7() + public final val kotlin.Int.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.foo(): kotlin.Unit +} + +public final class A8 { + public constructor A8() + public final val foo: kotlin.Int = 1 + public final val kotlin.Int.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public final class A9 { + public constructor A9() + public final val kotlin.Int.foo: kotlin.Int + public final val kotlin.String.foo: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.kt new file mode 100644 index 00000000000..ed09c0867ce --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.kt @@ -0,0 +1,9 @@ +// FIR_IDENTICAL +package foo + +class A + +@JsName("get_bar") fun A.get_bar() = 23 + +val A.bar: Int + @JsName("get_bar") get() = 42 diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.txt new file mode 100644 index 00000000000..91a6766190b --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.txt @@ -0,0 +1,14 @@ +package + +package foo { + @get:kotlin.js.JsName(name = "get_bar") public val foo.A.bar: kotlin.Int + @kotlin.js.JsName(name = "get_bar") public fun foo.A.get_bar(): kotlin.Int + + public final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt new file mode 100644 index 00000000000..9b127f6f8be --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt @@ -0,0 +1,223 @@ +// FIR_IDENTICAL + +// FILE: FinalExternalClass.kt +package FinalExternalClass +external class ExternalClass { + fun test(): String + fun test(x: Int): String + fun test(x: String): String + fun test(vararg x: Any): String + + val test: String + + @JsName("test") + fun notTest(): String + + @JsName("test") + val notTest: String +} + +// FILE: OpenExternalClassWithFinalMethods.kt +package OpenExternalClassWithFinalMethods +open external class ExternalClass { + fun test(): String + fun test(x: Int): String + fun test(x: String): String + fun test(vararg x: Any): String + + val test: String + + @JsName("test") + fun notTest(): String + + @JsName("test") + val notTest: String +} + +class MyClass1 : ExternalClass() { + fun test(x: List) = x + fun test(vararg x: Int) = x + + fun Int.test() {} + val Int.test get() = 1 + + @JsName("test") fun notTest2() {} +} + +class MyClass2 : ExternalClass() { + fun test(x: List) = x + fun test(vararg x: Int) = x + + fun Int.test() {} + val Int.test get() = 1 + + @JsName("test") val notTest2 = 1 +} + +// FILE: OpenExternalClassWithOpenMethods.kt +package OpenExternalClassWithOpenMethods +open external class ExternalClass { + open fun test(): String + open fun test(x: Int): String + open fun test(x: String): String + open fun test(vararg x: Any): String + + open val test: String + + @JsName("test") + open fun notTest(): String + + @JsName("test") + open val notTest: String +} + +class MyClass : ExternalClass() { + fun test(x: List) = x + fun test(vararg x: Int) = x + + fun Int.test() {} + val Int.test get() = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildOverload.kt +package OpenInheritedMethodClashedWithChildOverload +open external class ExternalClass { + open fun test(x: Int): String +} + +class MyClass : ExternalClass() { + fun test() {} +} + +// FILE: OpenInheritedMethodClashedWithChildProperty.kt +package OpenInheritedMethodClashedWithChildProperty +open external class ExternalClass { + open fun test(x: Int): String +} + +class MyClass : ExternalClass() { + val test = 1 +} + +// FILE: OpenInheritedPropertyClashedWithChildMethod.kt +package OpenInheritedPropertyClashedWithChildMethod +open external class ExternalClass { + open val test: String +} + +class MyClass : ExternalClass() { + fun test() {} +} + +// FILE: OpenInheritedMethodClashedWithChildOverridde.kt +package OpenInheritedMethodClashedWithChildOverridde +open external class ExternalClass { + open fun test(x: Int): Int + open fun test(x: String): String +} + +class MyClass : ExternalClass() { + override fun test(x: Int) = x +} + +// FILE: OpenInheritedMethodClashedWithChildPropertyOverridde.kt +package OpenInheritedMethodClashedWithChildPropertyOverridde +open external class ExternalClass { + open val test: Int + open fun test(x: String): String +} + +class MyClass : ExternalClass() { + override val test = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildMethodJsName.kt +package OpenInheritedMethodClashedWithChildMethodJsName +open external class ExternalClass { + open fun test(x: String): String +} + +class MyClass : ExternalClass() { + @JsName("test") fun notTest(x: String) = x +} + +// FILE: OpenInheritedMethodClashedWithChildPropertyJsName.kt +package OpenInheritedMethodClashedWithChildPropertyJsName +open external class ExternalClass { + open fun test(x: String): String +} + +class MyClass : ExternalClass() { + @JsName("test") val notTest = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildPropertyGetterJsName.kt +package OpenInheritedMethodClashedWithChildPropertyGetterJsName +open external class ExternalClass { + open fun test(x: String): String +} + +class MyClass : ExternalClass() { + val notTest: Int + @JsName("test") get() = 1 +} + +// FILE: OpenInheritedMethodClashedWithChildPropertySetterJsName.kt +package OpenInheritedMethodClashedWithChildPropertySetterJsName +open external class ExternalClass { + open fun test(x: Int): Int +} + +class MyClass : ExternalClass() { + var notTest: Int + @JsName("getterTest") get() = 1 + @JsName("test") set(value) { test(value) } +} + +// FILE: OpenInheritedMethodClashedWithOtherInheritedMethod.kt +package OpenInheritedMethodClashedWithOtherInheritedMethod +open external class ExternalClass { + open fun test(x: String): String +} + +interface MyInterface { + @JsName("test") fun noTest(x: Int) = 1 +} + +class MyClass : ExternalClass(), MyInterface + +// FILE: OpenInheritedMethodNotClashedWithAbstractMethod.kt +package OpenInheritedMethodNotClashedWithAbstractMethod +open external class ExternalClass { + open fun test(): String +} + +interface MyInterface { + fun test(): String +} + +class MyClass : ExternalClass(), MyInterface + +// FILE: OpenInheritedMethodNotClashedWithExternalAbstractMethod.kt +package OpenInheritedMethodNotClashedWithExternalAbstractMethod +open external class ExternalClass { + open fun test(): String +} + +external interface MyInterface { + fun test(): String +} + +class MyClass : ExternalClass(), MyInterface + +// FILE: OpenInheritedMethodNotClashedWithAbstractMethodWithSameName.kt +package OpenInheritedMethodNotClashedWithAbstractMethodWithSameName +open external class ExternalClass { + open fun test(x: Int): Int +} + +interface MyInterface { + @JsName("test") fun test(x: Int): Int +} + +class MyClass : ExternalClass(), MyInterface diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt new file mode 100644 index 00000000000..019528a3fb0 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.txt @@ -0,0 +1,396 @@ +package + +package FinalExternalClass { + + public final external class ExternalClass { + public constructor ExternalClass() + @kotlin.js.JsName(name = "test") public final val notTest: kotlin.String + public final val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final fun notTest(): kotlin.String + public final fun test(): kotlin.String + public final fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public final fun test(/*0*/ x: kotlin.Int): kotlin.String + public final fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenExternalClassWithFinalMethods { + + public open external class ExternalClass { + public constructor ExternalClass() + @kotlin.js.JsName(name = "test") public final val notTest: kotlin.String + public final val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final fun notTest(): kotlin.String + public final fun test(): kotlin.String + public final fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public final fun test(/*0*/ x: kotlin.Int): kotlin.String + public final fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass1 : OpenExternalClassWithFinalMethods.ExternalClass { + public constructor MyClass1() + @kotlin.js.JsName(name = "test") public final override /*1*/ /*fake_override*/ val notTest: kotlin.String + public final override /*1*/ /*fake_override*/ val test: kotlin.String + public final val kotlin.Int.test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final override /*1*/ /*fake_override*/ fun notTest(): kotlin.String + @kotlin.js.JsName(name = "test") public final fun notTest2(): kotlin.Unit + public final override /*1*/ /*fake_override*/ fun test(): kotlin.String + public final override /*1*/ /*fake_override*/ fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.String + public final fun test(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.IntArray + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public final fun test(/*0*/ x: kotlin.collections.List): kotlin.collections.List + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit + } + + public final class MyClass2 : OpenExternalClassWithFinalMethods.ExternalClass { + public constructor MyClass2() + @kotlin.js.JsName(name = "test") public final override /*1*/ /*fake_override*/ val notTest: kotlin.String + @kotlin.js.JsName(name = "test") public final val notTest2: kotlin.Int = 1 + public final override /*1*/ /*fake_override*/ val test: kotlin.String + public final val kotlin.Int.test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final override /*1*/ /*fake_override*/ fun notTest(): kotlin.String + public final override /*1*/ /*fake_override*/ fun test(): kotlin.String + public final override /*1*/ /*fake_override*/ fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.String + public final fun test(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.IntArray + public final override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public final fun test(/*0*/ x: kotlin.collections.List): kotlin.collections.List + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit + } +} + +package OpenExternalClassWithOpenMethods { + + public open external class ExternalClass { + public constructor ExternalClass() + @kotlin.js.JsName(name = "test") public open val notTest: kotlin.String + public open val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open fun notTest(): kotlin.String + public open fun test(): kotlin.String + public open fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public open fun test(/*0*/ x: kotlin.Int): kotlin.String + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenExternalClassWithOpenMethods.ExternalClass { + public constructor MyClass() + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ val notTest: kotlin.String + public open override /*1*/ /*fake_override*/ val test: kotlin.String + public final val kotlin.Int.test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ fun notTest(): kotlin.String + public open override /*1*/ /*fake_override*/ fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.String + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.String + public final fun test(/*0*/ vararg x: kotlin.Int /*kotlin.IntArray*/): kotlin.IntArray + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public final fun test(/*0*/ x: kotlin.collections.List): kotlin.collections.List + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public final fun kotlin.Int.test(): kotlin.Unit + } +} + +package OpenInheritedMethodClashedWithChildMethodJsName { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildMethodJsName.ExternalClass { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public final fun notTest(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildOverload { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildOverload.ExternalClass { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildOverridde { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildOverridde.ExternalClass { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildProperty { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildProperty.ExternalClass { + public constructor MyClass() + public final val test: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertyGetterJsName { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertyGetterJsName.ExternalClass { + public constructor MyClass() + @get:kotlin.js.JsName(name = "test") public final val notTest: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertyJsName { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertyJsName.ExternalClass { + public constructor MyClass() + @kotlin.js.JsName(name = "test") public final val notTest: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertyOverridde { + + public open external class ExternalClass { + public constructor ExternalClass() + public open val test: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertyOverridde.ExternalClass { + public constructor MyClass() + public open override /*1*/ val test: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithChildPropertySetterJsName { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithChildPropertySetterJsName.ExternalClass { + public constructor MyClass() + @get:kotlin.js.JsName(name = "getterTest") @set:kotlin.js.JsName(name = "test") public final var notTest: kotlin.Int + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodClashedWithOtherInheritedMethod { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodClashedWithOtherInheritedMethod.ExternalClass, OpenInheritedMethodClashedWithOtherInheritedMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open override /*1*/ /*fake_override*/ fun noTest(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun test(/*0*/ x: kotlin.String): kotlin.String + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public open fun noTest(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodNotClashedWithAbstractMethod { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodNotClashedWithAbstractMethod.ExternalClass, OpenInheritedMethodNotClashedWithAbstractMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun test(): kotlin.String + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodNotClashedWithAbstractMethodWithSameName { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodNotClashedWithAbstractMethodWithSameName.ExternalClass, OpenInheritedMethodNotClashedWithAbstractMethodWithSameName.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.js.JsName(name = "test") public abstract fun test(/*0*/ x: kotlin.Int): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedMethodNotClashedWithExternalAbstractMethod { + + public open external class ExternalClass { + public constructor ExternalClass() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedMethodNotClashedWithExternalAbstractMethod.ExternalClass, OpenInheritedMethodNotClashedWithExternalAbstractMethod.MyInterface { + public constructor MyClass() + public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*2*/ /*fake_override*/ fun test(): kotlin.String + public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String + } + + public external interface MyInterface { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract fun test(): kotlin.String + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package OpenInheritedPropertyClashedWithChildMethod { + + public open external class ExternalClass { + public constructor ExternalClass() + public open val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + public final class MyClass : OpenInheritedPropertyClashedWithChildMethod.ExternalClass { + public constructor MyClass() + public open override /*1*/ /*fake_override*/ val test: kotlin.String + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.kt b/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.kt new file mode 100644 index 00000000000..b845a2701eb --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.kt @@ -0,0 +1,171 @@ +// FIR_IDENTICAL + +// FILE: DeclarationOverloads.kt +package DeclarationOverloads + +fun test() {} +fun test(x: Int) = x +fun test(x: String) = x +fun test(x: String?) = x +fun test(vararg x: Any) = x + +@Suppress("NOTHING_TO_INLINE") +inline fun test() {} + +val test = 0 + +fun Int.test() {} +fun Int.test(x: Int) = x + +fun String.test() {} +fun String.test(x: String) = x + +val Int.test + get() = 0 + +var String.test + get() = "" + set(value) { test(value) } + + +// FILE: ClashJsNamedFunctionWithOtherFunction.kt +package ClashJsNamedFunctionWithOtherFunction + +@JsName("test") fun noTest(x: String): String = x + +fun test() {} + +// FILE: ClashJsNamedFunctionWithOtherProperty.kt +package ClashJsNamedFunctionWithOtherProperty + +@JsName("test") fun noTest(x: String): String = x + +val test = 1 + +// FILE: ClashJsNamedPropertyWithOtherFunction.kt +package ClashJsNamedPropertyWithOtherFunction + +fun test() {} + +@JsName("test") val notTest = 1 + +// FILE: ClashJsNamedPropertyGetterWithOtherFunction.kt +package ClashJsNamedPropertyGetterWithOtherFunction + +fun test() {} + +val notTest: Int + @JsName("test") get() = 1 + +// FILE: ClashJsNamedPropertySetterWithOtherFunction.kt +package ClashJsNamedPropertySetterWithOtherFunction + +fun test() {} + +fun ignore(x: T) = x + +var notTest: Int + @JsName("getterTest") get() = 1 + @JsName("test") set(value) { ignore(value) } + +// FILE: FunctionAndInterfaceClash.kt +package FunctionAndInterfaceClash + +fun test() {} + +interface test + +// FILE: FunctionWithParamsAndInterfaceNoClash.kt +package FunctionWithParamsAndInterfaceNoClash + +fun test(x: Int) = x +@Suppress("NOTHING_TO_INLINE") +inline fun test() {} + +interface test + +// FILE: FunctionWithJsNameAndInterfaceClash.kt +package FunctionWithJsNameAndInterfaceClash + +@JsName("test") fun notTest(x: Int) = x + +interface test + +// FILE: FunctionWithJsNameAndObjectClash.kt +package FunctionWithJsNameAndObjectClash + +@JsName("test") fun notTest(x: Int) = x + +object test + +// FILE: FunctionWithJsNameAndClassClash.kt +package FunctionWithJsNameAndClassClash + +@JsName("test") fun notTest(x: Int) = x + +class test + +// FILE: FunctionAndInterfaceWithJsNameClash.kt +package FunctionAndInterfaceWithJsNameClash + +fun test() {} + +@JsName("test") interface NotTest + +// FILE: FunctionAndClassWithJsNameClash.kt +package FunctionAndClassWithJsNameClash + +fun test() {} + +@JsName("test") class NotTest + +// FILE: FunctionAndObjectWithJsNameClash.kt +package FunctionAndObjectWithJsNameClash + +fun test() {} + +@JsName("test") object NotTest + +// FILE: PropertyWithJsNameAndInterfaceClash.kt +package PropertyWithJsNameAndInterfaceClash + +@JsName("test") val notTest = 1 + +interface test + +// FILE: FunctionWithJsNameAndExternalDeclarationsNoClash.kt +package FunctionWithJsNameAndExternalDeclarationsNoClash + +@JsName("test") +fun notTest1(x: Int) = x + +external fun test(): Int +external fun test(x: String): Int +external val test: Int + +@JsName("test") +external fun NotTest2(x: Int): Int + +@JsName("test") +external val NotTest3: Int + +@JsName("test") +external interface NotTest4 + +@JsName("test") +external class NotTest5 + +@JsName("test") +external abstract class NotTest6 + +@JsName("test") +external open class NotTest7 + +@JsName("test") +external private class NotTest8 + +@JsName("test") +external internal class NotTest9 + +@JsName("test") +external object NotTest10 diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.txt b/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.txt new file mode 100644 index 00000000000..9f617af4034 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.txt @@ -0,0 +1,196 @@ +package + +package ClashJsNamedFunctionWithOtherFunction { + @kotlin.js.JsName(name = "test") public fun noTest(/*0*/ x: kotlin.String): kotlin.String + public fun test(): kotlin.Unit +} + +package ClashJsNamedFunctionWithOtherProperty { + public val test: kotlin.Int = 1 + @kotlin.js.JsName(name = "test") public fun noTest(/*0*/ x: kotlin.String): kotlin.String +} + +package ClashJsNamedPropertyGetterWithOtherFunction { + @get:kotlin.js.JsName(name = "test") public val notTest: kotlin.Int + public fun test(): kotlin.Unit +} + +package ClashJsNamedPropertySetterWithOtherFunction { + @get:kotlin.js.JsName(name = "getterTest") @set:kotlin.js.JsName(name = "test") public var notTest: kotlin.Int + public fun ignore(/*0*/ x: T): T + public fun test(): kotlin.Unit +} + +package ClashJsNamedPropertyWithOtherFunction { + @kotlin.js.JsName(name = "test") public val notTest: kotlin.Int = 1 + public fun test(): kotlin.Unit +} + +package DeclarationOverloads { + public val test: kotlin.Int = 0 + public val kotlin.Int.test: kotlin.Int + public var kotlin.String.test: kotlin.String + public fun test(): kotlin.Unit + @kotlin.Suppress(names = {"NOTHING_TO_INLINE"}) public inline fun test(): kotlin.Unit + public fun test(/*0*/ vararg x: kotlin.Any /*kotlin.Array*/): kotlin.Array + public fun test(/*0*/ x: kotlin.Int): kotlin.Int + public fun test(/*0*/ x: kotlin.String): kotlin.String + public fun test(/*0*/ x: kotlin.String?): kotlin.String? + public fun kotlin.Int.test(): kotlin.Unit + public fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int + public fun kotlin.String.test(): kotlin.Unit + public fun kotlin.String.test(/*0*/ x: kotlin.String): kotlin.String +} + +package FunctionAndClassWithJsNameClash { + public fun test(): kotlin.Unit + + @kotlin.js.JsName(name = "test") public final class NotTest { + public constructor NotTest() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionAndInterfaceClash { + public fun test(): kotlin.Unit + + public interface test { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionAndInterfaceWithJsNameClash { + public fun test(): kotlin.Unit + + @kotlin.js.JsName(name = "test") public interface NotTest { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionAndObjectWithJsNameClash { + public fun test(): kotlin.Unit + + @kotlin.js.JsName(name = "test") public object NotTest { + private constructor NotTest() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionWithJsNameAndClassClash { + @kotlin.js.JsName(name = "test") public fun notTest(/*0*/ x: kotlin.Int): kotlin.Int + + public final class test { + public constructor test() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionWithJsNameAndExternalDeclarationsNoClash { + @kotlin.js.JsName(name = "test") public external val NotTest3: kotlin.Int + public external val test: kotlin.Int + @kotlin.js.JsName(name = "test") public external fun NotTest2(/*0*/ x: kotlin.Int): kotlin.Int + @kotlin.js.JsName(name = "test") public fun notTest1(/*0*/ x: kotlin.Int): kotlin.Int + public external fun test(): kotlin.Int + public external fun test(/*0*/ x: kotlin.String): kotlin.Int + + @kotlin.js.JsName(name = "test") public external object NotTest10 { + private constructor NotTest10() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") public external interface NotTest4 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") public final external class NotTest5 { + public constructor NotTest5() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") public abstract external class NotTest6 { + public constructor NotTest6() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") public open external class NotTest7 { + public constructor NotTest7() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") private final external class NotTest8 { + public constructor NotTest8() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @kotlin.js.JsName(name = "test") internal final external class NotTest9 { + public constructor NotTest9() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionWithJsNameAndInterfaceClash { + @kotlin.js.JsName(name = "test") public fun notTest(/*0*/ x: kotlin.Int): kotlin.Int + + public interface test { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionWithJsNameAndObjectClash { + @kotlin.js.JsName(name = "test") public fun notTest(/*0*/ x: kotlin.Int): kotlin.Int + + public object test { + private constructor test() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package FunctionWithParamsAndInterfaceNoClash { + @kotlin.Suppress(names = {"NOTHING_TO_INLINE"}) public inline fun test(): kotlin.Unit + public fun test(/*0*/ x: kotlin.Int): kotlin.Int + + public interface test { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +package PropertyWithJsNameAndInterfaceClash { + @kotlin.js.JsName(name = "test") public val notTest: kotlin.Int = 1 + + public interface test { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java index a9e5f72b9df..f0699e063ef 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJsStdLibGenerated.java @@ -697,12 +697,30 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classAndTypealias.kt"); } + @Test + @TestMetadata("classInheritance.kt") + public void testClassInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.kt"); + } + + @Test + @TestMetadata("classInheritanceExtensions.kt") + public void testClassInheritanceExtensions() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.kt"); + } + @Test @TestMetadata("classLevelMethodAndProperty.kt") public void testClassLevelMethodAndProperty() throws Exception { runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classLevelMethodAndProperty.kt"); } + @Test + @TestMetadata("classMembers.kt") + public void testClassMembers() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.kt"); + } + @Test @TestMetadata("conflictingNamesFromSuperclass.kt") public void testConflictingNamesFromSuperclass() throws Exception { @@ -721,6 +739,18 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethod.kt"); } + @Test + @TestMetadata("extensionPropertyAndMethodWithJsName.kt") + public void testExtensionPropertyAndMethodWithJsName() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.kt"); + } + + @Test + @TestMetadata("externalClassInheritance.kt") + public void testExternalClassInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt"); + } + @Test @TestMetadata("illegalName.kt") public void testIllegalName() throws Exception { @@ -853,6 +883,12 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/propertyAndMethodInSubclass.kt"); } + @Test + @TestMetadata("topLevelDeclarations.kt") + public void testTopLevelDeclarations() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.kt"); + } + @Test @TestMetadata("topLevelMethodAndJsNameConstructor.kt") public void testTopLevelMethodAndJsNameConstructor() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java index c97eabd07e1..c7019850bd0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java @@ -5178,6 +5178,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest { runTest("js/js.translator/testData/box/inheritance/fromNestedNativeClass.kt"); } + @Test + @TestMetadata("inheritExtensionsWithSameNames.kt") + public void testInheritExtensionsWithSameNames() throws Exception { + runTest("js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt"); + } + @Test @TestMetadata("inheritFromCharIterator.kt") public void testInheritFromCharIterator() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java index c57a68bbfc5..a65f4910b00 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6BoxTestGenerated.java @@ -5284,6 +5284,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest { runTest("js/js.translator/testData/box/inheritance/fromNestedNativeClass.kt"); } + @Test + @TestMetadata("inheritExtensionsWithSameNames.kt") + public void testInheritExtensionsWithSameNames() throws Exception { + runTest("js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt"); + } + @Test @TestMetadata("inheritFromCharIterator.kt") public void testInheritFromCharIterator() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java index b2a0ec5b49f..65c199ed062 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsOldFrontendDiagnosticsTestGenerated.java @@ -698,12 +698,30 @@ public class FirPsiJsOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiJ runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classAndTypealias.kt"); } + @Test + @TestMetadata("classInheritance.kt") + public void testClassInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritance.kt"); + } + + @Test + @TestMetadata("classInheritanceExtensions.kt") + public void testClassInheritanceExtensions() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classInheritanceExtensions.kt"); + } + @Test @TestMetadata("classLevelMethodAndProperty.kt") public void testClassLevelMethodAndProperty() throws Exception { runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classLevelMethodAndProperty.kt"); } + @Test + @TestMetadata("classMembers.kt") + public void testClassMembers() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/classMembers.kt"); + } + @Test @TestMetadata("conflictingNamesFromSuperclass.kt") public void testConflictingNamesFromSuperclass() throws Exception { @@ -722,6 +740,18 @@ public class FirPsiJsOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiJ runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethod.kt"); } + @Test + @TestMetadata("extensionPropertyAndMethodWithJsName.kt") + public void testExtensionPropertyAndMethodWithJsName() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/extensionPropertyAndMethodWithJsName.kt"); + } + + @Test + @TestMetadata("externalClassInheritance.kt") + public void testExternalClassInheritance() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/externalClassInheritance.kt"); + } + @Test @TestMetadata("illegalName.kt") public void testIllegalName() throws Exception { @@ -854,6 +884,12 @@ public class FirPsiJsOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiJ runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/propertyAndMethodInSubclass.kt"); } + @Test + @TestMetadata("topLevelDeclarations.kt") + public void testTopLevelDeclarations() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJsStdLib/name/topLevelDeclarations.kt"); + } + @Test @TestMetadata("topLevelMethodAndJsNameConstructor.kt") public void testTopLevelMethodAndJsNameConstructor() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java index c6cf0a79147..7e6bc6ec458 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsES6TestGenerated.java @@ -5284,6 +5284,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test { runTest("js/js.translator/testData/box/inheritance/fromNestedNativeClass.kt"); } + @Test + @TestMetadata("inheritExtensionsWithSameNames.kt") + public void testInheritExtensionsWithSameNames() throws Exception { + runTest("js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt"); + } + @Test @TestMetadata("inheritFromCharIterator.kt") public void testInheritFromCharIterator() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index d4abd030765..1037d63fb90 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -5178,6 +5178,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/inheritance/fromNestedNativeClass.kt"); } + @Test + @TestMetadata("inheritExtensionsWithSameNames.kt") + public void testInheritExtensionsWithSameNames() throws Exception { + runTest("js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt"); + } + @Test @TestMetadata("inheritFromCharIterator.kt") public void testInheritFromCharIterator() throws Exception { diff --git a/js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt b/js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt new file mode 100644 index 00000000000..94ff2498de0 --- /dev/null +++ b/js/js.translator/testData/box/inheritance/inheritExtensionsWithSameNames.kt @@ -0,0 +1,17 @@ +open class Class { + fun String.test(): String = "O" + val String.test: String + get() = "K" +} + +// This case is only relevant for the JS Legacy BE and is not applicable to the JS IR backend, +// as the IR BE can resolve such name collisions. +@Suppress("JS_FAKE_NAME_CLASH") +class MyClass1 : Class() + +fun box(): String { + val s = "" + return with(MyClass1()) { + s.test() + s.test + } +}