Mangle function names with inline class parameters
Avoid name clashes in cases such as
inline class Login(val login: String)
inline class Password(val password: String)
fun validate(login: Login) { ... }
fun validate(password: Password) { ... }
This commit is contained in:
committed by
Ilya Gorbunov
parent
ff9ba97d66
commit
a56d1d3ce8
+1
-1
@@ -14,5 +14,5 @@ inline class Foo(val x: Int) {
|
||||
|
||||
// 1 INVOKESTATIC Foo\$Erased.empty \(I\)V
|
||||
// 1 INVOKESTATIC Foo\$Erased.withParam \(ILjava/lang/String;\)V
|
||||
// 1 INVOKESTATIC Foo\$Erased.withInlineClassParam \(II\)V
|
||||
// 1 INVOKESTATIC Foo\$Erased.withInlineClassParam\$1e4ch6lh \(II\)V
|
||||
// 5 INVOKEVIRTUAL
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class Str(val s: String)
|
||||
|
||||
class C1(val ss: Str)
|
||||
|
||||
class C2(val ss1: Str, val ss2: Str)
|
||||
|
||||
// 2 public \<init\>\(Ljava/lang/String;\)V
|
||||
// 1 public \<init\>\(Ljava/lang/String;Ljava/lang/String;\)V
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
inline class Id(val id: String)
|
||||
|
||||
inline class Name(val name: String)
|
||||
|
||||
inline class Password(val password: String)
|
||||
|
||||
fun test(id: Id) {
|
||||
if (id.id != "OK") throw AssertionError()
|
||||
}
|
||||
|
||||
fun test(id: Id?) {
|
||||
if (id != null) throw AssertionError()
|
||||
}
|
||||
|
||||
fun test(name: Name) {
|
||||
if (name.name != "OK") throw AssertionError()
|
||||
}
|
||||
|
||||
fun test(password: Password) {
|
||||
if (password.password != "OK") throw AssertionError()
|
||||
}
|
||||
|
||||
// 1 public final static test\$9zx0e0j9\(Ljava/lang/String;\)V
|
||||
// 1 public final static test\$79jv2l6i\(Ljava/lang/String;\)V
|
||||
// 1 public final static test\$d4pejdz3\(Ljava/lang/String;\)V
|
||||
// 1 public final static test\$c6sgoxk6\(Ljava/lang/String;\)V
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class Str(val string: String)
|
||||
|
||||
class C {
|
||||
var s = Str("")
|
||||
}
|
||||
|
||||
// 1 public final getS\(\)Ljava/lang/String;
|
||||
// 1 public final setS\$90215lrx\(Ljava/lang/String;\)V
|
||||
Reference in New Issue
Block a user