[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
@@ -0,0 +1,8 @@
// CHECK:
// Mangled name: {}test
// Public signature: /test|-5712650070209114719[0]
val test: IntIterator
// CHECK JVM_IR:
// Mangled name: #<get-test>(){}kotlin.collections.IntIterator
// Public signature: /test.<get-test>|5296058918654080755[0]
get
@@ -0,0 +1,5 @@
// CHECK JVM_IR:
// Mangled name: #plus@kotlin.collections.Map<out|0:0,0:1>(kotlin.Pair<0:0,0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.collections.Map<0:0,0:1>
// Public signature: /plus|-6703819129199897123[0]
fun <K1 : Any?, V1 : Any?> Map<out K1, V1>.plus(pair: Pair<K1, V1>): Map<K1, V1>
@@ -0,0 +1,9 @@
// CHECK:
// Mangled name: {}test
// Public signature: /test|-5712650070209114719[0]
val test: Int
// CHECK JVM_IR:
// Mangled name: #<get-test>(){}kotlin.Int
// Public signature: /test.<get-test>|3701432460336260723[0]
get
@@ -1,6 +1,9 @@
// IGNORE_BACKEND_K1: JS_IR
// IGNORE_BACKEND_K1: JS_IR_ES6
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57429
// MODULE: m1
// FILE: genericClassInDifferentModule_m1.kt
@@ -0,0 +1,120 @@
// MODULE: m1
// FILE: genericClassInDifferentModule_m1.kt
// CHECK:
// Mangled name: Base
// Public signature: /Base|null[0]
abstract class Base<T : Any?> {
// CHECK:
// Mangled name: Base{}x
// Public signature: /Base.x|-8060530855978347579[0]
val x: T
// CHECK JVM_IR:
// Mangled name: Base#<get-x>(){}1:0
// Public signature: /Base.x.<get-x>|-8893883356128097563[0]
// CHECK JS_IR NATIVE:
// Mangled name: Base#<get-x>(){}
// Public signature: /Base.x.<get-x>|1482705010654679335[0]
get
// CHECK:
// Mangled name: Base#<init>(1:0){}
// Public signature: /Base.<init>|-8731461708390519279[0]
constructor(x: T) /* primary */
// CHECK JVM_IR:
// Mangled name: Base#foo(0:0){0§<kotlin.Any?>}1:0
// Public signature: /Base.foo|8673945311830780726[0]
// CHECK JS_IR NATIVE:
// Mangled name: Base#foo(0:0){0§<kotlin.Any?>}
// Public signature: /Base.foo|-6838606926256314363[0]
abstract fun <Y : Any?> foo(y: Y): T
// CHECK:
// Mangled name: Base{}bar
// Public signature: /Base.bar|-7864284097863469857[0]
abstract var bar: T
// CHECK JVM_IR:
// Mangled name: Base#<get-bar>(){}1:0
// Public signature: /Base.bar.<get-bar>|7899956589744407340[0]
// CHECK JS_IR NATIVE:
// Mangled name: Base#<get-bar>(){}
// Public signature: /Base.bar.<get-bar>|6880642144337645699[0]
abstract get
// CHECK:
// Mangled name: Base#<set-bar>(1:0){}
// Public signature: /Base.bar.<set-bar>|3083825024913650500[0]
abstract set
// CHECK:
// Mangled name: Base@0:0{0§<kotlin.Any?>}exn
// Public signature: /Base.exn|2371047114698435273[0]
abstract var <Z : Any?> Z.exn: T
// CHECK JVM_IR:
// Mangled name: Base#<get-exn>@0:0(){0§<kotlin.Any?>}1:0
// Public signature: /Base.exn.<get-exn>|6217753676739394662[0]
// CHECK JS_IR NATIVE:
// Mangled name: Base#<get-exn>@0:0(){0§<kotlin.Any?>}
// Public signature: /Base.exn.<get-exn>|-202876889853335253[0]
abstract get
// CHECK:
// Mangled name: Base#<set-exn>@0:0(1:0){0§<kotlin.Any?>}
// Public signature: /Base.exn.<set-exn>|5747714515092438414[0]
abstract set
}
// MODULE: m2
// FILE: genericClassInDifferentModule_m2.kt
// CHECK:
// Mangled name: Derived1
// Public signature: /Derived1|null[0]
class Derived1<T : Any?> : Base<T> {
// CHECK:
// Mangled name: Derived1{}bar
// Public signature: /Derived1.bar|-7864284097863469857[0]
override var bar: T
// CHECK JVM_IR:
// Mangled name: Derived1#<get-bar>(){}1:0
// Public signature: /Derived1.bar.<get-bar>|7899956589744407340[0]
override get
// CHECK:
// Mangled name: Derived1#<set-bar>(1:0){}
// Public signature: /Derived1.bar.<set-bar>|3083825024913650500[0]
override set
// CHECK:
// Mangled name: Derived1#<init>(1:0){}
// Public signature: /Derived1.<init>|-8731461708390519279[0]
constructor(x: T) /* primary */
// CHECK JVM_IR:
// Mangled name: Derived1#foo(0:0){0§<kotlin.Any?>}1:0
// Public signature: /Derived1.foo|8673945311830780726[0]
override fun <Y : Any?> foo(y: Y): T
// CHECK:
// Mangled name: Derived1{}x
// Public signature: /Derived1.x|-8060530855978347579[0]
/* fake */ override val x: T
// CHECK JVM_IR:
// Mangled name: Derived1#<get-x>(){}1:0
// Public signature: /Derived1.x.<get-x>|-8893883356128097563[0]
/* fake */ override get(): T
// CHECK:
// Mangled name: Derived1@0:0{0§<kotlin.Any?>}exn
// Public signature: /Derived1.exn|2371047114698435273[0]
override var <Z : Any?> Z.exn: T
// CHECK JVM_IR:
// Mangled name: Derived1#<get-exn>@0:0(){0§<kotlin.Any?>}1:0
// Public signature: /Derived1.exn.<get-exn>|6217753676739394662[0]
override get(): T
// CHECK:
// Mangled name: Derived1#<set-exn>@0:0(1:0){0§<kotlin.Any?>}
// Public signature: /Derived1.exn.<set-exn>|5747714515092438414[0]
override set(value: T): Unit
}
@@ -0,0 +1,20 @@
// CHECK JVM_IR:
// Mangled name: #test1(){}J1<kotlin.Int>
// Public signature: /test1|3199616915653410742[0]
fun test1(): J1<Int>
// CHECK JVM_IR:
// Mangled name: #test2(){}J1<kotlin.Int>
// Public signature: /test2|7911590194658936613[0]
fun test2(): J1<Int>
// CHECK JVM_IR:
// Mangled name: #test3(J1<kotlin.Any>){}J1.J2<kotlin.Int,kotlin.Any>
// Public signature: /test3|-2201383984425029215[0]
fun test3(j1: J1<Any>): J2<Int, Any>
// CHECK JVM_IR:
// Mangled name: #test4(J1<kotlin.Any>){}J1.J2<kotlin.Int,kotlin.Any>
// Public signature: /test4|6994753301121646380[0]
fun test4(j1: J1<Any>): J2<Int, Any>
+9
View File
@@ -0,0 +1,9 @@
// CHECK:
// Mangled name: {}test
// Public signature: /test|-5712650070209114719[0]
val test: JEnum
// CHECK JVM_IR:
// Mangled name: #<get-test>(){}JEnum
// Public signature: /test.<get-test>|-6218625217141810690[0]
get
@@ -0,0 +1,24 @@
// CHECK:
// Mangled name: Test1
// Public signature: /Test1|null[0]
class Test1 : J {
// CHECK:
// Mangled name: Test1{}test
// Public signature: /Test1.test|-5712650070209114719[0]
val test: JInner
// CHECK JVM_IR:
// Mangled name: Test1#<get-test>(){}J.JInner
// Public signature: /Test1.test.<get-test>|3142095303045720451[0]
get
// CHECK:
// Mangled name: Test1#<init>(){}
// Public signature: /Test1.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Test1#bar(){}
// Public signature: /Test1.bar|496682602797471549[0]
/* fake */ override fun bar(): Unit
}
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #test(J){}
// Public signature: /test|-8477572416399964095[0]
fun test(j: J): Unit
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #test(J.JJ){}
// Public signature: /test|-1956916194268064921[0]
fun test(jj: JJ): Unit
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #test(){}
// Public signature: /test|6620506149988718649[0]
fun test(): Unit
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #test(){}
// Public signature: /test|6620506149988718649[0]
fun test(): Unit
@@ -0,0 +1,9 @@
// CHECK:
// Mangled name: {}test
// Public signature: /test|-5712650070209114719[0]
val test: String?
// CHECK JVM_IR:
// Mangled name: #<get-test>(){}kotlin.String?
// Public signature: /test.<get-test>|4001706854451181956[0]
get
@@ -0,0 +1,9 @@
// CHECK:
// Mangled name: @java.lang.Class<*>{}test
// Public signature: /test|-5107008281653532078[0]
val Class<*>.test: Array<out Field?>?
// CHECK JVM_IR:
// Mangled name: #<get-test>@java.lang.Class<*>(){}kotlin.Array<out|java.lang.reflect.Field?>?
// Public signature: /test.<get-test>|5143661076951635746[0]
get(): Array<out Field?>?
@@ -0,0 +1,5 @@
// CHECK:
// Mangled name: #test(Outer.Inner){}
// Public signature: /test|-7065473236966425170[0]
fun test(inner: Inner): Unit
+4
View File
@@ -1,3 +1,7 @@
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: NATIVE
// ^ KT-57818
val test = 2 + 2
+12
View File
@@ -0,0 +1,12 @@
// CHECK:
// Mangled name: {}test
// Public signature: /test|-5712650070209114719[0]
val test: Int
// CHECK JVM_IR:
// Mangled name: #<get-test>(){}kotlin.Int
// Public signature: /test.<get-test>|3701432460336260723[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test>(){}
// Public signature: /test.<get-test>|208282462577758837[0]
get