[IR] Dump IdSignatures and mangled names in irText tests

The reason #1 for this feature is that we want to test IdSignatures
generated for declarations. Currently, there is no (easy) way to ensure
that a change in the signature building logic doesn't cause any breaking
changes wrt klibs.

Now, most IdSignatures include hashed mangled names in them, so even if
we catch a regression where the included hash changes, there would be no
way of knowing immediately what caused it, unless we'd also have mangled
names in the expectations.

The reason #2 is to test the manglers themselves. Currently, there are
no tests for them. They heavily duplicate each other, this is already
causing issues (see KT-57427) that would be very hard to catch without
these tests.

^KT-58238 Fixed
This commit is contained in:
Sergej Jaskiewicz
2023-04-06 15:07:36 +02:00
committed by Space Team
parent bccf69910d
commit 6e8283a6fe
791 changed files with 36162 additions and 357 deletions
@@ -1,8 +1,10 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// WITH_STDLIB
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test1(d: dynamic) = d.toString()
fun test2(d: dynamic) = d.hashCode()
@@ -0,0 +1,15 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): String
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): Int
// CHECK JS_IR NATIVE:
// Mangled name: #test3(<dynamic>){}
// Public signature: /test3|8250122632028727853[0]
fun test3(d: dynamic): Boolean
@@ -1,5 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testArrayAccess1(d: dynamic) = d["KEY"]
fun testArrayAccess2(d: dynamic) = d()["KEY"]
@@ -0,0 +1,15 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testArrayAccess1(<dynamic>){}
// Public signature: /testArrayAccess1|-7245796695879478116[0]
fun testArrayAccess1(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testArrayAccess2(<dynamic>){}
// Public signature: /testArrayAccess2|-1661569284054013352[0]
fun testArrayAccess2(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testArrayAccess3(<dynamic>){}
// Public signature: /testArrayAccess3|1401503501141065915[0]
fun testArrayAccess3(d: dynamic): dynamic
@@ -1,4 +1,8 @@
// TARGET_BACKEND: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testArrayAssignment(d: dynamic) {
d["KEY"] = 1
}
@@ -0,0 +1,10 @@
// CHECK:
// Mangled name: #testArrayAssignment(<dynamic>){}
// Public signature: /testArrayAssignment|-7643929268553758425[0]
fun testArrayAssignment(d: dynamic): Unit
// CHECK:
// Mangled name: #testArrayAssignmentFake(<dynamic>){}
// Public signature: /testArrayAssignmentFake|3175988190655386022[0]
fun testArrayAssignmentFake(d: dynamic): Unit
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testArrayAugmentedAssignment(d: dynamic) {
d["KEY"] += "+="
d["KEY"] -= "-="
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #testArrayAugmentedAssignment(<dynamic>){}
// Public signature: /testArrayAugmentedAssignment|-3592844207838342981[0]
fun testArrayAugmentedAssignment(d: dynamic): Unit
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #testArrayIncrementDecrement(<dynamic>){}
// Public signature: /testArrayIncrementDecrement|641183399401632019[0]
fun testArrayIncrementDecrement(d: dynamic): Unit
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testEqeq(d: dynamic) = d == 3
fun testExclEq(d: dynamic) = d != 3
fun testEqeqeq(d: dynamic) = d === 3
@@ -0,0 +1,20 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testEqeq(<dynamic>){}
// Public signature: /testEqeq|-1993622698448833276[0]
fun testEqeq(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testEqeqeq(<dynamic>){}
// Public signature: /testEqeqeq|6434412038753944189[0]
fun testEqeqeq(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testExclEq(<dynamic>){}
// Public signature: /testExclEq|-2117076107258151936[0]
fun testExclEq(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testExclEqeq(<dynamic>){}
// Public signature: /testExclEqeq|5516019862167337768[0]
fun testExclEqeq(d: dynamic): Boolean
@@ -1,4 +1,8 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testAndAnd(d: dynamic) = d && d
fun testOrOr(d: dynamic) = d || d
@@ -0,0 +1,10 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testAndAnd(<dynamic>){}
// Public signature: /testAndAnd|6769903474387958731[0]
fun testAndAnd(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testOrOr(<dynamic>){}
// Public signature: /testOrOr|-4888923550082993745[0]
fun testOrOr(d: dynamic): Boolean
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testBinaryPlus(d: dynamic) = d + 1
fun testBinaryMinus(d: dynamic) = d - 1
fun testMul(d: dynamic) = d * 2
@@ -0,0 +1,25 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testBinaryMinus(<dynamic>){}
// Public signature: /testBinaryMinus|-6906044509434142120[0]
fun testBinaryMinus(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testBinaryPlus(<dynamic>){}
// Public signature: /testBinaryPlus|-1566186978437165994[0]
fun testBinaryPlus(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testDiv(<dynamic>){}
// Public signature: /testDiv|-5313978605720972233[0]
fun testDiv(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testMod(<dynamic>){}
// Public signature: /testMod|-4500464822782079065[0]
fun testMod(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testMul(<dynamic>){}
// Public signature: /testMul|7374329083477531332[0]
fun testMul(d: dynamic): dynamic
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testLess(d: dynamic) = d < 2
fun testLessOrEqual(d: dynamic) = d <= 2
fun testGreater(d: dynamic) = d > 2
@@ -0,0 +1,20 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testGreater(<dynamic>){}
// Public signature: /testGreater|8630519043746384333[0]
fun testGreater(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testGreaterOrEqual(<dynamic>){}
// Public signature: /testGreaterOrEqual|-4223395036536198085[0]
fun testGreaterOrEqual(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testLess(<dynamic>){}
// Public signature: /testLess|7641985245454790157[0]
fun testLess(d: dynamic): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: #testLessOrEqual(<dynamic>){}
// Public signature: /testLessOrEqual|-6484107233559376103[0]
fun testLessOrEqual(d: dynamic): Boolean
+4
View File
@@ -1,5 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test1(d: dynamic) = d.member(1, 2, 3)
fun test2(d: dynamic) = d?.member(1, 2, 3)
@@ -0,0 +1,15 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test3(<dynamic>){}
// Public signature: /test3|8250122632028727853[0]
fun test3(d: dynamic): dynamic
@@ -1,3 +1,6 @@
// TARGET_BACKEND: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test(d: dynamic) = d ?: "other"
@@ -0,0 +1,5 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test(<dynamic>){}
// Public signature: /test|8843648336650546510[0]
fun test(d: dynamic): dynamic
@@ -1,4 +1,8 @@
// TARGET_BACKEND: JS_IR
// IGNORE_BACKEND_K1: JS_IR
// IGNORE_BACKEND_K1: JS_IR_ES6
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test(d: dynamic) = d!!
@@ -0,0 +1,5 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test(<dynamic>){}
// Public signature: /test|8843648336650546510[0]
fun test(d: dynamic): dynamic
+4 -1
View File
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test1(d: dynamic) = d foo 123
fun test2(d: dynamic) = d invoke 123
@@ -0,0 +1,10 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): dynamic
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test1(d: dynamic) = d.member
fun test2(d: dynamic) = d?.member
@@ -0,0 +1,10 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): dynamic
@@ -1,5 +1,8 @@
// TARGET_BACKEND: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testMemberAssignment(d: dynamic) {
d.m = 1
}
@@ -0,0 +1,10 @@
// CHECK:
// Mangled name: #testMemberAssignment(<dynamic>){}
// Public signature: /testMemberAssignment|3403761995191046849[0]
fun testMemberAssignment(d: dynamic): Unit
// CHECK:
// Mangled name: #testSafeMemberAssignment(<dynamic>){}
// Public signature: /testSafeMemberAssignment|1432313440653046937[0]
fun testSafeMemberAssignment(d: dynamic): Unit
@@ -1,5 +1,8 @@
// TARGET_BACKEND: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testAugmentedMemberAssignment(d: dynamic) {
d.m += "+="
d.m -= "-="
@@ -0,0 +1,10 @@
// CHECK:
// Mangled name: #testAugmentedMemberAssignment(<dynamic>){}
// Public signature: /testAugmentedMemberAssignment|6871762003023534167[0]
fun testAugmentedMemberAssignment(d: dynamic): Unit
// CHECK:
// Mangled name: #testSafeAugmentedMemberAssignment(<dynamic>){}
// Public signature: /testSafeAugmentedMemberAssignment|9098819858529650270[0]
fun testSafeAugmentedMemberAssignment(d: dynamic): Unit
@@ -0,0 +1,10 @@
// CHECK:
// Mangled name: #testMemberIncrementDecrement(<dynamic>){}
// Public signature: /testMemberIncrementDecrement|1604694277771575268[0]
fun testMemberIncrementDecrement(d: dynamic): Unit
// CHECK:
// Mangled name: #testSafeMemberIncrementDecrement(<dynamic>){}
// Public signature: /testSafeMemberIncrementDecrement|-4306216465980095979[0]
fun testSafeMemberIncrementDecrement(d: dynamic): Unit
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun testUnaryMinus(d: dynamic) = -d
fun testUnaryPlus(d: dynamic) = +d
fun testExcl(d: dynamic) = !d
@@ -0,0 +1,15 @@
// CHECK JS_IR NATIVE:
// Mangled name: #testExcl(<dynamic>){}
// Public signature: /testExcl|1647775855598193701[0]
fun testExcl(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testUnaryMinus(<dynamic>){}
// Public signature: /testUnaryMinus|2676344279010670857[0]
fun testUnaryMinus(d: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #testUnaryPlus(<dynamic>){}
// Public signature: /testUnaryPlus|3234645334485860647[0]
fun testUnaryPlus(d: dynamic): dynamic
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// WITH_STDLIB
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun test1(d: dynamic) = if (d is String) d.length else -1
fun test2(d: dynamic) = if (d is Array<*>) d.size else -1
@@ -0,0 +1,10 @@
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): Int
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): Int
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
val d: dynamic = 1
val p: Int = d
@@ -0,0 +1,38 @@
// CHECK:
// Mangled name: {}d
// Public signature: /d|5174763769109925331[0]
val d: dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #<get-d>(){}
// Public signature: /d.<get-d>|-6701718004621354461[0]
get
// CHECK:
// Mangled name: {}p
// Public signature: /p|6715504260787941082[0]
val p: Int
// CHECK JS_IR NATIVE:
// Mangled name: #<get-p>(){}
// Public signature: /p.<get-p>|-1162552463316289847[0]
get
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(d: dynamic): Int
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(d: dynamic): Any
// CHECK JS_IR NATIVE:
// Mangled name: #test3(<dynamic>){}
// Public signature: /test3|8250122632028727853[0]
fun test3(d: dynamic): Any?
// CHECK JS_IR NATIVE:
// Mangled name: #test4(<dynamic>){}
// Public signature: /test4|3998898222236566906[0]
fun test4(d: dynamic): String
@@ -1,4 +1,8 @@
// TARGET_BACKEND: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
val d1: dynamic = 1
val p: Int = 1
@@ -0,0 +1,61 @@
// CHECK:
// Mangled name: {}d1
// Public signature: /d1|-2026668325688559202[0]
val d1: dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #<get-d1>(){}
// Public signature: /d1.<get-d1>|3799770350020755350[0]
get
// CHECK:
// Mangled name: {}p
// Public signature: /p|6715504260787941082[0]
val p: Int
// CHECK JS_IR NATIVE:
// Mangled name: #<get-p>(){}
// Public signature: /p.<get-p>|-1162552463316289847[0]
get
// CHECK:
// Mangled name: {}d2
// Public signature: /d2|-7196645270133305146[0]
var d2: dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #<get-d2>(){}
// Public signature: /d2.<get-d2>|-1981535204947042648[0]
get
// CHECK:
// Mangled name: #<set-d2>(<dynamic>){}
// Public signature: /d2.<set-d2>|8009685074731428505[0]
set
// CHECK:
// Mangled name: #test1(kotlin.String){}
// Public signature: /test1|3813564455063048258[0]
fun test1(s: String): Unit
// CHECK:
// Mangled name: #test2(kotlin.Any){}
// Public signature: /test2|-8648451680149324146[0]
fun test2(a: Any): Unit
// CHECK:
// Mangled name: #test3(kotlin.Any?){}
// Public signature: /test3|7681112685114804269[0]
fun test3(a: Any?): Unit
// CHECK:
// Mangled name: #test4(kotlin.Any;kotlin.String;kotlin.Any?){}
// Public signature: /test4|-3496354737059131368[0]
fun test4(a: Any, s: String, na: Any?): Unit
// CHECK:
// Mangled name: #test5(kotlin.Any;kotlin.String;kotlin.Any?){}
// Public signature: /test5|-54558059321704654[0]
fun test5(a: Any, s: String, na: Any?): Unit
// CHECK JS_IR NATIVE:
// Mangled name: #withDynamic(<dynamic>){}
// Public signature: /withDynamic|4181319760857558891[0]
fun withDynamic(d: dynamic): dynamic
+4 -1
View File
@@ -1,6 +1,9 @@
// TARGET_BACKEND: JS_IR
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57566
fun invoke() {}
fun test1(a: dynamic) = a(1)
@@ -0,0 +1,40 @@
// CHECK:
// Mangled name: #invoke(){}
// Public signature: /invoke|-4663091332620260873[0]
fun invoke(): Unit
// CHECK JS_IR NATIVE:
// Mangled name: #test1(<dynamic>){}
// Public signature: /test1|4353482563436034667[0]
fun test1(a: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test2(<dynamic>){}
// Public signature: /test2|-7945586224410659921[0]
fun test2(a: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test3(<dynamic>;<dynamic>){}
// Public signature: /test3|-5295421377258897884[0]
fun test3(a: dynamic, b: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test4(<dynamic>;<dynamic>){}
// Public signature: /test4|-1850506594378519629[0]
fun test4(a: dynamic, b: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test5(<dynamic>;<dynamic>){}
// Public signature: /test5|254402909642760010[0]
fun test5(a: dynamic, b: dynamic): dynamic
// CHECK JS_IR NATIVE:
// Mangled name: #test6(<dynamic>;<dynamic>){}
// Public signature: /test6|2790484771664022046[0]
fun test6(a: dynamic, b: dynamic): dynamic
// CHECK:
// Mangled name: #test7(<dynamic>){}
// Public signature: /test7|538407233409957251[0]
fun test7(a: dynamic): Unit
@@ -61,6 +61,8 @@ FILE fqName:events fileName:/kt38765.kt
init: EXPRESSION_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [external,primary] declared in events.internal.NestedExternalEnum'
PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [external,fake_override,val]
annotations:
IntrinsicConstEvaluation
overridden:
public final name: kotlin.String [val]
FUN FAKE_OVERRIDE name:<get-name> visibility:public modality:FINAL <> ($this:kotlin.Enum<events.internal.NestedExternalEnum>) returnType:kotlin.String [external,fake_override]
+4 -2
View File
@@ -1,6 +1,8 @@
// TARGET_BACKEND: JS_IR
// IGNORE_BACKEND_K1: JS_IR
// IGNORE_BACKEND_K1: JS_IR_ES6
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57777
package events
external open class internal {
+8 -5
View File
@@ -1,24 +1,24 @@
package events
open external class internal {
external constructor() /* primary */
external constructor() /* primary */
open external class EventEmitterP : internal {
external constructor() /* primary */
external constructor() /* primary */
}
open external class EventEmitterS : internal {
external constructor(a: Any)
external constructor(a: Any)
}
external object NestedExternalObject : internal {
private external constructor() /* primary */
private external constructor() /* primary */
}
external enum class NestedExternalEnum : Enum<NestedExternalEnum> {
private external constructor() /* primary */
private external constructor() /* primary */
A = NestedExternalEnum()
B = NestedExternalEnum()
@@ -27,6 +27,9 @@ open external class internal {
external fun valueOf(value: String): NestedExternalEnum /* Synthetic body for ENUM_VALUEOF */
external val entries: EnumEntries<NestedExternalEnum>
external get(): EnumEntries<NestedExternalEnum> /* Synthetic body for ENUM_ENTRIES */
}
external interface NestedExternalInterface {
@@ -0,0 +1,130 @@
package events
// CHECK:
// Mangled name: events.internal
// Public signature: events/internal|null[0]
open external class internal {
// CHECK:
// Mangled name: events.internal.EventEmitterP
// Public signature: events/internal.EventEmitterP|null[0]
open external class EventEmitterP : internal {
// CHECK:
// Mangled name: events.internal.EventEmitterP#<init>(){}
// Public signature: events/internal.EventEmitterP.<init>|-5645683436151566731[0]
external constructor() /* primary */
}
// CHECK:
// Mangled name: events.internal.EventEmitterS
// Public signature: events/internal.EventEmitterS|null[0]
open external class EventEmitterS : internal {
// CHECK:
// Mangled name: events.internal.EventEmitterS#<init>(kotlin.Any){}
// Public signature: events/internal.EventEmitterS.<init>|4518179880532599055[0]
external constructor(a: Any)
}
// CHECK:
// Mangled name: events.internal.NestedExternalEnum
// Public signature: events/internal.NestedExternalEnum|null[0]
external enum class NestedExternalEnum : Enum<NestedExternalEnum> {
// CHECK:
// Mangled name: events.internal.NestedExternalEnum#<init>(){}
// Public signature: events/internal.NestedExternalEnum.<init>|-5645683436151566731[0]
private external constructor() /* primary */
// CHECK:
// Mangled name: events.internal.NestedExternalEnum.A
// Public signature: events/internal.NestedExternalEnum.A|null[0]
A
// CHECK:
// Mangled name: events.internal.NestedExternalEnum.B
// Public signature: events/internal.NestedExternalEnum.B|null[0]
B
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#valueOf#static(kotlin.String){}
// Public signature: events/internal.NestedExternalEnum.valueOf|-4683474617854611729[0]
external fun valueOf(value: String): NestedExternalEnum
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#values#static(){}
// Public signature: events/internal.NestedExternalEnum.values|-8715569000920726747[0]
external fun values(): Array<NestedExternalEnum>
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#compareTo(events.internal.NestedExternalEnum){}
// Public signature: events/internal.NestedExternalEnum.compareTo|-4902667871773591290[0]
external /* fake */ override operator fun compareTo(other: NestedExternalEnum): Int
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#equals(kotlin.Any?){}
// Public signature: events/internal.NestedExternalEnum.equals|4638265728071529943[0]
external /* fake */ override operator fun equals(other: Any?): Boolean
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#hashCode(){}
// Public signature: events/internal.NestedExternalEnum.hashCode|3409210261493131192[0]
external /* fake */ override fun hashCode(): Int
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#toString(){}
// Public signature: events/internal.NestedExternalEnum.toString|-1522858123163872138[0]
external /* fake */ override fun toString(): String
// CHECK:
// Mangled name: events.internal.NestedExternalEnum#static{}entries
// Public signature: events/internal.NestedExternalEnum.entries|-5134227801081826149[0]
external val entries: EnumEntries<NestedExternalEnum>
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#<get-entries>#static(){}
// Public signature: events/internal.NestedExternalEnum.entries.<get-entries>|-6068527377476727729[0]
external get(): EnumEntries<NestedExternalEnum>
// CHECK:
// Mangled name: events.internal.NestedExternalEnum{}name
// Public signature: events/internal.NestedExternalEnum.name|4231860309499509769[0]
external /* fake */ override val name: String
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#<get-name>(){}
// Public signature: events/internal.NestedExternalEnum.name.<get-name>|5879344792307730109[0]
external /* fake */ override get(): String
// CHECK:
// Mangled name: events.internal.NestedExternalEnum{}ordinal
// Public signature: events/internal.NestedExternalEnum.ordinal|1912745122988592376[0]
external /* fake */ override val ordinal: Int
// CHECK JS_IR NATIVE:
// Mangled name: events.internal.NestedExternalEnum#<get-ordinal>(){}
// Public signature: events/internal.NestedExternalEnum.ordinal.<get-ordinal>|8409904226035914023[0]
external /* fake */ override get(): Int
}
// CHECK:
// Mangled name: events.internal.NestedExternalInterface
// Public signature: events/internal.NestedExternalInterface|null[0]
external interface NestedExternalInterface {
}
// CHECK:
// Mangled name: events.internal.NestedExternalObject
// Public signature: events/internal.NestedExternalObject|null[0]
external object NestedExternalObject : internal {
// CHECK:
// Mangled name: events.internal.NestedExternalObject#<init>(){}
// Public signature: events/internal.NestedExternalObject.<init>|-5645683436151566731[0]
private external constructor() /* primary */
}
// CHECK:
// Mangled name: events.internal#<init>(){}
// Public signature: events/internal.<init>|-5645683436151566731[0]
external constructor() /* primary */
}
@@ -1,13 +1,13 @@
package foo
open external class A {
external constructor() /* primary */
external constructor() /* primary */
external fun foo(): String
}
open external class B : A {
external constructor() /* primary */
external constructor() /* primary */
external fun bar(): String
}
@@ -0,0 +1,64 @@
package foo
// CHECK:
// Mangled name: foo.A
// Public signature: foo/A|null[0]
open external class A {
// CHECK:
// Mangled name: foo.A#<init>(){}
// Public signature: foo/A.<init>|-5645683436151566731[0]
external constructor() /* primary */
// CHECK JS_IR NATIVE:
// Mangled name: foo.A#foo(){}
// Public signature: foo/A.foo|-1041209573719867811[0]
external fun foo(): String
}
// CHECK:
// Mangled name: foo.B
// Public signature: foo/B|null[0]
open external class B : A {
// CHECK:
// Mangled name: foo.B#<init>(){}
// Public signature: foo/B.<init>|-5645683436151566731[0]
external constructor() /* primary */
// CHECK JS_IR NATIVE:
// Mangled name: foo.B#foo(){}
// Public signature: foo/B.foo|-1041209573719867811[0]
external /* fake */ override fun foo(): String
// CHECK JS_IR NATIVE:
// Mangled name: foo.B#bar(){}
// Public signature: foo/B.bar|496682602797471549[0]
external fun bar(): String
}
// CHECK:
// Mangled name: foo.C
// Public signature: foo/C|null[0]
class C : B {
// CHECK:
// Mangled name: foo.C#<init>(){}
// Public signature: foo/C.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK JS_IR NATIVE:
// Mangled name: foo.C#bar(){}
// Public signature: foo/C.bar|496682602797471549[0]
/* fake */ override fun bar(): String
// CHECK JS_IR NATIVE:
// Mangled name: foo.C#foo(){}
// Public signature: foo/C.foo|-1041209573719867811[0]
/* fake */ override fun foo(): String
}
// CHECK JS_IR NATIVE:
// Mangled name: foo#box(){}
// Public signature: foo/box|2173511048851971368[0]
fun box(): String