[K/JS] Calculate generated function names based on signatures of argument types (instead of fqNames) ^KT-49077 Fixed

This commit is contained in:
Artem Kobzar
2023-07-11 13:14:45 +00:00
committed by Space Team
parent e94a0b8483
commit fdda394a77
12 changed files with 192 additions and 26 deletions
@@ -1,7 +1,7 @@
// EXPECTED_REACHABLE_NODES: 1285
package foo
// CHECK_CONTAINS_NO_CALLS: myMultiply except=A;imul;new_foo_A_rthawl_k$
// CHECK_CONTAINS_NO_CALLS: myMultiply except=A;imul;new_foo_A_eb0rqk_k$
internal class A(val a: Int)
+8 -8
View File
@@ -104,8 +104,8 @@ private class A {
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p12_s8ev3n$ scope=box TARGET_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: set_p12_dqglrj$ TARGET_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p12_dqglrj$ scope=box TARGET_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p12_jvqn3p_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p12_na24b5_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p12_qp3nj6_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p12_5gautq_k$ scope=box IGNORED_BACKENDS=JS
inline var Int.p12: Int
get() = this * 100 + a + 120000
set(v) {
@@ -115,9 +115,9 @@ private class A {
// CHECK_FUNCTION_EXISTS: get_p13_s8ev3n$ TARGET_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p13_s8ev3n$ scope=box TARGET_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=set_p13_dqglrj$ scope=box TARGET_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: get_p13_v9rv0h_k$ IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p13_v9rv0h_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=set_p13_7j3jda_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: get_p13_58c7pb_k$ IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=get_p13_58c7pb_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=set_p13_daivm5_k$ scope=box IGNORED_BACKENDS=JS
var Int.p13: Int
inline get() = this * 100 + a + 130000
set(v) {
@@ -127,9 +127,9 @@ private class A {
// CHECK_CALLED_IN_SCOPE: function=get_p14_s8ev3n$ scope=box TARGET_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: set_p14_dqglrj$ TARGET_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p14_dqglrj$ scope=box TARGET_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=get_p14_7twbq6_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: set_p14_fdbk5p_k$ IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p14_fdbk5p_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=get_p14_xvbz1c_k$ scope=box IGNORED_BACKENDS=JS
// CHECK_FUNCTION_EXISTS: set_p14_l4qwek_k$ IGNORED_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=set_p14_l4qwek_k$ scope=box IGNORED_BACKENDS=JS
var Int.p14: Int
get() = this * 100 + a + 140000
inline set(v) {
@@ -0,0 +1,47 @@
// EXPECTED_REACHABLE_NODES: 1281
package foo
private class Foo{
data class Id(val uuid: Int)
}
private class Bar{
data class Id(val uuid: Int)
}
private class E1 {
enum class Id { A }
}
private class E2 {
enum class Id { A }
}
private class O1 {
object Id
}
private class O2 {
object Id
}
private class Service{
operator fun get(id: Foo.Id) = "Foo getter"
operator fun get(id: Bar.Id) = "Bar getter"
operator fun get(id: E1.Id) = "E1 getter"
operator fun get(id: E2.Id) = "E2 getter"
operator fun get(id: O1.Id) = "O1 getter"
operator fun get(id: O2.Id) = "O2 getter"
}
fun box(): String {
var service = Service()
if (service[Bar.Id(12)] != "Bar getter") return "Fail with Bar overload"
if (service[Foo.Id(6)] != "Foo getter") return "Fail with Foo overload"
if (service[E1.Id.A] != "E1 getter") return "Fail with E1 overload"
if (service[E2.Id.A] != "E2 getter") return "Fail with E2 overload"
if (service[O1.Id] != "O1 getter") return "Fail with O1 overload"
if (service[O2.Id] != "O2 getter") return "Fail with O2 overload"
return "OK"
}
@@ -0,0 +1,47 @@
// EXPECTED_REACHABLE_NODES: 1281
package foo
class Foo{
data class Id(val uuid: Int)
}
class Bar{
data class Id(val uuid: Int)
}
class E1 {
enum class Id { A }
}
class E2 {
enum class Id { A }
}
class O1 {
object Id
}
class O2 {
object Id
}
class Service{
operator fun get(id: Foo.Id) = "Foo getter"
operator fun get(id: Bar.Id) = "Bar getter"
operator fun get(id: E1.Id) = "E1 getter"
operator fun get(id: E2.Id) = "E2 getter"
operator fun get(id: O1.Id) = "O1 getter"
operator fun get(id: O2.Id) = "O2 getter"
}
fun box(): String {
var service = Service()
if (service[Bar.Id(12)] != "Bar getter") return "Fail with /**/Bar overload"
if (service[Foo.Id(6)] != "Foo getter") return "Fail with Foo overload"
if (service[E1.Id.A] != "E1 getter") return "Fail with E1 overload"
if (service[E2.Id.A] != "E2 getter") return "Fail with E2 overload"
if (service[O1.Id] != "O1 getter") return "Fail with O1 overload"
if (service[O2.Id] != "O2 getter") return "Fail with O2 overload"
return "OK"
}