[FIR] Improve path usages in generator, provide default output
This commit is contained in:
+4
-7
@@ -11,11 +11,8 @@ import java.io.File
|
||||
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
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()
|
||||
}
|
||||
|
||||
+11
-11
@@ -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<Element>, generationPath: String) {
|
||||
val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/"))
|
||||
fun printVisitor(elements: List<Element>, 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<Element>, generationPath: String) {
|
||||
}
|
||||
}
|
||||
|
||||
fun printVisitorVoid(elements: List<Element>, generationPath: String) {
|
||||
val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/"))
|
||||
fun printVisitorVoid(elements: List<Element>, 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<Element>, 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<Element>, generationPath: String) {
|
||||
val dir = File(generationPath + VISITOR_PACKAGE.replace(".", "/"))
|
||||
fun printTransformer(elements: List<Element>, generationPath: File) {
|
||||
val dir = File(generationPath, VISITOR_PACKAGE.replace(".", "/"))
|
||||
dir.mkdirs()
|
||||
File(dir, "FirTransformer.kt").printWriter().use { printer ->
|
||||
with(printer) {
|
||||
|
||||
Reference in New Issue
Block a user