Use fir to html in modularized test
This commit is contained in:
committed by
Mikhail Glukhikh
parent
61b410e276
commit
3cabf490dd
@@ -21,6 +21,7 @@ dependencies {
|
|||||||
testRuntime(project(":kotlin-reflect"))
|
testRuntime(project(":kotlin-reflect"))
|
||||||
testCompile(projectTests(":compiler:fir:resolve"))
|
testCompile(projectTests(":compiler:fir:resolve"))
|
||||||
testCompile(project(":compiler:fir:resolve"))
|
testCompile(project(":compiler:fir:resolve"))
|
||||||
|
testCompile(project(":compiler:fir:dump"))
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+16
-1
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
|
import org.jetbrains.kotlin.fir.dump.MultiModuleHtmlFirDump
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||||
@@ -48,6 +49,7 @@ private const val FAIL_FAST = true
|
|||||||
private const val DUMP_FIR = true
|
private const val DUMP_FIR = true
|
||||||
|
|
||||||
private const val FIR_DUMP_PATH = "tmp/firDump"
|
private const val FIR_DUMP_PATH = "tmp/firDump"
|
||||||
|
private const val FIR_HTML_DUMP_PATH = "tmp/firDump-html"
|
||||||
private const val FIR_LOGS_PATH = "tmp/fir-logs"
|
private const val FIR_LOGS_PATH = "tmp/fir-logs"
|
||||||
|
|
||||||
private data class ModuleData(val name: String, val classpath: List<File>, val sources: List<File>, val javaSourceRoots: List<File>)
|
private data class ModuleData(val name: String, val classpath: List<File>, val sources: List<File>, val javaSourceRoots: List<File>)
|
||||||
@@ -58,6 +60,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
|
|
||||||
|
|
||||||
private lateinit var bench: FirResolveBench
|
private lateinit var bench: FirResolveBench
|
||||||
|
private lateinit var dump: MultiModuleHtmlFirDump
|
||||||
|
|
||||||
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
|
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
|
||||||
val project = environment.project
|
val project = environment.project
|
||||||
@@ -84,6 +87,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
bench.processFiles(firFiles, totalTransformer.transformers)
|
bench.processFiles(firFiles, totalTransformer.transformers)
|
||||||
|
|
||||||
dumpFir(moduleData, firFiles)
|
dumpFir(moduleData, firFiles)
|
||||||
|
dumpFirHtml(moduleData, firFiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dumpFir(moduleData: ModuleData, firFiles: List<FirFile>) {
|
private fun dumpFir(moduleData: ModuleData, firFiles: List<FirFile>) {
|
||||||
@@ -96,6 +100,14 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun dumpFirHtml(moduleData: ModuleData, firFiles: List<FirFile>) {
|
||||||
|
if (!DUMP_FIR) return
|
||||||
|
dump.module(moduleData.name) {
|
||||||
|
firFiles.forEach(dump::indexFile)
|
||||||
|
firFiles.forEach(dump::generateFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun processModule(moduleData: ModuleData) {
|
private fun processModule(moduleData: ModuleData) {
|
||||||
val configurationKind = ConfigurationKind.ALL
|
val configurationKind = ConfigurationKind.ALL
|
||||||
val testJdkKind = TestJdkKind.FULL_JDK
|
val testJdkKind = TestJdkKind.FULL_JDK
|
||||||
@@ -153,6 +165,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
|
|
||||||
|
|
||||||
private fun runTestOnce(pass: Int) {
|
private fun runTestOnce(pass: Int) {
|
||||||
|
if (DUMP_FIR) dump = MultiModuleHtmlFirDump(File(FIR_HTML_DUMP_PATH))
|
||||||
val testDataPath = "/Users/jetbrains/jps"
|
val testDataPath = "/Users/jetbrains/jps"
|
||||||
val root = File(testDataPath)
|
val root = File(testDataPath)
|
||||||
|
|
||||||
@@ -160,6 +173,7 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
|
|
||||||
val modules =
|
val modules =
|
||||||
root.listFiles().sortedBy { it.lastModified() }.map { loadModule(it) }
|
root.listFiles().sortedBy { it.lastModified() }.map { loadModule(it) }
|
||||||
|
// .sortedByDescending { it.name == "idea" }
|
||||||
|
|
||||||
|
|
||||||
for (module in modules.progress(step = 0.0) { "Analyzing ${it.name}" }) {
|
for (module in modules.progress(step = 0.0) { "Analyzing ${it.name}" }) {
|
||||||
@@ -177,7 +191,8 @@ class FirResolveModularizedTotalKotlinTest : KtUsefulTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveReport() {
|
private fun saveReport() {
|
||||||
|
if (DUMP_FIR) dump.finish()
|
||||||
val format = SimpleDateFormat("yyyy-MM-dd__hh-mm")
|
val format = SimpleDateFormat("yyyy-MM-dd__hh-mm")
|
||||||
val logDir = File(FIR_LOGS_PATH)
|
val logDir = File(FIR_LOGS_PATH)
|
||||||
logDir.mkdirs()
|
logDir.mkdirs()
|
||||||
|
|||||||
Reference in New Issue
Block a user