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)
}
}
}
@@ -1,56 +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.printer
import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
import java.io.File
import java.lang.Appendable
class SmartPrinter(appendable: Appendable) {
private val printer = org.jetbrains.kotlin.utils.Printer(appendable)
private var notFirstPrint: Boolean = false
fun print(vararg objects: Any) {
if (notFirstPrint) {
printer.printWithNoIndent(*objects)
} else {
printer.print(*objects)
}
notFirstPrint = true
}
fun println(vararg objects: Any) {
if (notFirstPrint) {
printer.printlnWithNoIndent(*objects)
} else {
printer.println(*objects)
}
notFirstPrint = false
}
fun pushIndent() {
printer.pushIndent()
}
fun popIndent() {
printer.popIndent()
}
fun getCurrentIndentInUnits() = printer.currentIndentLengthInUnits
fun getIndentUnit() = printer.indentUnitLength
}
inline fun SmartPrinter.withIndent(block: () -> Unit) {
pushIndent()
block()
popIndent()
}
inline fun File.writeToFileUsingSmartPrinterIfFileContentChanged(block: SmartPrinter.() -> Unit) {
val newText = buildString { SmartPrinter(this).block() }
GeneratorsFileUtil.writeFileIfContentChanged(this, newText, logNotChanged = false)
}
@@ -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)
}