Change illegal local variable mangling rules
This commit is contained in:
committed by
Yan Zhulanow
parent
47f0b68a8c
commit
aca3be12e9
@@ -25,7 +25,6 @@ fun getNameForDestructuredParameterOrNull(valueParameterDescriptor: ValueParamet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun mangleNameIfNeeded(name: String): String {
|
fun mangleNameIfNeeded(name: String): String {
|
||||||
if (name.all { it.isValidCharacter() }) {
|
if (name.all { it.isValidCharacter() }) {
|
||||||
return name
|
return name
|
||||||
@@ -35,14 +34,23 @@ fun mangleNameIfNeeded(name: String): String {
|
|||||||
for (c in name) {
|
for (c in name) {
|
||||||
if (c.isValidCharacter()) {
|
if (c.isValidCharacter()) {
|
||||||
append(c)
|
append(c)
|
||||||
continue
|
} else {
|
||||||
|
append('-').append(c.toHex())
|
||||||
}
|
}
|
||||||
|
|
||||||
append("_u").append(Integer.toHexString(c.toInt()))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Char.toHex(): String {
|
||||||
|
val hexString = Integer.toHexString(this.toInt())
|
||||||
|
assert(hexString.length <= 4)
|
||||||
|
return if (hexString.length == 4) {
|
||||||
|
hexString
|
||||||
|
} else {
|
||||||
|
"0".repeat(4 - hexString.length) + hexString
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun Char.isValidCharacter(): Boolean {
|
private fun Char.isValidCharacter(): Boolean {
|
||||||
return this != '$' && this != '-' && isValidDalvikCharacter(this)
|
return this != '$' && this != '-' && isValidDalvikCharacter(this)
|
||||||
}
|
}
|
||||||
@@ -101,10 +101,10 @@ final class MangledNamesKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functi
|
|||||||
|
|
||||||
public java.lang.Object invoke(java.lang.Object p0)
|
public java.lang.Object invoke(java.lang.Object p0)
|
||||||
|
|
||||||
public final void invoke(Arr $dstr$a_u20b$b_u24c$c_u2dd$b_u24_u24c_u2d_u2dd$a_u28_u29§_u26_u2a_u26_u5e_u40あ化) {
|
public final void invoke(Arr $dstr$a-0020b$b-0024c$c-002dd$b-0024-0024c-002d-002dd$a-0028-0029§-0026-002a-0026-005e-0040あ化) {
|
||||||
Local variables:
|
Local variables:
|
||||||
0 this: LMangledNamesKt$foo$1;
|
0 this: LMangledNamesKt$foo$1;
|
||||||
1 $dstr$a_u20b$b_u24c$c_u2dd$b_u24_u24c_u2d_u2dd$a_u28_u29§_u26_u2a_u26_u5e_u40あ化: LArr;
|
1 $dstr$a-0020b$b-0024c$c-002dd$b-0024-0024c-002d-002dd$a-0028-0029§-0026-002a-0026-005e-0040あ化: LArr;
|
||||||
2 a b: I
|
2 a b: I
|
||||||
3 b$c: I
|
3 b$c: I
|
||||||
4 c-d: I
|
4 c-d: I
|
||||||
|
|||||||
Reference in New Issue
Block a user