From 52464fd1034071e48097fbb5b9f18ad48cef9087 Mon Sep 17 00:00:00 2001 From: Mads Ager Date: Mon, 28 Jan 2019 15:15:51 +0100 Subject: [PATCH] JVM_IR: do not generate line number info for temporary loads. Loads from compiler-introduces temporary variables to do not correspond to loads in user code. --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 5 ++++- compiler/testData/codegen/bytecodeText/lineNumbers/when.kt | 2 -- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 9301bef8889..cf9deef4620 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -426,7 +426,10 @@ class ExpressionCodegen( } override fun visitGetValue(expression: IrGetValue, data: BlockInfo): StackValue { - expression.markLineNumber(startOffset = true) + // Do not generate line number information for loads from compiler-generated + // temporary variables. They do not correspond to variable loads in user code. + if (expression.symbol.owner.origin != IrDeclarationOrigin.IR_TEMPORARY_VARIABLE) + expression.markLineNumber(startOffset = true) return generateLocal(expression.symbol, expression.asmType) } diff --git a/compiler/testData/codegen/bytecodeText/lineNumbers/when.kt b/compiler/testData/codegen/bytecodeText/lineNumbers/when.kt index cc72ffbbd0d..f35b9932486 100644 --- a/compiler/testData/codegen/bytecodeText/lineNumbers/when.kt +++ b/compiler/testData/codegen/bytecodeText/lineNumbers/when.kt @@ -6,5 +6,3 @@ fun foo() { } } // 1 LINENUMBER 3 -// Adding ignore flags below the test since the test relies on line numbers. -// IGNORE_BACKEND: JVM_IR