diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt index 6fa5a98cacf..70f0885a237 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Main.kt @@ -11,11 +11,8 @@ import java.io.File fun main(args: Array) { - val generationPath = args.firstOrNull()?.let { if (!it.endsWith("/")) "$it/" else it } - if (generationPath == null) { - println("Not enough arguments") - return - } + val generationPath = args.firstOrNull()?.let { File(it) } + ?: File("compiler/fir/tree/gen").absoluteFile NodeConfigurator.configureFields() detectBaseTransformerTypes(FirTreeBuilder) @@ -79,8 +76,8 @@ private fun detectBaseTransformerTypes(builder: AbstractFirTreeBuilder) { } } -private fun removePreviousGeneratedFiles(generationPath: String) { - File(generationPath).walkTopDown().forEach { +private fun removePreviousGeneratedFiles(generationPath: File) { + generationPath.walkTopDown().forEach { if (it.isFile && it.readText().contains(GENERATED_MESSAGE)) { it.delete() } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt index e1934549993..3b9408beb0f 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Printer.kt @@ -30,7 +30,7 @@ val GENERATED_MESSAGE = """ */ """.trimIndent() -fun printElements(builder: AbstractFirTreeBuilder, generationPath: String) { +fun printElements(builder: AbstractFirTreeBuilder, generationPath: File) { builder.elements.forEach { it.generateCode(generationPath) } builder.elements.flatMap { it.allImplementations }.forEach { it.generateCode(generationPath) } @@ -49,8 +49,8 @@ fun PrintWriter.printGeneratedMessage() { println() } -fun printVisitor(elements: List, generationPath: String) { - val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/")) +fun printVisitor(elements: List, generationPath: File) { + val dir = File(generationPath, VISITOR_PACKAGE.replace(".", "/")) dir.mkdirs() File(dir, "FirVisitor.kt").printWriter().use { printer -> with(printer) { @@ -80,8 +80,8 @@ fun printVisitor(elements: List, generationPath: String) { } } -fun printVisitorVoid(elements: List, generationPath: String) { - val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/")) +fun printVisitorVoid(elements: List, generationPath: File) { + val dir = File(generationPath, VISITOR_PACKAGE.replace(".", "/")) dir.mkdirs() File(dir, "FirVisitorVoid.kt").printWriter().use { printer -> with(printer) { @@ -128,8 +128,8 @@ fun printVisitorVoid(elements: List, generationPath: String) { } } -fun Element.generateCode(generationPath: String) { - val dir = File(generationPath + packageName.replace(".", "/")) +fun Element.generateCode(generationPath: File) { + val dir = generationPath.resolve(packageName.replace(".", "/")) dir.mkdirs() val file = File(dir, "$type.kt") file.printWriter().use { printer -> @@ -148,8 +148,8 @@ fun Element.generateCode(generationPath: String) { } } -fun Implementation.generateCode(generationPath: String) { - val dir = File(generationPath + packageName.replace(".", "/")) +fun Implementation.generateCode(generationPath: File) { + val dir = generationPath.resolve(packageName.replace(".", "/")) dir.mkdirs() val file = File(dir, "$type.kt") file.printWriter().use { printer -> @@ -578,8 +578,8 @@ fun Field.replaceFunctionDeclaration(): String { return "fun replace$capName(new$capName: $typeWithArgumentsWithoutNullablity)" } -fun printTransformer(elements: List, generationPath: String) { - val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/")) +fun printTransformer(elements: List, generationPath: File) { + val dir = File(generationPath, VISITOR_PACKAGE.replace(".", "/")) dir.mkdirs() File(dir, "FirTransformer.kt").printWriter().use { printer -> with(printer) {