From c11d01bebba2367da9d8bd4a208c01141b45acb3 Mon Sep 17 00:00:00 2001 From: mcpiroman Date: Thu, 21 Oct 2021 19:49:45 +0200 Subject: [PATCH] Extract some common source generator logic from FIR tree generator --- .../kotlin/fir/tree/generator/Main.kt | 5 +++- .../kotlin/fir/tree/generator/printer/main.kt | 7 +---- .../fir/tree/generator/util/Cleanuper.kt | 28 ------------------- generators/main/GeneratorsFileUtil.kt | 27 +++++++++++++++++- 4 files changed, 31 insertions(+), 36 deletions(-) delete mode 100644 compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/Cleanuper.kt 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 a7cf7d94a39..f2ddd970180 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 @@ -6,8 +6,11 @@ package org.jetbrains.kotlin.fir.tree.generator import org.jetbrains.kotlin.fir.tree.generator.printer.generateElements -import org.jetbrains.kotlin.fir.tree.generator.util.* +import org.jetbrains.kotlin.fir.tree.generator.util.configureInterfacesAndAbstractClasses +import org.jetbrains.kotlin.fir.tree.generator.util.detectBaseTransformerTypes import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.collectPreviouslyGeneratedFiles +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.removeExtraFilesFromPreviousGeneration import java.io.File diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/main.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/main.kt index 3b01e85f05f..146e9533bbc 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/main.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/main.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.tree.generator.printer import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.GENERATED_MESSAGE import org.jetbrains.kotlin.util.SmartPrinter import java.io.File @@ -13,12 +14,6 @@ private val COPYRIGHT = File("license/COPYRIGHT_HEADER.txt").readText() const val VISITOR_PACKAGE = "org.jetbrains.kotlin.fir.visitors" const val BASE_PACKAGE = "org.jetbrains.kotlin.fir" -val GENERATED_MESSAGE = """ - /* - * This file was generated automatically - * DO NOT MODIFY IT MANUALLY - */ - """.trimIndent() fun generateElements(builder: AbstractFirTreeBuilder, generationPath: File): List { val generatedFiles = mutableListOf() diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/Cleanuper.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/Cleanuper.kt deleted file mode 100644 index 266c63e8700..00000000000 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/Cleanuper.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2010-2020 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.fir.tree.generator.util - -import org.jetbrains.kotlin.fir.tree.generator.printer.GENERATED_MESSAGE -import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil -import java.io.File - -fun collectPreviouslyGeneratedFiles(generationPath: File): List { - return generationPath.walkTopDown().filter { - it.isFile && it.readText().contains(GENERATED_MESSAGE) - }.toList() -} - -fun removeExtraFilesFromPreviousGeneration(previouslyGeneratedFiles: List, generatedFiles: List) { - val generatedFilesPath = generatedFiles.mapTo(mutableSetOf()) { it.absolutePath } - - for (file in previouslyGeneratedFiles) { - if (file.absolutePath !in generatedFilesPath) { - if (GeneratorsFileUtil.failOnTeamCity("File delete `${file.absolutePath}`")) continue - println("Deleted: ${file.absolutePath}") - file.delete() - } - } -} diff --git a/generators/main/GeneratorsFileUtil.kt b/generators/main/GeneratorsFileUtil.kt index 6d51628650e..4ec2875fc0a 100644 --- a/generators/main/GeneratorsFileUtil.kt +++ b/generators/main/GeneratorsFileUtil.kt @@ -13,6 +13,13 @@ import kotlin.io.path.* object GeneratorsFileUtil { val isTeamCityBuild: Boolean = System.getenv("TEAMCITY_VERSION") != null + val GENERATED_MESSAGE = """ + /* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + """.trimIndent() + @OptIn(ExperimentalPathApi::class) @JvmStatic @JvmOverloads @@ -51,7 +58,7 @@ object GeneratorsFileUtil { println() } - fun failOnTeamCity(message: String): Boolean { + private fun failOnTeamCity(message: String): Boolean { if (!isTeamCityBuild) return false fun String.escapeForTC(): String = StringBuilder(length).apply { @@ -85,4 +92,22 @@ object GeneratorsFileUtil { } return StringUtil.convertLineSeparators(content) != currentContent } + + fun collectPreviouslyGeneratedFiles(generationPath: File): List { + return generationPath.walkTopDown().filter { + it.isFile && it.readText().contains(GENERATED_MESSAGE) + }.toList() + } + + fun removeExtraFilesFromPreviousGeneration(previouslyGeneratedFiles: List, generatedFiles: List) { + val generatedFilesPath = generatedFiles.mapTo(mutableSetOf()) { it.absolutePath } + + for (file in previouslyGeneratedFiles) { + if (file.absolutePath !in generatedFilesPath) { + if (failOnTeamCity("File delete `${file.absolutePath}`")) continue + println("Deleted: ${file.absolutePath}") + file.delete() + } + } + } }