IR: fix offsets in irTemporary
The variable generated by IrStatementBuilder.irTemporary doesn't inherit startOffset and endOffset from the builder. In particular, as a result, temporary variables generated for elvis operator left operand have UNDEFINED_OFFSET. Additionally, ProvisionalFunctionExpressionLowering copies the offsets of a variable to lowered lambda in the variable initializer. With the problem described above, this causes invalid debug information in Kotlin/Native, see KT-49360. Fix irTemporary by using builder's offsets for the variable. ^KT-49360 Fixed
This commit is contained in:
committed by
Space
parent
fb859c0270
commit
2f5706597a
@@ -45,7 +45,11 @@ fun <T : IrElement> IrStatementsBuilder<T>.irTemporary(
|
||||
irType: IrType = value?.type!!, // either value or irType should be supplied at callsite
|
||||
isMutable: Boolean = false,
|
||||
): IrVariable {
|
||||
val temporary = scope.createTemporaryVariableDeclaration(irType, nameHint, isMutable)
|
||||
val temporary = scope.createTemporaryVariableDeclaration(
|
||||
irType, nameHint, isMutable,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset
|
||||
)
|
||||
value?.let { temporary.initializer = it }
|
||||
+temporary
|
||||
return temporary
|
||||
|
||||
Reference in New Issue
Block a user