Move SmartPrinter to :core:compiler.common

This commit is contained in:
Dmitriy Novozhilov
2021-02-26 15:55:15 +03:00
committed by TeamCityServer
parent 24ba581910
commit 4299794de2
19 changed files with 63 additions and 49 deletions
@@ -6,6 +6,9 @@
package org.jetbrains.kotlin.fir.checkers.generator
import org.jetbrains.kotlin.fir.tree.generator.printer.*
import org.jetbrains.kotlin.fir.tree.generator.util.writeToFileUsingSmartPrinterIfFileContentChanged
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
private typealias Alias = String
@@ -5,27 +5,27 @@
package org.jetbrains.kotlin.fir.checkers.generator
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.util.SmartPrinter
private object ImportPrinter {
fun SmartPrinter.printImports(imports: Collection<String>) {
val importsToPrint = imports.filterNot { it.isDefaultImport() }.distinct().sorted()
for (import in importsToPrint) {
println("import $import")
}
}
fun SmartPrinter.printImports(imports: Collection<String>) {
val importsToPrint = imports.filterNot { it.isDefaultImport() }.distinct().sorted()
for (import in importsToPrint) {
println("import $import")
}
}
private fun String.isDefaultImport() = substringBeforeLast('.') in defaultImportedPackages
private fun String.isDefaultImport() = substringBeforeLast('.') in defaultImportedPackages
private val defaultImportedPackages = setOf(
"kotlin",
"kotlin.annotation",
"kotlin.collections",
"kotlin.ranges",
"kotlin.sequences",
"kotlin.text",
"kotlin.io",
)
private val defaultImportedPackages = setOf(
"kotlin",
"kotlin.annotation",
"kotlin.collections",
"kotlin.ranges",
"kotlin.sequences",
"kotlin.text",
"kotlin.io",
)
}
fun SmartPrinter.printImports(imports: Collection<String>) {
@@ -6,10 +6,10 @@
package org.jetbrains.kotlin.fir.checkers.generator.diagnostics
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.writeToFileUsingSmartPrinterIfFileContentChanged
import org.jetbrains.kotlin.fir.tree.generator.util.writeToFileUsingSmartPrinterIfFileContentChanged
import org.jetbrains.kotlin.util.SmartPrinter
import java.io.File
import kotlin.reflect.KClass
import kotlin.reflect.KType
@@ -134,4 +134,4 @@ private inline fun <T> SmartPrinter.printSeparatedWithComma(list: List<T>, print
print(", ")
}
}
}
}
@@ -5,11 +5,11 @@
package org.jetbrains.kotlin.fir.checkers.generator
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.withIndent
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
inline fun SmartPrinter.inBracketsWithIndent(header: String = "", body: () -> Unit) {
println("$header {")
withIndent(body)
println("}")
}
}
@@ -22,4 +22,4 @@ fun KType.collectClassNamesTo(set: MutableSet<String>) {
for (argument in arguments) {
argument.type?.collectClassNamesTo(set)
}
}
}
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.declarationAttributesType
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
fun Builder.generateCode(generationPath: File): GeneratedFile {
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
import org.jetbrains.kotlin.fir.tree.generator.util.get
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.model.Field
import org.jetbrains.kotlin.util.SmartPrinter
fun SmartPrinter.printField(field: Field, isImplementation: Boolean, override: Boolean, end: String) {
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
@@ -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.util.SmartPrinter
import java.io.File
private val COPYRIGHT = File("license/COPYRIGHT_HEADER.txt").readText()
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.compositeTransformResultType
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
import org.jetbrains.kotlin.fir.tree.generator.model.Element
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.fir.tree.generator.printer
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
import org.jetbrains.kotlin.fir.tree.generator.model.Element
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
import java.io.File
fun printVisitor(elements: List<Element>, generationPath: File): GeneratedFile {
@@ -6,6 +6,9 @@
package org.jetbrains.kotlin.fir.tree.generator.util
import org.jetbrains.kotlin.fir.tree.generator.model.Element
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
import org.jetbrains.kotlin.util.SmartPrinter
import java.io.File
fun Element.traverseParents(block: (Element) -> Unit) {
block(this)
@@ -20,4 +23,9 @@ operator fun <K, V, U> MutableMap<K, MutableMap<V, U>>.set(k1: K, k2: V, value:
operator fun <K, V, U> Map<K, Map<V, U>>.get(k1: K, k2: V): U {
return getValue(k1).getValue(k2)
}
}
inline fun File.writeToFileUsingSmartPrinterIfFileContentChanged(block: SmartPrinter.() -> Unit) {
val newText = buildString { SmartPrinter(this).block() }
GeneratorsFileUtil.writeFileIfContentChanged(this, newText, logNotChanged = false)
}
@@ -1,12 +1,10 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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.printer
package org.jetbrains.kotlin.util
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
import java.io.File
import java.lang.Appendable
class SmartPrinter(appendable: Appendable) {
@@ -49,8 +47,3 @@ inline fun SmartPrinter.withIndent(block: () -> Unit) {
block()
popIndent()
}
inline fun File.writeToFileUsingSmartPrinterIfFileContentChanged(block: SmartPrinter.() -> Unit) {
val newText = buildString { SmartPrinter(this).block() }
GeneratorsFileUtil.writeFileIfContentChanged(this, newText, logNotChanged = false)
}
@@ -5,11 +5,10 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.generator
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.util.SmartPrinter
import kotlin.reflect.KClass
import kotlin.reflect.KType
internal fun SmartPrinter.printTypeWithShortNames(type: KType) {
print((type.classifier as KClass<*>).simpleName!!)
if (type.arguments.isNotEmpty()) {
@@ -22,4 +21,4 @@ internal fun SmartPrinter.printTypeWithShortNames(type: KType) {
}
print(">")
}
}
}
@@ -9,13 +9,13 @@ import org.jetbrains.kotlin.fir.checkers.generator.collectClassNamesTo
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.DiagnosticList
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.DiagnosticListRenderer
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.writeToFileUsingSmartPrinterIfFileContentChanged
import org.jetbrains.kotlin.fir.tree.generator.util.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
import org.jetbrains.kotlin.util.SmartPrinter
import java.io.File
abstract class AbstractDiagnosticsDataClassRenderer : DiagnosticListRenderer() {
@@ -54,4 +54,4 @@ abstract class AbstractDiagnosticsDataClassRenderer : DiagnosticListRenderer() {
protected abstract fun SmartPrinter.render(diagnosticList: HLDiagnosticList, packageName: String)
protected abstract val defaultImports: Collection<String>
}
}
@@ -6,9 +6,9 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.generator.rendererrs
import org.jetbrains.kotlin.fir.checkers.generator.inBracketsWithIndent
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.withIndent
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.*
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
object FirDiagnosticToKtDiagnosticConverterRenderer : AbstractDiagnosticsDataClassRenderer() {
override fun SmartPrinter.render(diagnosticList: HLDiagnosticList, packageName: String) {
@@ -64,4 +64,4 @@ object FirDiagnosticToKtDiagnosticConverterRenderer : AbstractDiagnosticsDataCla
"org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic",
"org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors",
)
}
}
@@ -6,12 +6,11 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.generator.rendererrs
import org.jetbrains.kotlin.fir.checkers.generator.inBracketsWithIndent
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.fir.tree.generator.printer.withIndent
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.*
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.printTypeWithShortNames
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.checkers.generator.collectClassNamesTo
import org.jetbrains.kotlin.util.SmartPrinter
import org.jetbrains.kotlin.util.withIndent
object KtDiagnosticClassImplementationRenderer : AbstractDiagnosticsDataClassRenderer() {
override fun SmartPrinter.render(diagnosticList: HLDiagnosticList, packageName: String) {
@@ -63,4 +62,4 @@ object KtDiagnosticClassImplementationRenderer : AbstractDiagnosticsDataClassRen
"org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic",
"org.jetbrains.kotlin.idea.frontend.api.ValidityToken",
)
}
}
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.generator.rendererrs
import org.jetbrains.kotlin.fir.checkers.generator.collectClassNamesTo
import org.jetbrains.kotlin.fir.checkers.generator.inBracketsWithIndent
import org.jetbrains.kotlin.fir.tree.generator.printer.SmartPrinter
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.*
import org.jetbrains.kotlin.idea.frontend.api.fir.generator.printTypeWithShortNames
import org.jetbrains.kotlin.util.SmartPrinter
object KtDiagnosticClassRenderer : AbstractDiagnosticsDataClassRenderer() {
override fun SmartPrinter.render(diagnosticList: HLDiagnosticList, packageName: String) {
@@ -53,4 +53,4 @@ object KtDiagnosticClassRenderer : AbstractDiagnosticsDataClassRenderer() {
"org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnosticWithPsi",
"com.intellij.psi.PsiElement",
)
}
}