JVM_IR: use signatures in AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest
Using signatures allows us to identify calls from a new module to an old one.
This commit is contained in:
committed by
TeamCityServer
parent
49619cda48
commit
8d15a1d13d
+4
-4
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.allUnbound
|
||||
import org.jetbrains.kotlin.ir.util.resolveFakeOverride
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
@@ -96,7 +96,7 @@ open class AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest : AbstractIrC
|
||||
}
|
||||
|
||||
private class CheckInlineBodies(testServices: TestServices) : AbstractIrHandler(testServices) {
|
||||
val declaredInlineFunctions = mutableSetOf<IrSimpleFunction>()
|
||||
val declaredInlineFunctionSignatures = mutableSetOf<IdSignature>()
|
||||
|
||||
override fun processModule(module: TestModule, info: IrBackendInput) {
|
||||
val irModule = info.backendInput.irModuleFragment
|
||||
@@ -115,7 +115,7 @@ open class AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest : AbstractIrC
|
||||
}
|
||||
|
||||
override fun visitSimpleFunction(declaration: IrSimpleFunction) {
|
||||
if (declaration.isInline) declaredInlineFunctions.add(declaration)
|
||||
if (declaration.isInline) declaration.symbol.signature?.let { declaredInlineFunctionSignatures.add(it) }
|
||||
super.visitSimpleFunction(declaration)
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,7 @@ open class AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest : AbstractIrC
|
||||
val symbol = expression.symbol
|
||||
assertions.assertTrue(symbol.isBound)
|
||||
val callee = symbol.owner
|
||||
if (callee in declaredInlineFunctions) {
|
||||
if (callee.symbol.signature in declaredInlineFunctionSignatures) {
|
||||
val trueCallee = (callee as IrSimpleFunction).resolveFakeOverride()!!
|
||||
assertions.assertNotNull(trueCallee.body)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user