[FIR2IR] Cache functions/properties both by symbol & signature

This commit is contained in:
Mikhail Glukhikh
2020-11-11 16:28:08 +03:00
parent 92840b8ec5
commit 6c1f5a4513
10 changed files with 141 additions and 58 deletions
@@ -0,0 +1,31 @@
// TARGET_BACKEND: JVM
// FILE: A.kt
interface KotlinMangler<D : Any> {
val String.hashMangle: Long
val D.fqnString: String
val D.fqnMangle: Long get() = fqnString.hashMangle
val manglerName: String
interface IrMangler : KotlinMangler<String> {
override val manglerName: String
get() = "Ir"
}
}
abstract class AbstractKotlinMangler<D : Any> : KotlinMangler<D> {
override val String.hashMangle get() = 42L
}
abstract class IrBasedKotlinManglerImpl : AbstractKotlinMangler<String>(), KotlinMangler.IrMangler {
override val String.fqnString: String
get() = this
}
// FILE: B.kt
abstract class AbstractJvmManglerIr : IrBasedKotlinManglerImpl()
object JvmManglerIr : AbstractJvmManglerIr()
fun box() = "OK"