[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
This commit is contained in:
Sergej Jaskiewicz
2024-02-20 16:19:11 +01:00
committed by Space Team
parent 7ab691fcef
commit be1d8e2894
2 changed files with 2 additions and 700 deletions
@@ -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<IrStatement>,
): 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,
)
}
@@ -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<FunctionParameter>()
var oldName = replacement.name
var returnType: TypeRef = replacement.element
var deprecationMessage: String? = null
val defaultValue = mutableMapOf<String, String>()
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(")")
}