FIR: use GeneratorsFileUtil for checkers-component-generator

This commit is contained in:
Ilya Kirillov
2021-02-04 16:10:20 +01:00
parent 4cf863e054
commit 5cefad1ab3
4 changed files with 11 additions and 9 deletions
@@ -24,7 +24,7 @@ class Generator(
private fun generateAliases() {
val filename = "${abstractCheckerName}Aliases.kt"
generationPath.resolve(filename).useSmartPrinter {
generationPath.resolve(filename).writeToFileUsingSmartPrinterIfFileContentChanged {
printPackageAndCopyright()
printGeneratedMessage()
configuration.aliases.keys
@@ -43,7 +43,7 @@ class Generator(
private fun generateAbstractCheckersComponent() {
val filename = "${checkersComponentName}.kt"
generationPath.resolve(filename).useSmartPrinter {
generationPath.resolve(filename).writeToFileUsingSmartPrinterIfFileContentChanged {
printPackageAndCopyright()
printImports()
printGeneratedMessage()
@@ -86,7 +86,7 @@ class Generator(
private fun generateComposedComponent() {
val composedComponentName = "Composed$checkersComponentName"
val filename = "${composedComponentName}.kt"
generationPath.resolve(filename).useSmartPrinter {
generationPath.resolve(filename).writeToFileUsingSmartPrinterIfFileContentChanged {
printPackageAndCopyright()
printImports()
printGeneratedMessage()
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.checkers.generator.*
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.printCopyright
import org.jetbrains.kotlin.fir.tree.generator.printer.printGeneratedMessage
import org.jetbrains.kotlin.fir.tree.generator.printer.useSmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.writeToFileUsingSmartPrinterIfFileContentChanged
import java.io.File
import kotlin.reflect.KClass
import kotlin.reflect.KType
@@ -17,7 +17,7 @@ import kotlin.reflect.KTypeProjection
object ErrorListDiagnosticListRenderer : DiagnosticListRenderer() {
override fun render(file: File, diagnosticList: DiagnosticList, packageName: String) {
file.useSmartPrinter {
file.writeToFileUsingSmartPrinterIfFileContentChanged {
render(diagnosticList, packageName)
}
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
import java.io.File
import java.lang.Appendable
@@ -49,6 +50,7 @@ inline fun SmartPrinter.withIndent(block: () -> Unit) {
popIndent()
}
inline fun File.useSmartPrinter(block: SmartPrinter.() -> Unit) {
writer().use { SmartPrinter(it).block() }
inline fun File.writeToFileUsingSmartPrinterIfFileContentChanged(block: SmartPrinter.() -> Unit) {
val newText = buildString { SmartPrinter(this).block() }
GeneratorsFileUtil.writeFileIfContentChanged(this, newText)
}
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.checkers.generator.printImports
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.printCopyright
import org.jetbrains.kotlin.fir.tree.generator.printer.printGeneratedMessage
import org.jetbrains.kotlin.fir.tree.generator.printer.useSmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.writeToFileUsingSmartPrinterIfFileContentChanged
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.HLDiagnosticConverter
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.HLDiagnosticList
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.HLDiagnosticParameter
@@ -21,7 +21,7 @@ import java.io.File
abstract class AbstractDiagnosticsDataClassRenderer : DiagnosticListRenderer() {
override fun render(file: File, diagnosticList: DiagnosticList, packageName: String) {
val hlDiagnosticsList = HLDiagnosticConverter.convert(diagnosticList)
file.useSmartPrinter { render(hlDiagnosticsList, packageName) }
file.writeToFileUsingSmartPrinterIfFileContentChanged { render(hlDiagnosticsList, packageName) }
}
private fun SmartPrinter.collectAndPrintImports(diagnosticList: HLDiagnosticList) {