diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt index 4a39051bb63..788b4be1954 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTextDumpHandler.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.test.backend.handlers import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies -import org.jetbrains.kotlin.ir.IrVerifier import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFile @@ -67,11 +66,6 @@ class IrTextDumpHandler(testServices: TestServices) : AbstractIrHandler(testServ if (EXTERNAL_FILE in testFile.directives) continue val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true) builder.append(actualDump) - verify(irFile) - - val irFileCopy = irFile.deepCopyWithSymbols() - val dumpOfCopy = irFileCopy.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true) - assertions.assertEquals(actualDump, dumpOfCopy) { "IR dump mismatch after deep copy with symbols" } } compareDumpsOfExternalClasses(module, info) } @@ -122,10 +116,6 @@ class IrTextDumpHandler(testServices: TestServices) : AbstractIrHandler(testServ } } - private fun verify(irFile: IrFile) { - IrVerifier(assertions).verifyWithAssert(irFile) - } - private val TestModule.dumpExtension: String get() = computeDumpExtension(this, DUMP_EXTENSION) } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTreeVerifierHandler.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTreeVerifierHandler.kt new file mode 100644 index 00000000000..841e62ce4ae --- /dev/null +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/handlers/IrTreeVerifierHandler.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.test.backend.handlers + +import org.jetbrains.kotlin.ir.IrVerifier +import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols +import org.jetbrains.kotlin.ir.util.dumpTreesFromLineNumber +import org.jetbrains.kotlin.test.backend.handlers.IrTextDumpHandler.Companion.groupWithTestFiles +import org.jetbrains.kotlin.test.backend.ir.IrBackendInput +import org.jetbrains.kotlin.test.directives.CodegenTestDirectives +import org.jetbrains.kotlin.test.directives.model.DirectivesContainer +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices + +class IrTreeVerifierHandler(testServices: TestServices) : AbstractIrHandler(testServices) { + override val directivesContainers: List + get() = listOf(CodegenTestDirectives) + + override fun processModule(module: TestModule, info: IrBackendInput) { + if (CodegenTestDirectives.DUMP_IR !in module.directives) return + val irFiles = info.backendInput.irModuleFragment.files + val testFileToIrFile = irFiles.groupWithTestFiles(module) + for ((testFile, irFile) in testFileToIrFile) { + if (CodegenTestDirectives.EXTERNAL_FILE in testFile.directives) continue + + IrVerifier(assertions).verifyWithAssert(irFile) + + val actualDump = irFile.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true) + + val irFileCopy = irFile.deepCopyWithSymbols() + val dumpOfCopy = irFileCopy.dumpTreesFromLineNumber(lineNumber = 0, normalizeNames = true) + assertions.assertEquals(actualDump, dumpOfCopy) { "IR dump mismatch after deep copy with symbols" } + } + } + + override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} +} diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/codegen/BaseCodegenConfiguration.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/codegen/BaseCodegenConfiguration.kt index d2ac76905e9..dae24b57ba7 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/codegen/BaseCodegenConfiguration.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/codegen/BaseCodegenConfiguration.kt @@ -53,7 +53,7 @@ fun > TestConfigurationBuilder.commonCon } fun TestConfigurationBuilder.dumpHandlersForCodegenTest() { - useBackendHandlers(::IrTextDumpHandler) + useBackendHandlers(::IrTreeVerifierHandler, ::IrTextDumpHandler) useArtifactsHandlers(::BytecodeListingHandler) } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/ir/AbstractIrTextTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/ir/AbstractIrTextTest.kt index 8a7ae66724a..cad464d5b32 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/ir/AbstractIrTextTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/ir/AbstractIrTextTest.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor import org.jetbrains.kotlin.test.backend.handlers.* -import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_IR import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_KT_IR @@ -70,6 +69,7 @@ abstract class AbstractIrTextTestBase( useBackendHandlers( ::IrTextDumpHandler, + ::IrTreeVerifierHandler, ::IrPrettyKotlinDumpHandler ) }