[JS IR] Improve debug info for functions with default parameters

Don't generate unnecessary mappings so that the user doesn't need to
step in many times to get where they want

#KT-46276
This commit is contained in:
Sergej Jaskiewicz
2022-10-28 14:27:06 +02:00
committed by Space Team
parent 43c5c8b44f
commit ccbb2a08a0
6 changed files with 12 additions and 16 deletions
@@ -62,7 +62,7 @@ class JsDefaultArgumentStubGenerator(override val context: JsIrBackendContext) :
}
private fun IrFunction.introduceDefaultResolution(): IrFunction {
val irBuilder = context.createIrBuilder(symbol, startOffset, endOffset)
val irBuilder = context.createIrBuilder(symbol, UNDEFINED_OFFSET, UNDEFINED_OFFSET)
val variables = mutableMapOf<IrValueParameter, IrValueParameter>()
@@ -140,7 +140,7 @@ class JsDefaultArgumentStubGenerator(override val context: JsIrBackendContext) :
override fun IrFunction.generateDefaultStubBody(originalDeclaration: IrFunction): IrBody {
val ctx = context
val irBuilder = context.createIrBuilder(symbol, startOffset, endOffset)
val irBuilder = context.createIrBuilder(symbol, UNDEFINED_OFFSET, UNDEFINED_OFFSET)
val variables = mutableMapOf<IrValueParameter, IrValueDeclaration>().apply {
originalDeclaration.dispatchReceiverParameter?.let {
@@ -154,7 +154,7 @@ class JsDefaultArgumentStubGenerator(override val context: JsIrBackendContext) :
}
}
return irBuilder.irBlockBody(this) {
return irBuilder.irBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
+valueParameters.zip(originalDeclaration.valueParameters)
.mapNotNull { (new, original) ->
createResolutionStatement(
@@ -244,4 +244,4 @@ class JsDefaultArgumentStubGenerator(override val context: JsIrBackendContext) :
private fun IrFunction.hasDefaultArgs(): Boolean =
valueParameters.any { it.defaultValue != null }
}
}
+2 -4
View File
@@ -27,9 +27,7 @@ fun box() {
// test.kt:11 box
// test.kt:3 <init>
// test.kt:11 box
// test.kt:6 foo$default
// test.kt:4 computeParam
// test.kt:6 foo$default
// test.kt:6 foo$default
// test.kt:7 foo
// test.kt:6 foo$default
// test.kt:12 box
// test.kt:12 box