[FIR] Disambiguate module names

This commit is contained in:
Simon Ogorodnik
2019-08-26 15:56:01 +03:00
parent 9530389583
commit b99d9e0e0b
@@ -72,13 +72,14 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
bench.processFiles(firFiles, totalTransformer.transformers) bench.processFiles(firFiles, totalTransformer.transformers)
dumpFir(moduleData, firFiles) val disambiguatedName = moduleData.disambiguatedName()
dumpFirHtml(moduleData, firFiles) dumpFir(disambiguatedName, moduleData, firFiles)
dumpFirHtml(disambiguatedName, moduleData, firFiles)
} }
private fun dumpFir(moduleData: ModuleData, firFiles: List<FirFile>) { private fun dumpFir(disambiguatedName: String, moduleData: ModuleData, firFiles: List<FirFile>) {
if (!DUMP_FIR) return if (!DUMP_FIR) return
val dumpRoot = File(FIR_DUMP_PATH).resolve(moduleData.qualifiedName) val dumpRoot = File(FIR_DUMP_PATH).resolve(disambiguatedName)
firFiles.forEach { firFiles.forEach {
val directory = it.packageFqName.pathSegments().fold(dumpRoot) { file, name -> file.resolve(name.asString()) } val directory = it.packageFqName.pathSegments().fold(dumpRoot) { file, name -> file.resolve(name.asString()) }
directory.mkdirs() directory.mkdirs()
@@ -86,9 +87,19 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
} }
} }
private fun dumpFirHtml(moduleData: ModuleData, firFiles: List<FirFile>) { private val dumpedModules = mutableSetOf<String>()
private fun ModuleData.disambiguatedName(): String {
var disambiguatedName = this.name
var counter = 0
while(!dumpedModules.add(disambiguatedName)) {
disambiguatedName = "${this.name}.${counter++}"
}
return disambiguatedName
}
private fun dumpFirHtml(disambiguatedName: String, moduleData: ModuleData, firFiles: List<FirFile>) {
if (!DUMP_FIR) return if (!DUMP_FIR) return
dump.module(moduleData.qualifiedName) { dump.module(disambiguatedName) {
firFiles.forEach(dump::indexFile) firFiles.forEach(dump::indexFile)
firFiles.forEach(dump::generateFile) firFiles.forEach(dump::generateFile)
} }