From 8db1c3611b83dbcff6d3569fb3ce1aaf905803bd Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 22 Jul 2020 15:28:27 +0200 Subject: [PATCH] IR: introduce abstract class IrDeclarationBase The main purpose of this class is to improve performance of IR visitors and transformers. `IrElementVisitor.visitDeclaration` now takes IrDeclarationBase as a parameter, and therefore the call to `accept` there is now a virtual class call, instead of an interface call. --- .../fir/backend/evaluate/IrConstTransformer.kt | 17 ++++++++++------- .../backend/common/CheckIrElementVisitor.kt | 2 +- .../kotlin/backend/common/IrValidator.kt | 2 +- .../jetbrains/kotlin/backend/common/Lower.kt | 2 +- .../kotlin/backend/common/ir/IrInlineUtils.kt | 2 +- .../kotlin/backend/common/ir/IrUtils.kt | 2 +- .../lower/InlineClassDeclarationLowering.kt | 4 ++-- .../common/lower/LocalDeclarationsLowering.kt | 2 +- .../common/lower/SharedVariablesLowering.kt | 2 +- .../common/lower/StringConcatenationLowering.kt | 9 +++------ .../backend/common/phaser/DumperVerifier.kt | 2 +- .../org/jetbrains/kotlin/ir/backend/js/Dce.kt | 9 ++++++--- ...S6AddInternalParametersToConstructorPhase.kt | 2 +- .../MoveBodilessDeclarationsToSeparatePlace.kt | 8 ++++---- .../backend/js/lower/MultipleCatchesLowering.kt | 8 +++++--- .../js/lower/PrimaryConstructorLowering.kt | 5 +++-- .../ir/backend/js/lower/TypeOperatorLowering.kt | 5 +++-- .../kotlin/ir/backend/js/utils/NameTables.kt | 2 +- .../ir/backend/js/utils/StableNamesCollector.kt | 4 ++-- .../jvm/lower/InventNamesForLocalClasses.kt | 2 +- .../JvmArgumentNullabilityAssertionsLowering.kt | 4 ++-- .../psi2ir/generators/AnnotationGenerator.kt | 7 ++----- .../ir/declarations/IrAnonymousInitializer.kt | 2 +- .../jetbrains/kotlin/ir/declarations/IrClass.kt | 2 +- .../kotlin/ir/declarations/IrDeclaration.kt | 2 ++ .../kotlin/ir/declarations/IrEnumEntry.kt | 2 +- .../ir/declarations/IrErrorDeclaration.kt | 2 +- .../jetbrains/kotlin/ir/declarations/IrField.kt | 1 + .../kotlin/ir/declarations/IrFunction.kt | 1 + .../ir/declarations/IrLocalDelegatedProperty.kt | 1 + .../kotlin/ir/declarations/IrProperty.kt | 2 +- .../kotlin/ir/declarations/IrScript.kt | 3 ++- .../kotlin/ir/declarations/IrTypeAlias.kt | 1 + .../kotlin/ir/declarations/IrTypeParameter.kt | 2 +- .../ir/declarations/IrValueDeclaration.kt | 2 +- .../kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt | 2 +- .../kotlin/ir/util/PatchDeclarationParents.kt | 6 +++--- .../jetbrains/kotlin/ir/util/RenderIrElement.kt | 4 ++-- .../kotlin/ir/visitors/IrElementTransformer.kt | 2 +- .../ir/visitors/IrElementTransformerVoid.kt | 4 ++-- .../kotlin/ir/visitors/IrElementVisitor.kt | 2 +- .../kotlin/ir/visitors/IrElementVisitorVoid.kt | 4 ++-- .../serialization/mangle/ManglerChecker.kt | 6 +++--- .../mangle/ir/IrExportCheckerVisitor.kt | 2 +- .../kotlin/ir/AbstractIrTextTestCase.kt | 2 +- 45 files changed, 85 insertions(+), 74 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/evaluate/IrConstTransformer.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/evaluate/IrConstTransformer.kt index f2632460744..03411984be8 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/evaluate/IrConstTransformer.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/evaluate/IrConstTransformer.kt @@ -5,15 +5,18 @@ package org.jetbrains.kotlin.fir.backend.evaluate +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer +import org.jetbrains.kotlin.ir.declarations.IrField +import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase +import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns +import org.jetbrains.kotlin.ir.expressions.* +import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl import org.jetbrains.kotlin.ir.interpreter.EvaluationMode import org.jetbrains.kotlin.ir.interpreter.IrCompileTimeChecker import org.jetbrains.kotlin.ir.interpreter.IrInterpreter import org.jetbrains.kotlin.ir.interpreter.toIrConst -import org.jetbrains.kotlin.ir.IrStatement -import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns -import org.jetbrains.kotlin.ir.expressions.* -import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid @@ -51,7 +54,7 @@ class IrConstTransformer(irBuiltIns: IrBuiltIns) : IrElementTransformerVoid() { return declaration } - override fun visitDeclaration(declaration: IrDeclaration): IrStatement { + override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement { transformAnnotations(declaration) return super.visitDeclaration(declaration) } @@ -98,4 +101,4 @@ class IrConstTransformer(irBuiltIns: IrBuiltIns) : IrElementTransformerVoid() { if (type.isArray()) return this.convertToConstIfPossible((type as IrSimpleType).arguments.single().typeOrNull!!) return this.value.toIrConst(type, this.startOffset, this.endOffset) } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt index 218aa00e86e..d03fc2db784 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt @@ -312,7 +312,7 @@ class CheckIrElementVisitor( expression.symbol.ensureBound(expression) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { super.visitDeclaration(declaration) if (declaration is IrOverridableDeclaration<*>) { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt index 688d2aa0dbc..e009d4e6357 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrValidator.kt @@ -98,7 +98,7 @@ object CheckDeclarationParentsVisitor : IrElementVisitor) { return super.visitDeclaration(declaration) } @@ -120,4 +117,4 @@ private class StringConcatenationTransformer(val lower: StringConcatenationLower return this@with } } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt index 04fe4e846e5..092df66b043 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/phaser/DumperVerifier.kt @@ -70,7 +70,7 @@ fun dumpIrElement(actionState: ActionState, data: IrElement, context: Any?): Str element.acceptChildrenVoid(this) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { if (declaration is IrDeclarationWithName && FqName(dumpOnlyFqName) == declaration.fqNameWhenAvailable) { dumpText += declaration.dump() } else { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/Dce.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/Dce.kt index cce75cf44f4..296c4c85a3c 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/Dce.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/Dce.kt @@ -12,7 +12,10 @@ import org.jetbrains.kotlin.ir.backend.js.utils.* import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol -import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.types.classOrNull +import org.jetbrains.kotlin.ir.types.classifierOrFail +import org.jetbrains.kotlin.ir.types.classifierOrNull +import org.jetbrains.kotlin.ir.types.getClass import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid @@ -184,7 +187,7 @@ fun usefulDeclarations(roots: Iterable, context: JsIrBackendConte // Skip } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { if (declaration !== it) declaration.enqueue(it, "roots' nested declaration") super.visitDeclaration(declaration) @@ -437,4 +440,4 @@ private fun Collection.filterDescendantsOf(bases: Collection): } return this.filter { overridesAnyBase(it) } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddInternalParametersToConstructorPhase.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddInternalParametersToConstructorPhase.kt index b4dd9231ba0..6e58e3c7d5b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddInternalParametersToConstructorPhase.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddInternalParametersToConstructorPhase.kt @@ -88,7 +88,7 @@ class ES6AddInternalParametersToConstructorPhase(val context: JsIrBackendContext context.mapping.constructorToInitFunction[constructor] = initFunction initFunction.transformChildren(object : IrElementTransformerVoid() { - override fun visitDeclaration(declaration: IrDeclaration): IrStatement { + override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement { declaration.parent = initFunction return declaration } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt index 8e19cc1abc9..13b3b76c899 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MoveBodilessDeclarationsToSeparatePlace.kt @@ -8,19 +8,19 @@ package org.jetbrains.kotlin.ir.backend.js.lower import org.jetbrains.kotlin.backend.common.DeclarationTransformer import org.jetbrains.kotlin.backend.common.ir.addChild import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.utils.getJsModule import org.jetbrains.kotlin.ir.backend.js.utils.getJsQualifier import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.symbols.IrFileSymbol +import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid -import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName private val BODILESS_BUILTIN_CLASSES = listOf( @@ -129,10 +129,10 @@ class MoveBodilessDeclarationsToSeparatePlaceLowering(private val context: JsIrB element.acceptChildrenVoid(this) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { context.externalDeclarations.add(declaration) super.visitDeclaration(declaration) } }, null) } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MultipleCatchesLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MultipleCatchesLowering.kt index 85ab403c424..f5117107a2b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MultipleCatchesLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/MultipleCatchesLowering.kt @@ -11,13 +11,15 @@ import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrBranchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrCatchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrElseBranchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrTryImpl import org.jetbrains.kotlin.ir.symbols.IrValueSymbol -import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.types.IrDynamicType +import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementTransformer /** @@ -51,7 +53,7 @@ class MultipleCatchesLowering(private val context: JsIrBackendContext) : BodyLow override fun lower(irBody: IrBody, container: IrDeclaration) { irBody.transform(object : IrElementTransformer { - override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent): IrStatement { + override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent): IrStatement { val parent = (declaration as? IrDeclarationParent) ?: data return super.visitDeclaration(declaration, parent) } @@ -118,4 +120,4 @@ class MultipleCatchesLowering(private val context: JsIrBackendContext) : BodyLow }, container as? IrDeclarationParent ?: container.parent) } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt index 7654aa55eec..46bc3f31900 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.backend.js.lower import org.jetbrains.kotlin.backend.common.BodyLoweringPass import org.jetbrains.kotlin.backend.common.DeclarationTransformer import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext import org.jetbrains.kotlin.ir.builders.declarations.addConstructor import org.jetbrains.kotlin.ir.declarations.* @@ -67,7 +68,7 @@ class DelegateToSyntheticPrimaryConstructor(context: JsCommonBackendContext) : B if (container is IrConstructor && !container.isPrimary) { container.parentAsClass.syntheticPrimaryConstructor?.let { primary -> val initializeTransformer = object : IrElementTransformerVoid() { - override fun visitDeclaration(declaration: IrDeclaration) = declaration // optimize visiting + override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement = declaration // optimize visiting override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall) = expression.run { IrDelegatingConstructorCallImpl( @@ -83,4 +84,4 @@ class DelegateToSyntheticPrimaryConstructor(context: JsCommonBackendContext) : B } } } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt index 9afcb1b9c9a..9917cb4384d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/TypeOperatorLowering.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.backend.js.utils.isPure import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl @@ -64,7 +65,7 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : BodyLoweringPass { override fun lower(irBody: IrBody, container: IrDeclaration) { irBody.transformChildren(object : IrElementTransformer { - override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent) = + override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent) = super.visitDeclaration(declaration, declaration as? IrDeclarationParent ?: data) override fun visitTypeOperator(expression: IrTypeOperatorCall, data: IrDeclarationParent): IrExpression { @@ -374,4 +375,4 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : BodyLoweringPass { } }, container as? IrDeclarationParent ?: container.parent) } -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt index a94b018bc41..f90504251e3 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt @@ -372,7 +372,7 @@ class NameTables( element.acceptChildrenVoid(this) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { if (declaration is IrDeclarationWithName && declaration is IrSymbolOwner) { table.declareFreshName(declaration, declaration.name.asString()) } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/StableNamesCollector.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/StableNamesCollector.kt index 835acdb6f7e..5699b3bc3c7 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/StableNamesCollector.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/StableNamesCollector.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.ir.backend.js.utils import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrConstructor -import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.util.isPropertyAccessor @@ -30,7 +30,7 @@ class StableNamesCollector : IrElementVisitorVoid { element.acceptChildrenVoid(this) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { super.visitDeclaration(declaration) if (declaration !is IrDeclarationWithName) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt index ffb9d86f3af..fa0028a8e4b 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/InventNamesForLocalClasses.kt @@ -86,7 +86,7 @@ class InventNamesForLocalClasses(private val context: JvmBackendContext) : FileL declaration.acceptChildren(this, data.makeLocal()) } - override fun visitDeclaration(declaration: IrDeclaration, data: Data) { + override fun visitDeclaration(declaration: IrDeclarationBase, data: Data) { if (declaration !is IrDeclarationWithName) { declaration.acceptChildren(this, data) return diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmArgumentNullabilityAssertionsLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmArgumentNullabilityAssertionsLowering.kt index f8f71e9709a..b51b85b4217 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmArgumentNullabilityAssertionsLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmArgumentNullabilityAssertionsLowering.kt @@ -11,8 +11,8 @@ import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement -import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.visitors.IrElementTransformer @@ -43,7 +43,7 @@ private class JvmArgumentNullabilityAssertionsLowering(context: JvmBackendContex override fun visitElement(element: IrElement, data: AssertionScope): IrElement = super.visitElement(element, AssertionScope.Enabled) - override fun visitDeclaration(declaration: IrDeclaration, data: AssertionScope): IrStatement = + override fun visitDeclaration(declaration: IrDeclarationBase, data: AssertionScope): IrStatement = super.visitDeclaration(declaration, AssertionScope.Enabled) override fun visitTypeOperator(expression: IrTypeOperatorCall, data: AssertionScope): IrExpression = diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt index 8e11e3ab112..0e81af581d1 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt @@ -6,10 +6,7 @@ package org.jetbrains.kotlin.psi2ir.generators import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrField -import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid @@ -21,7 +18,7 @@ class AnnotationGenerator(context: GeneratorContext) : IrElementVisitorVoid { element.acceptChildrenVoid(this) } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { if (declaration is IrTypeParametersContainer) { typeTranslator.enterScope(declaration) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt index f60cd81f169..cffadea14d9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor -abstract class IrAnonymousInitializer : IrSymbolDeclaration { +abstract class IrAnonymousInitializer : IrDeclarationBase(), IrSymbolDeclaration { @ObsoleteDescriptorBasedAPI abstract override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt index b9eb2f04b6e..0b52383502a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrClass : - IrSymbolDeclaration, IrDeclarationWithName, IrDeclarationWithVisibility, + IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationContainer, IrTypeParametersContainer, IrAttributeContainer, IrMetadataSourceOwner { @ObsoleteDescriptorBasedAPI diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt index 93b656a8d19..0667e64bec7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt @@ -43,7 +43,9 @@ interface IrDeclaration : IrStatement, IrMutableAnnotationContainer { var parent: IrDeclarationParent val factory: IrFactory +} +abstract class IrDeclarationBase : IrDeclaration { override fun transform(transformer: IrElementTransformer, data: D): IrStatement = accept(transformer, data) as IrStatement } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt index 3cd35d51a6f..761bf1251a5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor -abstract class IrEnumEntry : IrSymbolDeclaration, IrDeclarationWithName { +abstract class IrEnumEntry : IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationWithName { @ObsoleteDescriptorBasedAPI abstract override val descriptor: ClassDescriptor diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt index e8966ea1ba6..08f8140d167 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.ir.declarations import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor -abstract class IrErrorDeclaration : IrDeclaration { +abstract class IrErrorDeclaration : IrDeclarationBase() { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitErrorDeclaration(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt index 4a762b44c6d..29df37d5895 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrField : + IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt index 6b011116ca3..21ee57791ac 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrFunction : + IrDeclarationBase(), IrDeclarationWithName, IrDeclarationWithVisibility, IrTypeParametersContainer, IrSymbolOwner, IrDeclarationParent, IrReturnTarget, IrMetadataSourceOwner { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt index a2cf1b3e78d..da6ba4418dd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrLocalDelegatedProperty : + IrDeclarationBase(), IrDeclarationWithName, IrSymbolOwner, IrMetadataSourceOwner { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt index 6689ea0ec59..8a472aa06be 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor -abstract class IrProperty : IrOverridableMember, IrMetadataSourceOwner { +abstract class IrProperty : IrDeclarationBase(), IrOverridableMember, IrMetadataSourceOwner { @ObsoleteDescriptorBasedAPI abstract override val descriptor: PropertyDescriptor abstract override val symbol: IrPropertySymbol diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt index 6591891490e..7a05b835510 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt @@ -10,7 +10,8 @@ import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol //TODO: make IrScript as IrPackageFragment, because script is used as a file, not as a class //NOTE: declarations and statements stored separately -abstract class IrScript : IrSymbolDeclaration, IrDeclarationContainer, IrDeclarationWithName, IrDeclarationParent { +abstract class IrScript : + IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationContainer, IrDeclarationWithName, IrDeclarationParent { abstract val statements: MutableList // NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt index 392575f0687..d24458190f3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrTypeAlias : + IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationWithName, IrDeclarationWithVisibility, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt index 1c610665866..2c7c8e05d50 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.types.Variance -abstract class IrTypeParameter : IrSymbolDeclaration, IrDeclarationWithName { +abstract class IrTypeParameter : IrDeclarationBase(), IrSymbolDeclaration, IrDeclarationWithName { @ObsoleteDescriptorBasedAPI abstract override val descriptor: TypeParameterDescriptor diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt index 1b235c48e25..0a2275380ef 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.symbols.IrValueSymbol import org.jetbrains.kotlin.ir.types.IrType -abstract class IrValueDeclaration : IrDeclarationWithName, IrSymbolOwner { +abstract class IrValueDeclaration : IrDeclarationBase(), IrDeclarationWithName, IrSymbolOwner { @ObsoleteDescriptorBasedAPI abstract override val descriptor: ValueDescriptor diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 68043a29d8f..f3fe88aaf76 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -109,7 +109,7 @@ open class DeepCopyIrTreeWithSymbols( declaration.transformDeclarationsTo(this) } - override fun visitDeclaration(declaration: IrDeclaration): IrStatement = + override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement = throw IllegalArgumentException("Unsupported declaration type: $declaration") override fun visitScript(declaration: IrScript): IrStatement { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/PatchDeclarationParents.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/PatchDeclarationParents.kt index 3cb11e459b0..4bfa8916e3e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/PatchDeclarationParents.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/PatchDeclarationParents.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrPackageFragment -import org.jetbrains.kotlin.ir.declarations.IrProperty +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid @@ -39,7 +39,7 @@ class PatchDeclarationParentsVisitor() : IrElementVisitorVoid { declarationParentsStack.pop() } - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { patchParent(declaration) if (declaration is IrDeclarationParent) { @@ -56,4 +56,4 @@ class PatchDeclarationParentsVisitor() : IrElementVisitorVoid { private fun patchParent(declaration: IrDeclaration) { declaration.parent = declarationParentsStack.peekFirst() } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt index d6c35894f02..d4ad3307ae0 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt @@ -19,8 +19,8 @@ package org.jetbrains.kotlin.ir.util import com.intellij.openapi.util.text.StringUtil import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol @@ -340,7 +340,7 @@ class RenderIrElementVisitor(private val normalizeNames: Boolean = false) : IrEl override fun visitElement(element: IrElement, data: Nothing?): String = "?ELEMENT? ${element::class.java.simpleName} $element" - override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): String = + override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): String = "?DECLARATION? ${declaration::class.java.simpleName} $declaration" override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt index ad1ebcc0899..090a4396ef4 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt @@ -34,7 +34,7 @@ interface IrElementTransformer : IrElementVisitor { override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D): IrExternalPackageFragment = declaration.also { it.transformChildren(this, data) } - override fun visitDeclaration(declaration: IrDeclaration, data: D): IrStatement = + override fun visitDeclaration(declaration: IrDeclarationBase, data: D): IrStatement = declaration.also { it.transformChildren(this, data) } override fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt index 669314a4afe..57e00d08c20 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt @@ -43,8 +43,8 @@ abstract class IrElementTransformerVoid : IrElementTransformer { final override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment = visitExternalPackageFragment(declaration) - open fun visitDeclaration(declaration: IrDeclaration): IrStatement = declaration.transformChildren() - final override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): IrStatement = visitDeclaration(declaration) + open fun visitDeclaration(declaration: IrDeclarationBase): IrStatement = declaration.transformChildren() + final override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): IrStatement = visitDeclaration(declaration) open fun visitScript(declaration: IrScript) = visitDeclaration(declaration) final override fun visitScript(declaration: IrScript, data: Nothing?) = visitScript(declaration) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt index c8a029eeffe..325519eca7f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt @@ -28,7 +28,7 @@ interface IrElementVisitor { fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D) = visitPackageFragment(declaration, data) fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data) - fun visitDeclaration(declaration: IrDeclaration, data: D) = visitElement(declaration, data) + fun visitDeclaration(declaration: IrDeclarationBase, data: D) = visitElement(declaration, data) fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data) fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt index f8aa7e9b998..38cdd6c6cb6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt @@ -37,8 +37,8 @@ interface IrElementVisitorVoid : IrElementVisitor { fun visitFile(declaration: IrFile) = visitPackageFragment(declaration) override fun visitFile(declaration: IrFile, data: Nothing?) = visitFile(declaration) - fun visitDeclaration(declaration: IrDeclaration) = visitElement(declaration) - override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?) = visitDeclaration(declaration) + fun visitDeclaration(declaration: IrDeclarationBase) = visitElement(declaration) + override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = visitDeclaration(declaration) fun visitClass(declaration: IrClass) = visitDeclaration(declaration) override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ManglerChecker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ManglerChecker.kt index a888f10de61..07cad90741f 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ManglerChecker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ManglerChecker.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.serialization.mangle import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid @@ -47,8 +48,7 @@ class ManglerChecker(vararg _manglers: KotlinMangler) : IrElement return r } - override fun visitDeclaration(declaration: IrDeclaration) { - + override fun visitDeclaration(declaration: IrDeclarationBase) { val exported = manglers.checkAllEqual(false, { isExportCheck(declaration) }) { m1, r1, m2, r2 -> error("${declaration.render()}\n ${m1.manglerName}: $r1\n ${m2.manglerName}: $r2\n") } @@ -69,4 +69,4 @@ class ManglerChecker(vararg _manglers: KotlinMangler) : IrElement declaration.acceptChildrenVoid(this) } -} \ No newline at end of file +} diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt index 345acd478ca..a5131cccc6c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt @@ -39,7 +39,7 @@ abstract class IrExportCheckerVisitor : IrElementVisitor, Kot override fun visitElement(element: IrElement, data: Nothing?): Boolean = error("Should bot reach here ${element.render()}") - override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?) = declaration.run { isExported(annotations, null) } + override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = declaration.run { isExported(annotations, null) } override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?) = false override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = false diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt index 5d8c4736273..0c171474100 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt @@ -181,7 +181,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() { } @OptIn(ObsoleteDescriptorBasedAPI::class) - override fun visitDeclaration(declaration: IrDeclaration) { + override fun visitDeclaration(declaration: IrDeclarationBase) { if (declaration is IrSymbolOwner) { declaration.symbol.checkBinding("decl", declaration)