[Test] Split IR verification and IR dump to different handlers
This commit is contained in:
committed by
TeamCityServer
parent
c9cd49d34f
commit
2530ae6b3d
-10
@@ -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)
|
||||
}
|
||||
|
||||
+40
@@ -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<DirectivesContainer>
|
||||
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) {}
|
||||
}
|
||||
+1
-1
@@ -53,7 +53,7 @@ fun <R : ResultingArtifact.FrontendOutput<R>> TestConfigurationBuilder.commonCon
|
||||
}
|
||||
|
||||
fun TestConfigurationBuilder.dumpHandlersForCodegenTest() {
|
||||
useBackendHandlers(::IrTextDumpHandler)
|
||||
useBackendHandlers(::IrTreeVerifierHandler, ::IrTextDumpHandler)
|
||||
useArtifactsHandlers(::BytecodeListingHandler)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user