JVM_IR: Remove $$forInline suffix for fake inliner variables

Otherwise, IDE will not be able to navigate to inline functions.
 #KT-36797 Fixed
This commit is contained in:
Ilmir Usmanov
2020-02-20 13:31:05 +01:00
parent 325ad14ac9
commit 52e7cd5725
2 changed files with 3 additions and 4 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator
import org.jetbrains.kotlin.codegen.inline.coroutines.FOR_INLINE_SUFFIX
import org.jetbrains.kotlin.ir.builders.createTmpVariable
import org.jetbrains.kotlin.ir.builders.irBlockBody
import org.jetbrains.kotlin.ir.builders.irInt
@@ -61,7 +62,8 @@ internal class FakeInliningLocalVariablesLowering(val context: JvmBackendContext
body = irBlockBody {
// Create temporary variable, but make sure it's origin is `DEFINED` so that
// it will materialize in the code.
createTmpVariable(irInt(0), name, origin = IrDeclarationOrigin.DEFINED)
// Also, do not forget to remove $$forInline suffix, otherwise, IDE will not be able to navigate to inline function.
createTmpVariable(irInt(0), name.removeSuffix(FOR_INLINE_SUFFIX), origin = IrDeclarationOrigin.DEFINED)
if (body is IrExpressionBody) {
+irReturn((body as IrExpressionBody).expression)
} else {
@@ -1,6 +1,3 @@
// $$forInline suffix is not needed: KT-36797
// JVM_IR generates fake inliner variable with suffix $$forInline, when old BE does not do this
// IGNORE_BACKEND: JVM_IR
interface ApplicationCall
interface AuthenticationService {