Create internalName extension method that returns fqName as jvm internal
This commit is contained in:
@@ -216,4 +216,17 @@ internal fun IrType.isTypeParameter() = classifierOrNull is IrTypeParameterSymbo
|
||||
|
||||
internal fun IrType.isInterface() = classOrNull?.owner?.kind == ClassKind.INTERFACE
|
||||
|
||||
internal fun IrType.isThrowable() = this.getClass()?.fqNameWhenAvailable?.asString() == "kotlin.Throwable"
|
||||
internal fun IrType.isThrowable() = this.getClass()?.fqNameWhenAvailable?.asString() == "kotlin.Throwable"
|
||||
|
||||
fun IrClass.internalName(): String {
|
||||
val internalName = StringBuilder(this.name.asString())
|
||||
generateSequence(this as? IrDeclarationParent) { (it as? IrDeclaration)?.parent }
|
||||
.drop(1)
|
||||
.forEach {
|
||||
when (it) {
|
||||
is IrClass -> internalName.insert(0, it.name.asString() + "$")
|
||||
is IrPackageFragment -> it.fqName.asString().takeIf { it.isNotEmpty() }?.let { internalName.insert(0, "$it.") }
|
||||
}
|
||||
}
|
||||
return internalName.toString()
|
||||
}
|
||||
+2
-1
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.interpreter.builtins
|
||||
|
||||
import org.jetbrains.kotlin.ir.interpreter.internalName
|
||||
import org.jetbrains.kotlin.ir.interpreter.state.*
|
||||
|
||||
/** This file is generated by org.jetbrains.kotlin.backend.common.interpreter.builtins.GenerateBuiltInsMap.generateMap(). DO NOT MODIFY MANUALLY */
|
||||
@@ -471,7 +472,7 @@ val ternaryFunctions = mapOf<CompileTimeFunction, Function3<Any?, Any?, Any?, An
|
||||
private fun Any.defaultToString(): String {
|
||||
return when (this) {
|
||||
is Lambda -> this.toString()
|
||||
is State -> "${this.irClass.name}@" + System.identityHashCode(this).toString(16).padStart(8, '0')
|
||||
is State -> "${this.irClass.internalName()}@" + System.identityHashCode(this).toString(16).padStart(8, '0')
|
||||
else -> this.toString().replaceAfter("@", System.identityHashCode(this).toString(16).padStart(8, '0'))
|
||||
}
|
||||
}
|
||||
|
||||
+1
-13
@@ -138,22 +138,10 @@ internal class Wrapper(val value: Any, override val irClass: IrClass) : Complex(
|
||||
|
||||
owner.hasAnnotation(evaluateIntrinsicAnnotation) -> Class.forName(owner!!.getEvaluateIntrinsicValue())
|
||||
fqName == null -> Any::class.java // null if this.isTypeParameter()
|
||||
else -> Class.forName(fqName.replaceDotWithDollarForInnerClasses())
|
||||
else -> Class.forName(owner.internalName())
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.replaceDotWithDollarForInnerClasses(): String? {
|
||||
// TODO come up with something better
|
||||
val names = this.split(".")
|
||||
val result = StringBuilder()
|
||||
for (i in 0 until (names.size - 1)) {
|
||||
result.append(names[i])
|
||||
if (names[i][0].isUpperCase() && names[i + 1][0].isUpperCase()) result.append("$") else result.append(".")
|
||||
}
|
||||
result.append(names.last())
|
||||
return result.toString()
|
||||
}
|
||||
|
||||
private fun IrFunction.getOriginalOverriddenSymbols(): MutableList<IrFunctionSymbol> {
|
||||
val overriddenSymbols = mutableListOf<IrFunctionSymbol>()
|
||||
if (this is IrFunctionImpl) {
|
||||
|
||||
@@ -26,6 +26,7 @@ fun generateMap(irBuiltIns: IrBuiltIns): String {
|
||||
p.println(File("license/COPYRIGHT.txt").readText())
|
||||
p.println("package org.jetbrains.kotlin.ir.interpreter.builtins")
|
||||
p.println()
|
||||
p.println("import org.jetbrains.kotlin.ir.interpreter.internalName")
|
||||
p.println("import org.jetbrains.kotlin.ir.interpreter.state.*")
|
||||
p.println()
|
||||
p.println("/** This file is generated by org.jetbrains.kotlin.backend.common.interpreter.builtins.GenerateBuiltInsMap.generateMap(). DO NOT MODIFY MANUALLY */")
|
||||
@@ -58,7 +59,7 @@ fun generateMap(irBuiltIns: IrBuiltIns): String {
|
||||
private fun Any.defaultToString(): String {
|
||||
return when (this) {
|
||||
is Lambda -> this.toString()
|
||||
is State -> "${'$'}{this.irClass.name}@" + System.identityHashCode(this).toString(16).padStart(8, '0')
|
||||
is State -> "${'$'}{this.irClass.internalName()}@" + System.identityHashCode(this).toString(16).padStart(8, '0')
|
||||
else -> this.toString().replaceAfter("@", System.identityHashCode(this).toString(16).padStart(8, '0'))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user