FIR: Do not verify descriptors consistency for FIR-based IR functions
This commit is contained in:
+2
-1
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.EXTERNAL_FILE
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
@@ -27,7 +28,7 @@ class IrTreeVerifierHandler(testServices: TestServices) : AbstractIrHandler(test
|
||||
for ((testFile, irFile) in testFileToIrFile) {
|
||||
if (testFile?.directives?.contains(EXTERNAL_FILE) == true) continue
|
||||
|
||||
IrVerifier(assertions).verifyWithAssert(irFile)
|
||||
IrVerifier(assertions, module.frontendKind == FrontendKinds.FIR).verifyWithAssert(irFile)
|
||||
|
||||
val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true)
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
||||
}
|
||||
|
||||
private fun verify(irFile: IrFile) {
|
||||
IrVerifier(JUnit4Assertions).verifyWithAssert(irFile)
|
||||
IrVerifier(JUnit4Assertions, isFir = false).verifyWithAssert(irFile)
|
||||
}
|
||||
|
||||
internal class Expectations(val regexps: List<RegexpInText>, val irTreeFileLabels: List<IrTreeFileLabel>)
|
||||
|
||||
@@ -16,7 +16,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.test.Assertions
|
||||
|
||||
class IrVerifier(private val assertions: Assertions) : IrElementVisitorVoid {
|
||||
class IrVerifier(
|
||||
private val assertions: Assertions,
|
||||
private val isFir: Boolean,
|
||||
) : IrElementVisitorVoid {
|
||||
private val errors = ArrayList<String>()
|
||||
|
||||
private val symbolForDeclaration = HashMap<IrElement, IrSymbol>()
|
||||
@@ -95,6 +98,10 @@ class IrVerifier(private val assertions: Assertions) : IrElementVisitorVoid {
|
||||
override fun visitFunction(declaration: IrFunction) {
|
||||
visitDeclaration(declaration)
|
||||
|
||||
// For FIR, we don't use descriptors to build IR, but vice versa
|
||||
// And at some points, like context descriptors, they might differ
|
||||
if (isFir) return
|
||||
|
||||
val functionDescriptor = declaration.descriptor
|
||||
|
||||
checkTypeParameters(functionDescriptor, declaration, functionDescriptor.typeParameters)
|
||||
|
||||
Reference in New Issue
Block a user