[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,46 @@
// CHECK:
// Mangled name: Test
// Public signature: /Test|null[0]
class Test<T0 : Any?> {
// CHECK:
// Mangled name: Test.TestInner
// Public signature: /Test.TestInner|null[0]
inner class TestInner<T2 : Any?> {
// CHECK:
// Mangled name: Test.TestInner#<init>(){}
// Public signature: /Test.TestInner.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: Test.TestNested
// Public signature: /Test.TestNested|null[0]
class TestNested<T1 : Any?> {
// CHECK:
// Mangled name: Test.TestNested#<init>(){}
// Public signature: /Test.TestNested.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: Test#<init>(){}
// Public signature: /Test.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: TestInterface
// Public signature: /TestInterface|null[0]
interface TestInterface<T : Any?> {
// CHECK:
// Mangled name: TestInterface.TestNestedInterface
// Public signature: /TestInterface.TestNestedInterface|null[0]
interface TestNestedInterface<TT : Any?> {
}
}
@@ -1,3 +1,6 @@
// MUTE_SIGNATURE_COMPARISON_K2: JVM_IR
// ^ KT-57429
class Test1<T1, T2>(val x: T1, val y: T2)
class Test2(x: Int, val y: String) {
@@ -10,4 +13,4 @@ class Test3(val x: Int, val y: String = "")
class Test4<T>(val x: Int) {
constructor(x: Int, y: Int = 42) : this(x + y)
}
}
@@ -0,0 +1,147 @@
// CHECK:
// Mangled name: Test1
// Public signature: /Test1|null[0]
class Test1<T1 : Any?, T2 : Any?> {
// CHECK:
// Mangled name: Test1{}x
// Public signature: /Test1.x|-8060530855978347579[0]
val x: T1
// CHECK JVM_IR:
// Mangled name: Test1#<get-x>(){}1:0
// Public signature: /Test1.x.<get-x>|-8893883356128097563[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test1#<get-x>(){}
// Public signature: /Test1.x.<get-x>|1482705010654679335[0]
get
// CHECK:
// Mangled name: Test1{}y
// Public signature: /Test1.y|3625903257357557171[0]
val y: T2
// CHECK JVM_IR:
// Mangled name: Test1#<get-y>(){}1:1
// Public signature: /Test1.y.<get-y>|6657541212363005233[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test1#<get-y>(){}
// Public signature: /Test1.y.<get-y>|-7902422373892128922[0]
get
// CHECK:
// Mangled name: Test1#<init>(1:0;1:1){}
// Public signature: /Test1.<init>|3086114026882374588[0]
constructor(x: T1, y: T2) /* primary */
}
// CHECK:
// Mangled name: Test2
// Public signature: /Test2|null[0]
class Test2 {
// CHECK:
// Mangled name: Test2{}y
// Public signature: /Test2.y|3625903257357557171[0]
val y: String
// CHECK JVM_IR:
// Mangled name: Test2#<get-y>(){}kotlin.String
// Public signature: /Test2.y.<get-y>|1760775372995524147[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test2#<get-y>(){}
// Public signature: /Test2.y.<get-y>|-7902422373892128922[0]
get
// CHECK:
// Mangled name: Test2.TestInner
// Public signature: /Test2.TestInner|null[0]
inner class TestInner<Z : Any?> {
// CHECK:
// Mangled name: Test2.TestInner{}z
// Public signature: /Test2.TestInner.z|7549650372729116193[0]
val z: Z
// CHECK JVM_IR:
// Mangled name: Test2.TestInner#<get-z>(){}1:0
// Public signature: /Test2.TestInner.z.<get-z>|6635558627205321915[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test2.TestInner#<get-z>(){}
// Public signature: /Test2.TestInner.z.<get-z>|4925813204745917177[0]
get
// CHECK:
// Mangled name: Test2.TestInner#<init>(1:0){}
// Public signature: /Test2.TestInner.<init>|-8731461708390519279[0]
constructor(z: Z) /* primary */
// CHECK:
// Mangled name: Test2.TestInner#<init>(1:0;kotlin.Int){}
// Public signature: /Test2.TestInner.<init>|7281397193015694517[0]
constructor(z: Z, i: Int)
}
// CHECK:
// Mangled name: Test2#<init>(kotlin.Int;kotlin.String){}
// Public signature: /Test2.<init>|-6994814679185246063[0]
constructor(x: Int, y: String) /* primary */
}
// CHECK:
// Mangled name: Test3
// Public signature: /Test3|null[0]
class Test3 {
// CHECK:
// Mangled name: Test3{}x
// Public signature: /Test3.x|-8060530855978347579[0]
val x: Int
// CHECK JVM_IR:
// Mangled name: Test3#<get-x>(){}kotlin.Int
// Public signature: /Test3.x.<get-x>|4966956098150895696[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test3#<get-x>(){}
// Public signature: /Test3.x.<get-x>|1482705010654679335[0]
get
// CHECK:
// Mangled name: Test3{}y
// Public signature: /Test3.y|3625903257357557171[0]
val y: String
// CHECK JVM_IR:
// Mangled name: Test3#<get-y>(){}kotlin.String
// Public signature: /Test3.y.<get-y>|1760775372995524147[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test3#<get-y>(){}
// Public signature: /Test3.y.<get-y>|-7902422373892128922[0]
get
// CHECK:
// Mangled name: Test3#<init>(kotlin.Int;kotlin.String){}
// Public signature: /Test3.<init>|-6994814679185246063[0]
constructor(x: Int, y: String) /* primary */
}
// CHECK:
// Mangled name: Test4
// Public signature: /Test4|null[0]
class Test4<T : Any?> {
// CHECK:
// Mangled name: Test4{}x
// Public signature: /Test4.x|-8060530855978347579[0]
val x: Int
// CHECK JVM_IR:
// Mangled name: Test4#<get-x>(){}kotlin.Int
// Public signature: /Test4.x.<get-x>|4966956098150895696[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test4#<get-x>(){}
// Public signature: /Test4.x.<get-x>|1482705010654679335[0]
get
// CHECK:
// Mangled name: Test4#<init>(kotlin.Int){}
// Public signature: /Test4.<init>|-5182794243525578284[0]
constructor(x: Int) /* primary */
// CHECK:
// Mangled name: Test4#<init>(kotlin.Int;kotlin.Int){}
// Public signature: /Test4.<init>|-7691762014320324121[0]
constructor(x: Int, y: Int)
}
@@ -1,4 +1,7 @@
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57429
data class Test<T>(val x: T, val y: String = "")
@@ -0,0 +1,82 @@
// CHECK:
// Mangled name: Test
// Public signature: /Test|null[0]
data class Test<T : Any?> {
// CHECK:
// Mangled name: Test{}x
// Public signature: /Test.x|-8060530855978347579[0]
val x: T
// CHECK JVM_IR:
// Mangled name: Test#<get-x>(){}1:0
// Public signature: /Test.x.<get-x>|-8893883356128097563[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#<get-x>(){}
// Public signature: /Test.x.<get-x>|1482705010654679335[0]
get
// CHECK:
// Mangled name: Test{}y
// Public signature: /Test.y|3625903257357557171[0]
val y: String
// CHECK JVM_IR:
// Mangled name: Test#<get-y>(){}kotlin.String
// Public signature: /Test.y.<get-y>|1760775372995524147[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#<get-y>(){}
// Public signature: /Test.y.<get-y>|-7902422373892128922[0]
get
// CHECK:
// Mangled name: Test#<init>(1:0;kotlin.String){}
// Public signature: /Test.<init>|-7411275398527089511[0]
constructor(x: T, y: String) /* primary */
// CHECK JVM_IR:
// Mangled name: Test#component1(){}1:0
// Public signature: /Test.component1|2393470133763651536[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#component1(){}
// Public signature: /Test.component1|162597135895221648[0]
operator fun component1(): T
// CHECK JVM_IR:
// Mangled name: Test#component2(){}kotlin.String
// Public signature: /Test.component2|1228864375093914597[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#component2(){}
// Public signature: /Test.component2|3796717572321500973[0]
operator fun component2(): String
// CHECK JVM_IR:
// Mangled name: Test#copy(1:0;kotlin.String){}Test<1:0>
// Public signature: /Test.copy|8763634592557776800[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#copy(1:0;kotlin.String){}
// Public signature: /Test.copy|-4651516421033771294[0]
fun copy(x: T, y: String): Test<T>
// CHECK JVM_IR:
// Mangled name: Test#equals(kotlin.Any?){}kotlin.Boolean
// Public signature: /Test.equals|722809408929142791[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#equals(kotlin.Any?){}
// Public signature: /Test.equals|4638265728071529943[0]
override operator fun equals(other: Any?): Boolean
// CHECK JVM_IR:
// Mangled name: Test#hashCode(){}kotlin.Int
// Public signature: /Test.hashCode|-8048879360829830756[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#hashCode(){}
// Public signature: /Test.hashCode|3409210261493131192[0]
override fun hashCode(): Int
// CHECK JVM_IR:
// Mangled name: Test#toString(){}kotlin.String
// Public signature: /Test.toString|6958853723545266802[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#toString(){}
// Public signature: /Test.toString|-1522858123163872138[0]
override fun toString(): String
}
@@ -1,4 +1,8 @@
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57429
val test1 = 42
var test2 = 42
@@ -12,4 +16,4 @@ class Host {
class InPrimaryCtor<T>(
val testInPrimaryCtor1: T,
var testInPrimaryCtor2: Int = 42
)
)
@@ -0,0 +1,106 @@
// CHECK:
// Mangled name: {}test1
// Public signature: /test1|6005685442305498193[0]
val test1: Int
// CHECK JVM_IR:
// Mangled name: #<get-test1>(){}kotlin.Int
// Public signature: /test1.<get-test1>|3978508226793108919[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test1>(){}
// Public signature: /test1.<get-test1>|-5735092642142423279[0]
get
// CHECK:
// Mangled name: {}test2
// Public signature: /test2|2517758057000911509[0]
var test2: Int
// CHECK JVM_IR:
// Mangled name: #<get-test2>(){}kotlin.Int
// Public signature: /test2.<get-test2>|-8779933517717592707[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test2>(){}
// Public signature: /test2.<get-test2>|-5218942532816206869[0]
get
// CHECK:
// Mangled name: #<set-test2>(kotlin.Int){}
// Public signature: /test2.<set-test2>|1925150309265265312[0]
set
// CHECK:
// Mangled name: Host
// Public signature: /Host|null[0]
class Host {
// CHECK:
// Mangled name: Host{}testMember1
// Public signature: /Host.testMember1|-6927948367741148766[0]
val testMember1: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMember1>(){}kotlin.Int
// Public signature: /Host.testMember1.<get-testMember1>|-5459388376303709502[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMember1>(){}
// Public signature: /Host.testMember1.<get-testMember1>|-4927757728199550360[0]
get
// CHECK:
// Mangled name: Host{}testMember2
// Public signature: /Host.testMember2|-8955784718453180422[0]
var testMember2: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMember2>(){}kotlin.Int
// Public signature: /Host.testMember2.<get-testMember2>|6996843230957051336[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMember2>(){}
// Public signature: /Host.testMember2.<get-testMember2>|7875832727540192624[0]
get
// CHECK:
// Mangled name: Host#<set-testMember2>(kotlin.Int){}
// Public signature: /Host.testMember2.<set-testMember2>|5166755654765741256[0]
set
// CHECK:
// Mangled name: Host#<init>(){}
// Public signature: /Host.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: InPrimaryCtor
// Public signature: /InPrimaryCtor|null[0]
class InPrimaryCtor<T : Any?> {
// CHECK:
// Mangled name: InPrimaryCtor{}testInPrimaryCtor1
// Public signature: /InPrimaryCtor.testInPrimaryCtor1|8162816596808715257[0]
val testInPrimaryCtor1: T
// CHECK JVM_IR:
// Mangled name: InPrimaryCtor#<get-testInPrimaryCtor1>(){}1:0
// Public signature: /InPrimaryCtor.testInPrimaryCtor1.<get-testInPrimaryCtor1>|-3259454449312875389[0]
// CHECK JS_IR NATIVE:
// Mangled name: InPrimaryCtor#<get-testInPrimaryCtor1>(){}
// Public signature: /InPrimaryCtor.testInPrimaryCtor1.<get-testInPrimaryCtor1>|4519403801874358446[0]
get
// CHECK:
// Mangled name: InPrimaryCtor{}testInPrimaryCtor2
// Public signature: /InPrimaryCtor.testInPrimaryCtor2|6743375261432235408[0]
var testInPrimaryCtor2: Int
// CHECK JVM_IR:
// Mangled name: InPrimaryCtor#<get-testInPrimaryCtor2>(){}kotlin.Int
// Public signature: /InPrimaryCtor.testInPrimaryCtor2.<get-testInPrimaryCtor2>|-455870240469973752[0]
// CHECK JS_IR NATIVE:
// Mangled name: InPrimaryCtor#<get-testInPrimaryCtor2>(){}
// Public signature: /InPrimaryCtor.testInPrimaryCtor2.<get-testInPrimaryCtor2>|6677557829332876002[0]
get
// CHECK:
// Mangled name: InPrimaryCtor#<set-testInPrimaryCtor2>(kotlin.Int){}
// Public signature: /InPrimaryCtor.testInPrimaryCtor2.<set-testInPrimaryCtor2>|-2246089499454556022[0]
set
// CHECK:
// Mangled name: InPrimaryCtor#<init>(1:0;kotlin.Int){}
// Public signature: /InPrimaryCtor.<init>|7281397193015694517[0]
constructor(testInPrimaryCtor1: T, testInPrimaryCtor2: Int) /* primary */
}
@@ -1,7 +1,10 @@
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57754, KT-57429
interface IBase<T> {
fun foo(x: Int)
val bar: Int
fun <X> qux(t: T, x: X)
}
class Test<TT>(impl: IBase<TT>) : IBase<TT> by impl
class Test<TT>(impl: IBase<TT>) : IBase<TT> by impl
@@ -0,0 +1,65 @@
// CHECK:
// Mangled name: Test
// Public signature: /Test|null[0]
class Test<TT : Any?> : IBase<TT> {
// CHECK:
// Mangled name: Test#<init>(IBase<1:0>){}
// Public signature: /Test.<init>|-3017997426280513504[0]
constructor(impl: IBase<TT>) /* primary */
// CHECK:
// Mangled name: Test.$$delegate_0
// Public signature: /Test.$$delegate_0|-7286425919675154353[0]
private /* final field */ val $$delegate_0: IBase<TT>
// CHECK:
// Mangled name: Test#foo(kotlin.Int){}
// Public signature: /Test.foo|-104159190164110731[0]
override fun foo(x: Int): Unit
// CHECK:
// Mangled name: Test#qux(1:0;0:0){0§<kotlin.Any?>}
// Public signature: /Test.qux|2089843959414439633[0]
override fun <X : Any?> qux(t: TT, x: X): Unit
// CHECK:
// Mangled name: Test{}bar
// Public signature: /Test.bar|-7864284097863469857[0]
override val bar: Int
// CHECK JVM_IR:
// Mangled name: Test#<get-bar>(){}kotlin.Int
// Public signature: /Test.bar.<get-bar>|-7403724005139201014[0]
// CHECK JS_IR NATIVE:
// Mangled name: Test#<get-bar>(){}
// Public signature: /Test.bar.<get-bar>|6880642144337645699[0]
override get(): Int
}
// CHECK:
// Mangled name: IBase
// Public signature: /IBase|null[0]
interface IBase<T : Any?> {
// CHECK:
// Mangled name: IBase#foo(kotlin.Int){}
// Public signature: /IBase.foo|-104159190164110731[0]
abstract fun foo(x: Int): Unit
// CHECK:
// Mangled name: IBase#qux(1:0;0:0){0§<kotlin.Any?>}
// Public signature: /IBase.qux|2089843959414439633[0]
abstract fun <X : Any?> qux(t: T, x: X): Unit
// CHECK:
// Mangled name: IBase{}bar
// Public signature: /IBase.bar|-7864284097863469857[0]
abstract val bar: Int
// CHECK JVM_IR:
// Mangled name: IBase#<get-bar>(){}kotlin.Int
// Public signature: /IBase.bar.<get-bar>|-7403724005139201014[0]
// CHECK JS_IR NATIVE:
// Mangled name: IBase#<get-bar>(){}
// Public signature: /IBase.bar.<get-bar>|6880642144337645699[0]
abstract get
}
@@ -0,0 +1,41 @@
// CHECK:
// Mangled name: Host
// Public signature: /Host|null[0]
class Host {
// CHECK:
// Mangled name: Host#<init>(){}
// Public signature: /Host.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Host#testMembetExt1@kotlin.String(kotlin.Int;kotlin.String){}
// Public signature: /Host.testMembetExt1|8870420018904797729[0]
fun String.testMembetExt1(i: Int, j: String): Unit
// CHECK:
// Mangled name: Host#testMembetExt2@kotlin.String(kotlin.Int;0:0){0§<kotlin.Any?>}
// Public signature: /Host.testMembetExt2|7335072512555735434[0]
fun <T : Any?> String.testMembetExt2(i: Int, j: T): Unit
}
// CHECK:
// Mangled name: #test1(kotlin.Int;0:0){0§<kotlin.Any?>}
// Public signature: /test1|3909853005204725277[0]
fun <T : Any?> test1(i: Int, j: T): Unit
// CHECK:
// Mangled name: #test2(kotlin.Int;kotlin.String){}
// Public signature: /test2|7169768065709748599[0]
fun test2(i: Int, j: String): Unit
// CHECK:
// Mangled name: #test3(kotlin.Array<out|kotlin.String>...){}
// Public signature: /test3|-5387729831293380819[0]
fun test3(vararg args: String): Unit
// CHECK:
// Mangled name: #textExt1@kotlin.String(kotlin.Int;kotlin.String){}
// Public signature: /textExt1|-1442095296360892469[0]
fun String.textExt1(i: Int, j: String): Unit
@@ -1,6 +1,10 @@
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: JVM_IR
// ^ KT-57429
class Outer<T1> {
inner class Inner<T2> {
fun foo(x1: T1, x2: T2) {}
}
}
}
@@ -0,0 +1,27 @@
// CHECK:
// Mangled name: Outer
// Public signature: /Outer|null[0]
class Outer<T1 : Any?> {
// CHECK:
// Mangled name: Outer.Inner
// Public signature: /Outer.Inner|null[0]
inner class Inner<T2 : Any?> {
// CHECK:
// Mangled name: Outer.Inner#<init>(){}
// Public signature: /Outer.Inner.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Outer.Inner#foo(2:0;1:0){}
// Public signature: /Outer.Inner.foo|615406329799946108[0]
fun foo(x1: T1, x2: T2): Unit
}
// CHECK:
// Mangled name: Outer#<init>(){}
// Public signature: /Outer.<init>|-5645683436151566731[0]
constructor() /* primary */
}
@@ -1,4 +1,8 @@
// MUTE_SIGNATURE_COMPARISON_K2: JS_IR
// MUTE_SIGNATURE_COMPARISON_K2: NATIVE
// ^ KT-57818
val test1 : (String) -> String = { it }
val test2 : Any.(Any) -> Any = { it.hashCode() }
val test3 = { i: Int, j: Int -> }
val test4 = fun (i: Int, j: Int) {}
val test4 = fun (i: Int, j: Int) {}
@@ -0,0 +1,48 @@
// CHECK:
// Mangled name: {}test1
// Public signature: /test1|6005685442305498193[0]
val test1: Function1<String, String>
// CHECK JVM_IR:
// Mangled name: #<get-test1>(){}kotlin.Function1<kotlin.String,kotlin.String>
// Public signature: /test1.<get-test1>|2788097897117242625[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test1>(){}
// Public signature: /test1.<get-test1>|-5735092642142423279[0]
get
// CHECK:
// Mangled name: {}test2
// Public signature: /test2|2517758057000911509[0]
val test2: @ExtensionFunctionType Function2<Any, Any, Any>
// CHECK JVM_IR:
// Mangled name: #<get-test2>(){}kotlin.Function2<kotlin.Any,kotlin.Any,kotlin.Any>
// Public signature: /test2.<get-test2>|-8953585576935292690[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test2>(){}
// Public signature: /test2.<get-test2>|-5218942532816206869[0]
get
// CHECK:
// Mangled name: {}test3
// Public signature: /test3|7677556066983021166[0]
val test3: Function2<Int, Int, Unit>
// CHECK JVM_IR:
// Mangled name: #<get-test3>(){}kotlin.Function2<kotlin.Int,kotlin.Int,kotlin.Unit>
// Public signature: /test3.<get-test3>|7794341945053892780[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test3>(){}
// Public signature: /test3.<get-test3>|-7333791615083236686[0]
get
// CHECK:
// Mangled name: {}test4
// Public signature: /test4|-9115637610245762085[0]
val test4: Function2<Int, Int, Unit>
// CHECK JVM_IR:
// Mangled name: #<get-test4>(){}kotlin.Function2<kotlin.Int,kotlin.Int,kotlin.Unit>
// Public signature: /test4.<get-test4>|6534158501518091161[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test4>(){}
// Public signature: /test4.<get-test4>|4166854324968284003[0]
get
@@ -1,4 +1,9 @@
// FIR_IDENTICAL
// DUMP_LOCAL_DECLARATION_SIGNATURES
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57434
fun <TT> outer() {
fun <T> test1(i: Int, j: T) {}
@@ -7,4 +12,4 @@ fun <TT> outer() {
fun test3(vararg args: String) {}
fun String.textExt1(i: Int, j: TT) {}
}
}
@@ -0,0 +1,20 @@
// CHECK:
// Mangled name: #outer(){0§<kotlin.Any?>}
// Public signature: /outer|-6093606212547620330[0]
fun <TT : Any?> outer(): Unit
// CHECK:
// Mangled name: #outer(){0§<kotlin.Any?>}#test1#static(kotlin.Int;0:0){0§<kotlin.Any?>}
local fun <T : Any?> test1(i: Int, j: T): Unit
// CHECK:
// Mangled name: #outer(){0§<kotlin.Any?>}#test2#static(kotlin.Int;kotlin.String){}
local fun test2(i: Int, j: String): Unit
// CHECK:
// Mangled name: #outer(){0§<kotlin.Any?>}#test3#static(kotlin.Array<out|kotlin.String>...){}
local fun test3(vararg args: String): Unit
// CHECK:
// Mangled name: #outer(){0§<kotlin.Any?>}#textExt1#static@kotlin.String(kotlin.Int;1:0){}
local fun String.textExt1(i: Int, j: TT): Unit
@@ -1,5 +1,8 @@
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57436
val test1 get() = 42
var test2 get() = 42; set(value) {}
@@ -24,4 +27,4 @@ class Host<T> {
val <TT> TT.testMemExt3 get() = 42
var <TT> TT.testMemExt4 get() = 42; set(value) {}
}
}
@@ -0,0 +1,179 @@
// CHECK:
// Mangled name: Host
// Public signature: /Host|null[0]
class Host<T : Any?> {
// CHECK:
// Mangled name: Host#<init>(){}
// Public signature: /Host.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Host{}testMem1
// Public signature: /Host.testMem1|-1447520735631866772[0]
val testMem1: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMem1>(){}kotlin.Int
// Public signature: /Host.testMem1.<get-testMem1>|-1232121520056352012[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMem1>(){}
// Public signature: /Host.testMem1.<get-testMem1>|169643884510328829[0]
get(): Int
// CHECK:
// Mangled name: Host{}testMem2
// Public signature: /Host.testMem2|-4498711282114194633[0]
var testMem2: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMem2>(){}kotlin.Int
// Public signature: /Host.testMem2.<get-testMem2>|5656363606698284790[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMem2>(){}
// Public signature: /Host.testMem2.<get-testMem2>|15588222057838178[0]
get(): Int
// CHECK:
// Mangled name: Host#<set-testMem2>(kotlin.Int){}
// Public signature: /Host.testMem2.<set-testMem2>|7294485341588264545[0]
set(value: Int): Unit
// CHECK:
// Mangled name: Host@kotlin.String{}testMemExt1
// Public signature: /Host.testMemExt1|-6449535615988838712[0]
val String.testMemExt1: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMemExt1>@kotlin.String(){}kotlin.Int
// Public signature: /Host.testMemExt1.<get-testMemExt1>|970738054146358000[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMemExt1>@kotlin.String(){}
// Public signature: /Host.testMemExt1.<get-testMemExt1>|2784647792030620613[0]
get(): Int
// CHECK:
// Mangled name: Host@kotlin.String{}testMemExt2
// Public signature: /Host.testMemExt2|-5449149765380806845[0]
var String.testMemExt2: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMemExt2>@kotlin.String(){}kotlin.Int
// Public signature: /Host.testMemExt2.<get-testMemExt2>|-6652427309470654819[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMemExt2>@kotlin.String(){}
// Public signature: /Host.testMemExt2.<get-testMemExt2>|999321716720031878[0]
get(): Int
// CHECK:
// Mangled name: Host#<set-testMemExt2>@kotlin.String(kotlin.Int){}
// Public signature: /Host.testMemExt2.<set-testMemExt2>|-405928299943839949[0]
set(value: Int): Unit
// CHECK:
// Mangled name: Host@0:0{0§<kotlin.Any?>}testMemExt3
// Public signature: /Host.testMemExt3|-7874830272187415472[0]
val <TT : Any?> TT.testMemExt3: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMemExt3>@0:0(){0§<kotlin.Any?>}kotlin.Int
// Public signature: /Host.testMemExt3.<get-testMemExt3>|-2586208141743908696[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMemExt3>@0:0(){0§<kotlin.Any?>}
// Public signature: /Host.testMemExt3.<get-testMemExt3>|-5692748676763918765[0]
get(): Int
// CHECK:
// Mangled name: Host@0:0{0§<kotlin.Any?>}testMemExt4
// Public signature: /Host.testMemExt4|-3437206671582974302[0]
var <TT : Any?> TT.testMemExt4: Int
// CHECK JVM_IR:
// Mangled name: Host#<get-testMemExt4>@0:0(){0§<kotlin.Any?>}kotlin.Int
// Public signature: /Host.testMemExt4.<get-testMemExt4>|5925612720392200708[0]
// CHECK JS_IR NATIVE:
// Mangled name: Host#<get-testMemExt4>@0:0(){0§<kotlin.Any?>}
// Public signature: /Host.testMemExt4.<get-testMemExt4>|6623275535091051762[0]
get(): Int
// CHECK:
// Mangled name: Host#<set-testMemExt4>@0:0(kotlin.Int){0§<kotlin.Any?>}
// Public signature: /Host.testMemExt4.<set-testMemExt4>|-4031268341673357490[0]
set(value: Int): Unit
}
// CHECK:
// Mangled name: {}test1
// Public signature: /test1|6005685442305498193[0]
val test1: Int
// CHECK JVM_IR:
// Mangled name: #<get-test1>(){}kotlin.Int
// Public signature: /test1.<get-test1>|3978508226793108919[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test1>(){}
// Public signature: /test1.<get-test1>|-5735092642142423279[0]
get(): Int
// CHECK:
// Mangled name: {}test2
// Public signature: /test2|2517758057000911509[0]
var test2: Int
// CHECK JVM_IR:
// Mangled name: #<get-test2>(){}kotlin.Int
// Public signature: /test2.<get-test2>|-8779933517717592707[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-test2>(){}
// Public signature: /test2.<get-test2>|-5218942532816206869[0]
get(): Int
// CHECK:
// Mangled name: #<set-test2>(kotlin.Int){}
// Public signature: /test2.<set-test2>|1925150309265265312[0]
set(value: Int): Unit
// CHECK:
// Mangled name: @kotlin.String{}testExt1
// Public signature: /testExt1|-249395506920620125[0]
val String.testExt1: Int
// CHECK JVM_IR:
// Mangled name: #<get-testExt1>@kotlin.String(){}kotlin.Int
// Public signature: /testExt1.<get-testExt1>|-5970184508643235487[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-testExt1>@kotlin.String(){}
// Public signature: /testExt1.<get-testExt1>|-5888715629225928441[0]
get(): Int
// CHECK:
// Mangled name: @kotlin.String{}testExt2
// Public signature: /testExt2|3677730422947849397[0]
var String.testExt2: Int
// CHECK JVM_IR:
// Mangled name: #<get-testExt2>@kotlin.String(){}kotlin.Int
// Public signature: /testExt2.<get-testExt2>|3144752879326245332[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-testExt2>@kotlin.String(){}
// Public signature: /testExt2.<get-testExt2>|1324590894596109610[0]
get(): Int
// CHECK:
// Mangled name: #<set-testExt2>@kotlin.String(kotlin.Int){}
// Public signature: /testExt2.<set-testExt2>|-130364836495443009[0]
set(value: Int): Unit
// CHECK:
// Mangled name: @0:0{0§<kotlin.Any?>}testExt3
// Public signature: /testExt3|5707451855742850505[0]
val <T : Any?> T.testExt3: Int
// CHECK JVM_IR:
// Mangled name: #<get-testExt3>@0:0(){0§<kotlin.Any?>}kotlin.Int
// Public signature: /testExt3.<get-testExt3>|-5691037839389315263[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-testExt3>@0:0(){0§<kotlin.Any?>}
// Public signature: /testExt3.<get-testExt3>|119269900146022469[0]
get(): Int
// CHECK:
// Mangled name: @0:0{0§<kotlin.Any?>}testExt4
// Public signature: /testExt4|-8511308814916191109[0]
var <T : Any?> T.testExt4: Int
// CHECK JVM_IR:
// Mangled name: #<get-testExt4>@0:0(){0§<kotlin.Any?>}kotlin.Int
// Public signature: /testExt4.<get-testExt4>|8608740534387272957[0]
// CHECK JS_IR NATIVE:
// Mangled name: #<get-testExt4>@0:0(){0§<kotlin.Any?>}
// Public signature: /testExt4.<get-testExt4>|70932167769866835[0]
get(): Int
// CHECK:
// Mangled name: #<set-testExt4>@0:0(kotlin.Int){0§<kotlin.Any?>}
// Public signature: /testExt4.<set-testExt4>|-1753210956385230599[0]
set(value: Int): Unit
@@ -1,4 +1,8 @@
// FIR_IDENTICAL
// MUTE_SIGNATURE_COMPARISON_K2: ANY
// ^ KT-57436
class Test1<T : U, U>
fun <T : U, U> test2() {}
@@ -0,0 +1,29 @@
// CHECK:
// Mangled name: Test1
// Public signature: /Test1|null[0]
class Test1<T : U, U : Any?> {
// CHECK:
// Mangled name: Test1#<init>(){}
// Public signature: /Test1.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: #test2(){0§<0:1>;1§<kotlin.Any?>}
// Public signature: /test2|399191830655193395[0]
fun <T : U, U : Any?> test2(): Unit
// CHECK:
// Mangled name: @Test1<0:0,0:1>{0§<0:1>;1§<kotlin.Any?>}test3
// Public signature: /test3|3727797672191258754[0]
var <T : U, U : Any?> Test1<T, U>.test3: Unit
// CHECK:
// Mangled name: #<get-test3>@Test1<0:0,0:1>(){0§<0:1>;1§<kotlin.Any?>}
// Public signature: /test3.<get-test3>|-1147160124830350693[0]
get(): Unit
// CHECK:
// Mangled name: #<set-test3>@Test1<0:0,0:1>(kotlin.Unit){0§<0:1>;1§<kotlin.Any?>}
// Public signature: /test3.<set-test3>|-2752932164829394869[0]
set(value: Unit): Unit
@@ -0,0 +1,54 @@
// CHECK:
// Mangled name: Base1
// Public signature: /Base1|null[0]
abstract class Base1<T : Derived1> {
// CHECK:
// Mangled name: Base1#<init>(){}
// Public signature: /Base1.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: Base2
// Public signature: /Base2|null[0]
abstract class Base2 {
// CHECK:
// Mangled name: Base2#<init>(){}
// Public signature: /Base2.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Base2#foo(0:0){0§<Derived2>}
// Public signature: /Base2.foo|-3916608809820920154[0]
fun <T : Derived2> foo(x: T): Unit
}
// CHECK:
// Mangled name: Derived1
// Public signature: /Derived1|null[0]
class Derived1 : Base1<Derived1> {
// CHECK:
// Mangled name: Derived1#<init>(){}
// Public signature: /Derived1.<init>|-5645683436151566731[0]
constructor() /* primary */
}
// CHECK:
// Mangled name: Derived2
// Public signature: /Derived2|null[0]
class Derived2 : Base2 {
// CHECK:
// Mangled name: Derived2#<init>(){}
// Public signature: /Derived2.<init>|-5645683436151566731[0]
constructor() /* primary */
// CHECK:
// Mangled name: Derived2#foo(0:0){0§<Derived2>}
// Public signature: /Derived2.foo|-3916608809820920154[0]
/* fake */ override fun <T : Derived2> foo(x: T): Unit
}
@@ -0,0 +1,16 @@
// CHECK JVM_IR:
// Mangled name: #box(){}kotlin.String
// Public signature: /box|-9347091776561469[0]
// CHECK JS_IR NATIVE:
// Mangled name: #box(){}
// Public signature: /box|2173511048851971368[0]
fun box(): String
// CHECK JVM_IR:
// Mangled name: #f(kotlin.Function0<kotlin.String>;kotlin.Function0<kotlin.String>){}kotlin.String
// Public signature: /f|3250103379442841891[0]
// CHECK JS_IR NATIVE:
// Mangled name: #f(kotlin.Function0<kotlin.String>;kotlin.Function0<kotlin.String>){}
// Public signature: /f|1185070276750380808[0]
fun f(f1: Function0<String>, f2: Function0<String>): String