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
|
||||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.EXTERNAL_FILE
|
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.EXTERNAL_FILE
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
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.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ class IrTreeVerifierHandler(testServices: TestServices) : AbstractIrHandler(test
|
|||||||
for ((testFile, irFile) in testFileToIrFile) {
|
for ((testFile, irFile) in testFileToIrFile) {
|
||||||
if (testFile?.directives?.contains(EXTERNAL_FILE) == true) continue
|
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)
|
val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true)
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun verify(irFile: IrFile) {
|
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>)
|
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.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.test.Assertions
|
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 errors = ArrayList<String>()
|
||||||
|
|
||||||
private val symbolForDeclaration = HashMap<IrElement, IrSymbol>()
|
private val symbolForDeclaration = HashMap<IrElement, IrSymbol>()
|
||||||
@@ -95,6 +98,10 @@ class IrVerifier(private val assertions: Assertions) : IrElementVisitorVoid {
|
|||||||
override fun visitFunction(declaration: IrFunction) {
|
override fun visitFunction(declaration: IrFunction) {
|
||||||
visitDeclaration(declaration)
|
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
|
val functionDescriptor = declaration.descriptor
|
||||||
|
|
||||||
checkTypeParameters(functionDescriptor, declaration, functionDescriptor.typeParameters)
|
checkTypeParameters(functionDescriptor, declaration, functionDescriptor.typeParameters)
|
||||||
|
|||||||
Reference in New Issue
Block a user