[JS IR] Take default params into account for calculating an IC hash

^KT-54895 Fixed
This commit is contained in:
Alexander Korepanov
2022-11-10 14:10:19 +01:00
committed by Space Team
parent f7063555ca
commit f4b5f5ff5d
19 changed files with 176 additions and 0 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.CrossModuleReferences
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.util.DumpIrTreeVisitor
@@ -110,6 +111,13 @@ internal fun IrSymbol.irSymbolHashForIC() = HashCalculatorForIC().also {
it.update(typeParameter.symbol.toString())
}
}
(owner as? IrFunction)?.let { irFunction ->
it.updateForEach(irFunction.valueParameters) { functionParam ->
// symbol rendering doesn't print default params information
// it is important to understand if default params were added or removed
it.update(functionParam.defaultValue?.let { 1 } ?: 0)
}
}
}.finalize()
internal fun String.stringHashForIC() = HashCalculatorForIC().also { it.update(this) }.finalize()