[IR] Autogenerate IrExternalPackageFragmentImpl

#KT-65773 In Progress
This commit is contained in:
Wojciech Litewka
2024-03-01 14:48:51 +01:00
committed by Space Team
parent f92670024e
commit 2ed0ffd123
5 changed files with 60 additions and 35 deletions
@@ -3,6 +3,11 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
// This file was generated automatically. See compiler/ir/ir.tree/tree-generator/ReadMe.md.
// DO NOT MODIFY IT MANUALLY.
@file:Suppress("DuplicatedCode")
package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
@@ -23,22 +28,19 @@ class IrExternalPackageFragmentImpl(
override val endOffset: Int
get() = UNDEFINED_OFFSET
init {
symbol.bind(this)
}
@UnsafeDuringIrConstructionAPI
override val declarations: MutableList<IrDeclaration> = ArrayList()
companion object {
@Deprecated(
message = "Use org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment instead",
replaceWith = ReplaceWith(
"createEmptyExternalPackageFragment",
"org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment"
)
replaceWith = ReplaceWith("createEmptyExternalPackageFragment", "org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment")
)
fun createEmptyExternalPackageFragment(module: ModuleDescriptor, fqName: FqName): IrExternalPackageFragment =
org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment(module, fqName)
}
init {
symbol.bind(this)
}
}
@@ -103,9 +103,8 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() {
impl(moduleFragment) {
implementation.putImplementationOptInInConstructor = false
additionalImports(ArbitraryImportable(Packages.tree, "UNDEFINED_OFFSET"))
default("startOffset", "UNDEFINED_OFFSET", withGetter = true)
default("endOffset", "UNDEFINED_OFFSET", withGetter = true)
default("startOffset", undefinedOffset(), withGetter = true)
default("endOffset", undefinedOffset(), withGetter = true)
default("name", "descriptor.name", withGetter = true)
}
@@ -120,7 +119,29 @@ object ImplementationConfigurator : AbstractIrTreeImplementationConfigurator() {
}
impl(externalPackageFragment) {
implementation.doPrint = false
implementation.putImplementationOptInInConstructor = false
implementation.constructorParameterOrderOverride = listOf("symbol", "packageFqName")
additionalImports(
ArbitraryImportable(Packages.descriptors, "ModuleDescriptor"),
)
default("startOffset", undefinedOffset(), withGetter = true)
default("endOffset", undefinedOffset(), withGetter = true)
implementation.generationCallback = {
println()
print()
println(
"""
companion object {
@Deprecated(
message = "Use org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment instead",
replaceWith = ReplaceWith("createEmptyExternalPackageFragment", "org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment")
)
fun createEmptyExternalPackageFragment(module: ModuleDescriptor, fqName: FqName): IrExternalPackageFragment =
org.jetbrains.kotlin.ir.declarations.createEmptyExternalPackageFragment(module, fqName)
}
""".replaceIndent(currentIndent)
)
}
}
impl(file) {
@@ -1,15 +1,22 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 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.ir.generator.config
import org.jetbrains.kotlin.generators.tree.ArbitraryImportable
import org.jetbrains.kotlin.generators.tree.config.AbstractImplementationConfigurator
import org.jetbrains.kotlin.ir.generator.Packages
import org.jetbrains.kotlin.ir.generator.model.Element
import org.jetbrains.kotlin.ir.generator.model.Field
import org.jetbrains.kotlin.ir.generator.model.Implementation
abstract class AbstractIrTreeImplementationConfigurator : AbstractImplementationConfigurator<Implementation, Element, Field>() {
override fun createImplementation(element: Element, name: String?) = Implementation(element, name)
protected fun ImplementationContext.undefinedOffset(): String =
"UNDEFINED_OFFSET".also {
additionalImports(ArbitraryImportable(Packages.tree, it))
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 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.
*/
@@ -9,6 +9,10 @@ package org.jetbrains.kotlin.utils
* A printer that is suitable for printing text with indentation.
*/
interface IndentingPrinter {
/**
* The current indentation.
*/
val currentIndent: String
/**
* The current indentation level. Basically, this is the number of [pushIndent] calls that don't yet have a matching [popIndent] call.
@@ -1,17 +1,6 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Copyright 2010-2024 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.utils
@@ -24,8 +13,10 @@ open class Printer private constructor(
private val out: Appendable,
private val maxBlankLines: Int,
private val indentUnit: String,
private var indent: String
indent: String,
) : IndentingPrinter {
final override var currentIndent = indent
private set
private var blankLineCountIncludingCurrent = 0
private var withholdIndentOnce = false
private var length = 0
@@ -40,7 +31,7 @@ open class Printer private constructor(
indent = "",
)
constructor(out: Appendable, parent: Printer) : this(out, parent.maxBlankLines, parent.indentUnit, parent.indent)
constructor(out: Appendable, parent: Printer) : this(out, parent.maxBlankLines, parent.indentUnit, parent.currentIndent)
private fun append(o: Any?) {
try {
@@ -76,7 +67,7 @@ open class Printer private constructor(
}
fun printIndent() {
append(indent)
append(currentIndent)
}
fun printWithNoIndent(vararg objects: Any?): Printer {
@@ -99,13 +90,13 @@ open class Printer private constructor(
}
override fun pushIndent(): Printer {
indent += indentUnit
currentIndent += indentUnit
return this
}
override fun popIndent(): Printer {
check(indent.length >= indentUnit.length) { "No indentation to pop" }
indent = indent.substring(indentUnit.length)
check(currentIndent.length >= indentUnit.length) { "No indentation to pop" }
currentIndent = currentIndent.substring(indentUnit.length)
return this
}
@@ -138,14 +129,14 @@ open class Printer private constructor(
}
override val currentIndentLengthInUnits: Int
get() = indent.length / indentUnit.length
get() = currentIndent.length / indentUnit.length
override val indentUnitLength: Int
get() = indentUnit.length
companion object {
private const val DEFAULT_INDENTATION_UNIT = " "
const val TWO_SPACE_INDENT = " ";
const val TWO_SPACE_INDENT = " "
@JvmField
val LINE_SEPARATOR: String = System.getProperty("line.separator")