diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Generator.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Generator.kt index a7c858f9dbf..c755a2c9996 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Generator.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Generator.kt @@ -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() diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt index 4a3b99ab551..2d8543a7c08 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/ErrorListDiagnosticListRenderer.kt @@ -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) } } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/SmartPrinter.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/SmartPrinter.kt index a22a67d339d..8ec82f03c0d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/SmartPrinter.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/SmartPrinter.kt @@ -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) } \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/rendererrs/AbstractDiagnosticsDataClassRenderer.kt b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/rendererrs/AbstractDiagnosticsDataClassRenderer.kt index 9a165834c9f..516ccfd51c7 100644 --- a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/rendererrs/AbstractDiagnosticsDataClassRenderer.kt +++ b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/rendererrs/AbstractDiagnosticsDataClassRenderer.kt @@ -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) {