From f061215ee92943718746a5c610ea5373f79dc113 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Fri, 16 Jun 2023 15:49:13 +0200 Subject: [PATCH] [IR] Reorder parameters in IrFactory#createFunctionWithLateBinding This is to prepare for IrFactory auto-generation (KT-59308). --- .../kotlin/ir/declarations/IrFactory.kt | 66 +++++++++++++++++-- .../ir/declarations/impl/IrFactoryImpl.kt | 28 ++++++-- .../declarations/impl/IrFactoryImplForJsIC.kt | 20 +++--- .../kotlin/ir/overrides/FakeOverrideCopier.kt | 19 +++--- 4 files changed, 103 insertions(+), 30 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt index 11f179f06ff..1679591c7b7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt @@ -114,16 +114,17 @@ interface IrFactory { origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - modality: Modality, - returnType: IrType, isInline: Boolean, - isExternal: Boolean, + isExpect: Boolean, + returnType: IrType, + modality: Modality, isTailrec: Boolean, isSuspend: Boolean, isOperator: Boolean, isInfix: Boolean, - isExpect: Boolean, - ): IrSimpleFunction + isExternal: Boolean = false, + isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE, + ): IrFunctionWithLateBinding fun createLocalDelegatedProperty( startOffset: Int, @@ -463,6 +464,61 @@ interface IrFactory { 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).", + replaceWith = ReplaceWith( + """createFunctionWithLateBinding( + startOffset = startOffset, + endOffset = endOffset, + origin = origin, + name = name, + visibility = visibility, + isInline = isInline, + isExpect = isExpect, + returnType = returnType, + modality = modality, + isTailrec = isTailrec, + isSuspend = isSuspend, + isOperator = isOperator, + isInfix = isInfix, + isExternal = isExternal, + )""", + ), + 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).", diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt index 7f2b325e22a..c73c39f49a7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt @@ -138,19 +138,33 @@ abstract class AbstractIrFactoryImpl : IrFactory { origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - modality: Modality, - returnType: IrType, isInline: Boolean, - isExternal: Boolean, + isExpect: Boolean, + returnType: IrType, + modality: Modality, isTailrec: Boolean, isSuspend: Boolean, isOperator: Boolean, isInfix: Boolean, - isExpect: Boolean, - ): IrSimpleFunction = + isExternal: Boolean, + isFakeOverride: Boolean, + ): IrFunctionWithLateBinding = IrFunctionWithLateBindingImpl( - startOffset, endOffset, origin, name, visibility, modality, returnType, - isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect, + startOffset = startOffset, + endOffset = endOffset, + origin = origin, + name = name, + visibility = visibility, + modality = modality, + returnType = returnType, + isInline = isInline, + isExternal = isExternal, + isTailrec = isTailrec, + isSuspend = isSuspend, + isOperator = isOperator, + isInfix = isInfix, + isExpect = isExpect, + isFakeOverride = isFakeOverride, factory = this ) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt index e971bc80c2f..861bfbcad5f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt @@ -206,31 +206,33 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - modality: Modality, - returnType: IrType, isInline: Boolean, - isExternal: Boolean, + isExpect: Boolean, + returnType: IrType, + modality: Modality, isTailrec: Boolean, isSuspend: Boolean, isOperator: Boolean, isInfix: Boolean, - isExpect: Boolean - ): IrSimpleFunction { + isExternal: Boolean, + isFakeOverride: Boolean, + ): IrFunctionWithLateBinding { return super.createFunctionWithLateBinding( startOffset, endOffset, origin, name, visibility, - modality, - returnType, isInline, - isExternal, + isExpect, + returnType, + modality, isTailrec, isSuspend, isOperator, isInfix, - isExpect, + isExternal, + isFakeOverride, ).register() } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt index 65ade07fae4..b06a09efe38 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt @@ -22,19 +22,20 @@ class FakeOverrideCopier( val customization = unimplementedOverridesStrategy.computeCustomization(declaration, parent) return declaration.factory.createFunctionWithLateBinding( - declaration.startOffset, declaration.endOffset, - customization.origin ?: IrDeclarationOrigin.FAKE_OVERRIDE, - symbolRenamer.getFunctionName(declaration.symbol), - declaration.visibility, - customization.modality ?: declaration.modality, - declaration.returnType, + startOffset = declaration.startOffset, + endOffset = declaration.endOffset, + origin = customization.origin ?: IrDeclarationOrigin.FAKE_OVERRIDE, + name = symbolRenamer.getFunctionName(declaration.symbol), + visibility = declaration.visibility, isInline = declaration.isInline, - isExternal = makeExternal, + isExpect = declaration.isExpect, + returnType = declaration.returnType, + modality = customization.modality ?: declaration.modality, isTailrec = declaration.isTailrec, isSuspend = declaration.isSuspend, - isExpect = declaration.isExpect, isOperator = declaration.isOperator, - isInfix = declaration.isInfix + isInfix = declaration.isInfix, + isExternal = makeExternal, ).apply { transformAnnotations(declaration) copyTypeParametersFrom(declaration)