Don't recognize IrVariable as declaration scope in inlining

#KT-42815 Fixed
This commit is contained in:
Mikhael Bogdanov
2020-12-07 10:00:11 +01:00
committed by max-kammerer
parent 7f51f57998
commit c5015c9294
13 changed files with 154 additions and 5 deletions
@@ -9,10 +9,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.codegen.isInlineFunctionCall
import org.jetbrains.kotlin.backend.jvm.codegen.isInlineIrExpression
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrBlock
import org.jetbrains.kotlin.ir.expressions.IrCallableReference
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
@@ -25,7 +22,8 @@ internal open class IrInlineReferenceLocator(private val context: JvmBackendCont
}
override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclaration?) {
declaration.acceptChildren(this, declaration)
val scope = if (declaration is IrVariable) data else declaration
declaration.acceptChildren(this, scope)
}
override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: IrDeclaration?) {