From be1d8e2894e0aacbecc4035f5195729c207f544e Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Tue, 20 Feb 2024 16:19:11 +0100 Subject: [PATCH] [IR] Delete deprecated IrFactory methods We no longer care about binary compatibility wrt the Compose IDE plugin, see the comment in KTIJ-26314. ^KTIJ-26314 Fixed --- .../kotlin/ir/declarations/IrFactory.kt | 419 ------------------ .../ir/generator/print/FactoryPrinter.kt | 283 +----------- 2 files changed, 2 insertions(+), 700 deletions(-) diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFactory.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFactory.kt index 137e73ff671..50929765e76 100644 --- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFactory.kt +++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFactory.kt @@ -9,7 +9,6 @@ package org.jetbrains.kotlin.ir.declarations import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpressionBody @@ -218,422 +217,4 @@ interface IrFactory { endOffset: Int, expression: IrExpression, ): IrExpressionBody - - @Deprecated( - message = "This method was moved to an extension." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createBlockBody( - startOffset: Int, - endOffset: Int, - initializer: IrBlockBody.() -> Unit, - ): IrBlockBody = createBlockBody( - startOffset, - endOffset, - initializer, - ) - - @Deprecated( - message = "This method was moved to an extension." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createBlockBody( - startOffset: Int, - endOffset: Int, - statements: List, - ): IrBlockBody = createBlockBody( - startOffset, - endOffset, - statements, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createClass( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrClassSymbol, - name: Name, - kind: ClassKind, - visibility: DescriptorVisibility, - modality: Modality, - isCompanion: Boolean = false, - isInner: Boolean = false, - isData: Boolean = false, - isExternal: Boolean = false, - isValue: Boolean = false, - isExpect: Boolean = false, - isFun: Boolean = false, - source: SourceElement = SourceElement.NO_SOURCE, - ): IrClass = createClass( - startOffset, - endOffset, - origin, - name, - visibility, - symbol, - kind, - modality, - isExternal, - isCompanion, - isInner, - isData, - isValue, - isExpect, - isFun, - false, - source, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createConstructor( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrConstructorSymbol, - name: Name, - visibility: DescriptorVisibility, - returnType: IrType, - isInline: Boolean, - isExternal: Boolean, - isPrimary: Boolean, - isExpect: Boolean, - containerSource: DeserializedContainerSource? = null, - ): IrConstructor = createConstructor( - startOffset, - endOffset, - origin, - name, - visibility, - isInline, - isExpect, - returnType, - symbol, - isPrimary, - isExternal, - containerSource, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createEnumEntry( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrEnumEntrySymbol, - name: Name, - ): IrEnumEntry = createEnumEntry( - startOffset, - endOffset, - origin, - name, - symbol, - ) - - @Deprecated( - message = "This method was moved to an extension." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createExpressionBody(expression: IrExpression): IrExpressionBody = createExpressionBody(expression) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createField( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrFieldSymbol, - name: Name, - type: IrType, - visibility: DescriptorVisibility, - isFinal: Boolean, - isExternal: Boolean, - isStatic: Boolean, - ): IrField = createField( - startOffset, - endOffset, - origin, - name, - visibility, - symbol, - type, - isFinal, - isStatic, - isExternal, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createFunctionWithLateBinding( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - name: Name, - visibility: DescriptorVisibility, - modality: Modality, - returnType: IrType, - isInline: Boolean, - isExternal: Boolean, - isTailrec: Boolean, - isSuspend: Boolean, - isOperator: Boolean, - isInfix: Boolean, - isExpect: Boolean, - ): IrSimpleFunction = createFunctionWithLateBinding( - startOffset, - endOffset, - origin, - name, - visibility, - isInline, - isExpect, - returnType, - modality, - isTailrec, - isSuspend, - isOperator, - isInfix, - isExternal, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createLocalDelegatedProperty( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrLocalDelegatedPropertySymbol, - name: Name, - type: IrType, - isVar: Boolean, - ): IrLocalDelegatedProperty = createLocalDelegatedProperty( - startOffset, - endOffset, - origin, - name, - symbol, - type, - isVar, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createProperty( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrPropertySymbol, - name: Name, - visibility: DescriptorVisibility, - modality: Modality, - isVar: Boolean, - isConst: Boolean, - isLateinit: Boolean, - isDelegated: Boolean, - isExternal: Boolean, - isExpect: Boolean = false, - isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE, - containerSource: DeserializedContainerSource? = null, - ): IrProperty = createProperty( - startOffset, - endOffset, - origin, - name, - visibility, - modality, - symbol, - isVar, - isConst, - isLateinit, - isDelegated, - isExternal, - containerSource, - isExpect, - isFakeOverride, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createPropertyWithLateBinding( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - name: Name, - visibility: DescriptorVisibility, - modality: Modality, - isVar: Boolean, - isConst: Boolean, - isLateinit: Boolean, - isDelegated: Boolean, - isExternal: Boolean, - isExpect: Boolean, - ): IrProperty = createPropertyWithLateBinding( - startOffset, - endOffset, - origin, - name, - visibility, - modality, - isVar, - isConst, - isLateinit, - isDelegated, - isExternal, - isExpect, - ) - - @Deprecated( - message = "The method has been renamed, and its parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createFunction( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrSimpleFunctionSymbol, - name: Name, - visibility: DescriptorVisibility, - modality: Modality, - returnType: IrType, - isInline: Boolean, - isExternal: Boolean, - isTailrec: Boolean, - isSuspend: Boolean, - isOperator: Boolean, - isInfix: Boolean, - isExpect: Boolean, - isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE, - containerSource: DeserializedContainerSource? = null, - ): IrSimpleFunction = createSimpleFunction( - startOffset, - endOffset, - origin, - name, - visibility, - isInline, - isExpect, - returnType, - modality, - symbol, - isTailrec, - isSuspend, - isOperator, - isInfix, - isExternal, - containerSource, - isFakeOverride, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createTypeAlias( - startOffset: Int, - endOffset: Int, - symbol: IrTypeAliasSymbol, - name: Name, - visibility: DescriptorVisibility, - expandedType: IrType, - isActual: Boolean, - origin: IrDeclarationOrigin, - ): IrTypeAlias = createTypeAlias( - startOffset, - endOffset, - origin, - name, - visibility, - symbol, - isActual, - expandedType, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createTypeParameter( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrTypeParameterSymbol, - name: Name, - index: Int, - isReified: Boolean, - variance: Variance, - ): IrTypeParameter = createTypeParameter( - startOffset, - endOffset, - origin, - name, - symbol, - variance, - index, - isReified, - ) - - @Deprecated( - message = "The method's parameters were reordered." + - " This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).", - level = DeprecationLevel.HIDDEN, - ) - fun createValueParameter( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrValueParameterSymbol, - name: Name, - index: Int, - type: IrType, - varargElementType: IrType?, - isCrossinline: Boolean, - isNoinline: Boolean, - isHidden: Boolean, - isAssignable: Boolean, - ): IrValueParameter = createValueParameter( - startOffset, - endOffset, - origin, - name, - type, - isAssignable, - symbol, - index, - varargElementType, - isCrossinline, - isNoinline, - isHidden, - ) } diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/FactoryPrinter.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/FactoryPrinter.kt index ca3439c32e5..bace47eb821 100644 --- a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/FactoryPrinter.kt +++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/print/FactoryPrinter.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.ir.generator.print -import org.jetbrains.kotlin.generators.tree.* +import org.jetbrains.kotlin.generators.tree.ImportCollector import org.jetbrains.kotlin.generators.tree.printer.FunctionParameter import org.jetbrains.kotlin.generators.tree.printer.GeneratedFile import org.jetbrains.kotlin.generators.tree.printer.printFunctionDeclaration import org.jetbrains.kotlin.generators.tree.printer.printGeneratedType -import org.jetbrains.kotlin.ir.generator.IrTree +import org.jetbrains.kotlin.generators.tree.render import org.jetbrains.kotlin.ir.generator.TREE_GENERATOR_README import org.jetbrains.kotlin.ir.generator.irFactoryType import org.jetbrains.kotlin.ir.generator.model.Element @@ -38,215 +38,6 @@ internal fun printFactory(generationPath: File, model: Model): GeneratedFile = p .map(::FactoryMethod) factoryMethods.forEach { printFactoryMethod(it) } - - fun replacement(name: String) = factoryMethods.find { it.name == name } ?: error("Method '$name' not found") - - addDeprecatedFunction( - replacement("createBlockBody") - .addParameter( - "initializer", - Lambda(receiver = IrTree.blockBody, returnType = StandardTypes.unit), - ), - ) { - deprecationMessage = "This method was moved to an extension." - parameter("startOffset") - parameter("endOffset") - parameter("initializer") - } - - addDeprecatedFunction( - replacement("createBlockBody") - .addParameter( - "statements", - StandardTypes.list.withArgs(IrTree.statement), - ), - ) { - deprecationMessage = "This method was moved to an extension." - parameter("startOffset") - parameter("endOffset") - parameter("statements") - } - - addDeprecatedFunction(replacement("createClass")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("kind") - parameter("visibility") - parameter("modality") - parameter("isCompanion") - parameter("isInner") - parameter("isData") - parameter("isExternal") - parameter("isValue") - parameter("isExpect") - parameter("isFun") - parameter("source") - defaultValue["hasEnumEntries"] = "false" - } - - addDeprecatedFunction(replacement("createConstructor")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("visibility") - parameter("returnType") - parameter("isInline") - parameter("isExternal", removeDefaultValue = true) - parameter("isPrimary") - parameter("isExpect") - parameter("containerSource") - } - - addDeprecatedFunction(replacement("createEnumEntry")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - } - - addDeprecatedFunction(replacement("createExpressionBody")) { - deprecationMessage = "This method was moved to an extension." - parameter("expression") - } - - addDeprecatedFunction(replacement("createField")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("type") - parameter("visibility") - parameter("isFinal") - parameter("isExternal", removeDefaultValue = true) - parameter("isStatic") - } - - addDeprecatedFunction(replacement("createFunctionWithLateBinding")) { - returnType = IrTree.simpleFunction - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("name") - parameter("visibility") - parameter("modality") - parameter("returnType") - parameter("isInline") - parameter("isExternal", removeDefaultValue = true) - parameter("isTailrec") - parameter("isSuspend") - parameter("isOperator") - parameter("isInfix") - parameter("isExpect") - } - - addDeprecatedFunction(replacement("createLocalDelegatedProperty")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("type") - parameter("isVar") - } - - addDeprecatedFunction(replacement("createProperty")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("visibility") - parameter("modality") - parameter("isVar") - parameter("isConst") - parameter("isLateinit") - parameter("isDelegated") - parameter("isExternal", removeDefaultValue = true) - parameter("isExpect") - parameter("isFakeOverride") - parameter("containerSource") - } - - addDeprecatedFunction(replacement("createPropertyWithLateBinding")) { - returnType = IrTree.property - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("name") - parameter("visibility") - parameter("modality") - parameter("isVar") - parameter("isConst") - parameter("isLateinit") - parameter("isDelegated") - parameter("isExternal", removeDefaultValue = true) - parameter("isExpect", removeDefaultValue = true) - } - - addDeprecatedFunction(replacement("createSimpleFunction")) { - oldName = "createFunction" - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("visibility") - parameter("modality") - parameter("returnType") - parameter("isInline") - parameter("isExternal", removeDefaultValue = true) - parameter("isTailrec") - parameter("isSuspend") - parameter("isOperator") - parameter("isInfix") - parameter("isExpect") - parameter("isFakeOverride") - parameter("containerSource") - } - - addDeprecatedFunction(replacement("createTypeAlias")) { - parameter("startOffset") - parameter("endOffset") - parameter("symbol") - parameter("name") - parameter("visibility") - parameter("expandedType") - parameter("isActual") - parameter("origin") - } - - addDeprecatedFunction(replacement("createTypeParameter")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("index") - parameter("isReified") - parameter("variance") - } - - addDeprecatedFunction(replacement("createValueParameter")) { - parameter("startOffset") - parameter("endOffset") - parameter("origin") - parameter("symbol") - parameter("name") - parameter("index") - parameter("type") - parameter("varargElementType") - parameter("isCrossinline") - parameter("isNoinline") - parameter("isHidden") - parameter("isAssignable") - } } println("}") } @@ -264,11 +55,6 @@ private class FactoryMethod(val element: Element) { } .sortedBy { it.defaultValue != null } // All parameters with default values must go last .toMutableList() - - fun addParameter(name: String, type: TypeRef): FactoryMethod { - parameters.add(FunctionParameter(name, type)) - return this - } } private const val MAX_FUNCTION_PARAMETERS_ON_ONE_LINE = 2 @@ -285,68 +71,3 @@ private fun SmartPrinter.printFactoryMethod(factoryMethod: FactoryMethod) { ) println() } - -private class DeprecatedFunctionBuilder(private val replacement: FactoryMethod) { - val deprecatedFunctionParameters = mutableListOf() - var oldName = replacement.name - var returnType: TypeRef = replacement.element - var deprecationMessage: String? = null - val defaultValue = mutableMapOf() - - fun parameter(name: String, removeDefaultValue: Boolean = false) { - val replacementParameter = - replacement.parameters.find { it.name == name } ?: error("Parameter '$name' not found in $replacement") - deprecatedFunctionParameters.add(if (removeDefaultValue) replacementParameter.copy(defaultValue = null) else replacementParameter) - } -} - -context(ImportCollector) -private fun SmartPrinter.addDeprecatedFunction( - replacement: FactoryMethod, - build: DeprecatedFunctionBuilder.() -> Unit -) { - val builder = DeprecatedFunctionBuilder(replacement) - builder.build() - - val message = builder.deprecationMessage ?: if (builder.oldName != replacement.name) { - "The method has been renamed, and its parameters were reordered." - } else { - "The method's parameters were reordered." - } - - println() - println("@Deprecated(") - withIndent { - println("message = \"", message, "\" +") - println(" \" This variant of the method will be removed when the 2024.2 IntelliJ platform is shipped (see KTIJ-26314).\",") - println("level = DeprecationLevel.HIDDEN,") - } - println(")") - val allParametersOnSeparateLines = builder.deprecatedFunctionParameters.size > MAX_FUNCTION_PARAMETERS_ON_ONE_LINE - printFunctionDeclaration( - name = builder.oldName, - parameters = builder.deprecatedFunctionParameters, - returnType = builder.returnType, - typeParameters = replacement.element.params, - allParametersOnSeparateLines = allParametersOnSeparateLines, - ) - print(" = ", replacement.name, "(") - - val renderedParameters = replacement.parameters.mapNotNull { parameter -> - if (builder.deprecatedFunctionParameters.any { it.name == parameter.name }) { - parameter.name - } else { - builder.defaultValue[parameter.name] - } - } - - if (allParametersOnSeparateLines) { - println() - withIndent { - renderedParameters.forEach { println(it, ",") } - } - } else { - print(renderedParameters.joinToString()) - } - println(")") -}