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.
This commit is contained in:
Alexander Udalov
2020-07-22 15:28:27 +02:00
parent 771e7574f4
commit 8db1c3611b
45 changed files with 85 additions and 74 deletions
@@ -5,15 +5,18 @@
package org.jetbrains.kotlin.fir.backend.evaluate 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.EvaluationMode
import org.jetbrains.kotlin.ir.interpreter.IrCompileTimeChecker import org.jetbrains.kotlin.ir.interpreter.IrCompileTimeChecker
import org.jetbrains.kotlin.ir.interpreter.IrInterpreter import org.jetbrains.kotlin.ir.interpreter.IrInterpreter
import org.jetbrains.kotlin.ir.interpreter.toIrConst 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.types.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
@@ -51,7 +54,7 @@ class IrConstTransformer(irBuiltIns: IrBuiltIns) : IrElementTransformerVoid() {
return declaration return declaration
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
transformAnnotations(declaration) transformAnnotations(declaration)
return super.visitDeclaration(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!!) if (type.isArray()) return this.convertToConstIfPossible((type as IrSimpleType).arguments.single().typeOrNull!!)
return this.value.toIrConst(type, this.startOffset, this.endOffset) return this.value.toIrConst(type, this.startOffset, this.endOffset)
} }
} }
@@ -312,7 +312,7 @@ class CheckIrElementVisitor(
expression.symbol.ensureBound(expression) expression.symbol.ensureBound(expression)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
super.visitDeclaration(declaration) super.visitDeclaration(declaration)
if (declaration is IrOverridableDeclaration<*>) { if (declaration is IrOverridableDeclaration<*>) {
@@ -98,7 +98,7 @@ object CheckDeclarationParentsVisitor : IrElementVisitor<Unit, IrDeclarationPare
element.acceptChildren(this, element as? IrDeclarationParent ?: data) element.acceptChildren(this, element as? IrDeclarationParent ?: data)
} }
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent?) { override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent?) {
checkParent(declaration, data) checkParent(declaration, data)
super.visitDeclaration(declaration, data) super.visitDeclaration(declaration, data)
} }
@@ -127,7 +127,7 @@ fun BodyLoweringPass.runOnFilePostfix(irFile: IrFile, withLocalDeclarations: Boo
element.acceptChildren(this, data) element.acceptChildren(this, data)
} }
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclaration?) { override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclaration?) {
declaration.acceptChildren(this, declaration) declaration.acceptChildren(this, declaration)
} }
@@ -78,7 +78,7 @@ private fun IrBody.move(
return super.visitBlock(expression) return super.visitBlock(expression)
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
if (declaration.parent == source) if (declaration.parent == source)
declaration.parent = target declaration.parent = target
return super.visitDeclaration(declaration) return super.visitDeclaration(declaration)
@@ -364,7 +364,7 @@ object SetDeclarationsParentVisitor : IrElementVisitor<Unit, IrDeclarationParent
} }
} }
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent) { override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent) {
declaration.parent = data declaration.parent = data
super.visitDeclaration(declaration, data) super.visitDeclaration(declaration, data)
} }
@@ -105,7 +105,7 @@ class InlineClassLowering(val context: CommonBackendContext) {
return expression return expression
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
declaration.transformChildrenVoid(this) declaration.transformChildrenVoid(this)
if (declaration.parent == irConstructor) if (declaration.parent == irConstructor)
declaration.parent = staticMethod declaration.parent = staticMethod
@@ -142,7 +142,7 @@ class InlineClassLowering(val context: CommonBackendContext) {
statements.addAll((functionBody as IrBlockBody).statements) statements.addAll((functionBody as IrBlockBody).statements)
transformChildrenVoid(object : IrElementTransformerVoid() { transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
declaration.transformChildrenVoid(this) declaration.transformChildrenVoid(this)
if (declaration.parent == function) if (declaration.parent == function)
declaration.parent = staticMethod declaration.parent = staticMethod
@@ -442,7 +442,7 @@ class LocalDeclarationsLowering(
return super.visitDeclarationReference(expression) return super.visitDeclarationReference(expression)
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
if (declaration is IrSymbolOwner && declaration in transformedDeclarations) { if (declaration is IrSymbolOwner && declaration in transformedDeclarations) {
TODO() TODO()
} }
@@ -91,7 +91,7 @@ class SharedVariablesLowering(val context: BackendContext) : BodyLoweringPass {
} }
} }
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent?) { override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent?) {
super.visitDeclaration(declaration, declaration as? IrDeclarationParent ?: data) super.visitDeclaration(declaration, declaration as? IrDeclarationParent ?: data)
} }
@@ -24,10 +24,7 @@ import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
import org.jetbrains.kotlin.ir.builders.createTmpVariable import org.jetbrains.kotlin.ir.builders.createTmpVariable
import org.jetbrains.kotlin.ir.builders.irCall import org.jetbrains.kotlin.ir.builders.irCall
import org.jetbrains.kotlin.ir.builders.irGet import org.jetbrains.kotlin.ir.builders.irGet
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.IrSymbolDeclaration
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
@@ -106,7 +103,7 @@ private class StringConcatenationTransformer(val lower: StringConcatenationLower
} }
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
if (declaration !is IrSymbolDeclaration<*>) { if (declaration !is IrSymbolDeclaration<*>) {
return super.visitDeclaration(declaration) return super.visitDeclaration(declaration)
} }
@@ -120,4 +117,4 @@ private class StringConcatenationTransformer(val lower: StringConcatenationLower
return this@with return this@with
} }
} }
} }
@@ -70,7 +70,7 @@ fun dumpIrElement(actionState: ActionState, data: IrElement, context: Any?): Str
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
if (declaration is IrDeclarationWithName && FqName(dumpOnlyFqName) == declaration.fqNameWhenAvailable) { if (declaration is IrDeclarationWithName && FqName(dumpOnlyFqName) == declaration.fqNameWhenAvailable) {
dumpText += declaration.dump() dumpText += declaration.dump()
} else { } else {
@@ -12,7 +12,10 @@ import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol 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.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
@@ -184,7 +187,7 @@ fun usefulDeclarations(roots: Iterable<IrDeclaration>, context: JsIrBackendConte
// Skip // Skip
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
if (declaration !== it) declaration.enqueue(it, "roots' nested declaration") if (declaration !== it) declaration.enqueue(it, "roots' nested declaration")
super.visitDeclaration(declaration) super.visitDeclaration(declaration)
@@ -437,4 +440,4 @@ private fun Collection<IrClass>.filterDescendantsOf(bases: Collection<IrClass>):
} }
return this.filter { overridesAnyBase(it) } return this.filter { overridesAnyBase(it) }
} }
@@ -88,7 +88,7 @@ class ES6AddInternalParametersToConstructorPhase(val context: JsIrBackendContext
context.mapping.constructorToInitFunction[constructor] = initFunction context.mapping.constructorToInitFunction[constructor] = initFunction
initFunction.transformChildren(object : IrElementTransformerVoid() { initFunction.transformChildren(object : IrElementTransformerVoid() {
override fun visitDeclaration(declaration: IrDeclaration): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
declaration.parent = initFunction declaration.parent = initFunction
return declaration return declaration
} }
@@ -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.DeclarationTransformer
import org.jetbrains.kotlin.backend.common.ir.addChild import org.jetbrains.kotlin.backend.common.ir.addChild
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.IrElement 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.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.utils.getJsModule import org.jetbrains.kotlin.ir.backend.js.utils.getJsModule
import org.jetbrains.kotlin.ir.backend.js.utils.getJsQualifier import org.jetbrains.kotlin.ir.backend.js.utils.getJsQualifier
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol 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.fqNameWhenAvailable
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
private val BODILESS_BUILTIN_CLASSES = listOf( private val BODILESS_BUILTIN_CLASSES = listOf(
@@ -129,10 +129,10 @@ class MoveBodilessDeclarationsToSeparatePlaceLowering(private val context: JsIrB
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
context.externalDeclarations.add(declaration) context.externalDeclarations.add(declaration)
super.visitDeclaration(declaration) super.visitDeclaration(declaration)
} }
}, null) }, null)
} }
} }
@@ -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.backend.js.ir.JsIrBuilder
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent 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.*
import org.jetbrains.kotlin.ir.expressions.impl.IrBranchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrBranchImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrCatchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrCatchImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrElseBranchImpl import org.jetbrains.kotlin.ir.expressions.impl.IrElseBranchImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrTryImpl import org.jetbrains.kotlin.ir.expressions.impl.IrTryImpl
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol 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 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) { override fun lower(irBody: IrBody, container: IrDeclaration) {
irBody.transform(object : IrElementTransformer<IrDeclarationParent> { irBody.transform(object : IrElementTransformer<IrDeclarationParent> {
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent): IrStatement { override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent): IrStatement {
val parent = (declaration as? IrDeclarationParent) ?: data val parent = (declaration as? IrDeclarationParent) ?: data
return super.visitDeclaration(declaration, parent) return super.visitDeclaration(declaration, parent)
} }
@@ -118,4 +120,4 @@ class MultipleCatchesLowering(private val context: JsIrBackendContext) : BodyLow
}, container as? IrDeclarationParent ?: container.parent) }, container as? IrDeclarationParent ?: container.parent)
} }
} }
@@ -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.BodyLoweringPass
import org.jetbrains.kotlin.backend.common.DeclarationTransformer import org.jetbrains.kotlin.backend.common.DeclarationTransformer
import org.jetbrains.kotlin.descriptors.Visibilities 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.backend.js.JsCommonBackendContext
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
@@ -67,7 +68,7 @@ class DelegateToSyntheticPrimaryConstructor(context: JsCommonBackendContext) : B
if (container is IrConstructor && !container.isPrimary) { if (container is IrConstructor && !container.isPrimary) {
container.parentAsClass.syntheticPrimaryConstructor?.let { primary -> container.parentAsClass.syntheticPrimaryConstructor?.let { primary ->
val initializeTransformer = object : IrElementTransformerVoid() { 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 { override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall) = expression.run {
IrDelegatingConstructorCallImpl( IrDelegatingConstructorCallImpl(
@@ -83,4 +84,4 @@ class DelegateToSyntheticPrimaryConstructor(context: JsCommonBackendContext) : B
} }
} }
} }
} }
@@ -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.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent 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.*
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl 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) { override fun lower(irBody: IrBody, container: IrDeclaration) {
irBody.transformChildren(object : IrElementTransformer<IrDeclarationParent> { irBody.transformChildren(object : IrElementTransformer<IrDeclarationParent> {
override fun visitDeclaration(declaration: IrDeclaration, data: IrDeclarationParent) = override fun visitDeclaration(declaration: IrDeclarationBase, data: IrDeclarationParent) =
super.visitDeclaration(declaration, declaration as? IrDeclarationParent ?: data) super.visitDeclaration(declaration, declaration as? IrDeclarationParent ?: data)
override fun visitTypeOperator(expression: IrTypeOperatorCall, data: IrDeclarationParent): IrExpression { override fun visitTypeOperator(expression: IrTypeOperatorCall, data: IrDeclarationParent): IrExpression {
@@ -374,4 +375,4 @@ class TypeOperatorLowering(val context: JsIrBackendContext) : BodyLoweringPass {
} }
}, container as? IrDeclarationParent ?: container.parent) }, container as? IrDeclarationParent ?: container.parent)
} }
} }
@@ -372,7 +372,7 @@ class NameTables(
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
if (declaration is IrDeclarationWithName && declaration is IrSymbolOwner) { if (declaration is IrDeclarationWithName && declaration is IrSymbolOwner) {
table.declareFreshName(declaration, declaration.name.asString()) table.declareFreshName(declaration, declaration.name.asString())
} }
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.ir.backend.js.utils
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrConstructor 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.IrDeclarationWithName
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.ir.util.isPropertyAccessor import org.jetbrains.kotlin.ir.util.isPropertyAccessor
@@ -30,7 +30,7 @@ class StableNamesCollector : IrElementVisitorVoid {
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
super.visitDeclaration(declaration) super.visitDeclaration(declaration)
if (declaration !is IrDeclarationWithName) if (declaration !is IrDeclarationWithName)
@@ -86,7 +86,7 @@ class InventNamesForLocalClasses(private val context: JvmBackendContext) : FileL
declaration.acceptChildren(this, data.makeLocal()) declaration.acceptChildren(this, data.makeLocal())
} }
override fun visitDeclaration(declaration: IrDeclaration, data: Data) { override fun visitDeclaration(declaration: IrDeclarationBase, data: Data) {
if (declaration !is IrDeclarationWithName) { if (declaration !is IrDeclarationWithName) {
declaration.acceptChildren(this, data) declaration.acceptChildren(this, data)
return return
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement 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.IrFile
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
@@ -43,7 +43,7 @@ private class JvmArgumentNullabilityAssertionsLowering(context: JvmBackendContex
override fun visitElement(element: IrElement, data: AssertionScope): IrElement = override fun visitElement(element: IrElement, data: AssertionScope): IrElement =
super.visitElement(element, AssertionScope.Enabled) 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) super.visitDeclaration(declaration, AssertionScope.Enabled)
override fun visitTypeOperator(expression: IrTypeOperatorCall, data: AssertionScope): IrExpression = override fun visitTypeOperator(expression: IrTypeOperatorCall, data: AssertionScope): IrExpression =
@@ -6,10 +6,7 @@
package org.jetbrains.kotlin.psi2ir.generators package org.jetbrains.kotlin.psi2ir.generators
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.*
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.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
@@ -21,7 +18,7 @@ class AnnotationGenerator(context: GeneratorContext) : IrElementVisitorVoid {
element.acceptChildrenVoid(this) element.acceptChildrenVoid(this)
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
if (declaration is IrTypeParametersContainer) { if (declaration is IrTypeParametersContainer) {
typeTranslator.enterScope(declaration) typeTranslator.enterScope(declaration)
} }
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrAnonymousInitializer : IrSymbolDeclaration<IrAnonymousInitializerSymbol> { abstract class IrAnonymousInitializer : IrDeclarationBase(), IrSymbolDeclaration<IrAnonymousInitializerSymbol> {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
abstract override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks abstract override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrClass : abstract class IrClass :
IrSymbolDeclaration<IrClassSymbol>, IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationBase(), IrSymbolDeclaration<IrClassSymbol>, IrDeclarationWithName, IrDeclarationWithVisibility,
IrDeclarationContainer, IrTypeParametersContainer, IrAttributeContainer, IrMetadataSourceOwner { IrDeclarationContainer, IrTypeParametersContainer, IrAttributeContainer, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
@@ -43,7 +43,9 @@ interface IrDeclaration : IrStatement, IrMutableAnnotationContainer {
var parent: IrDeclarationParent var parent: IrDeclarationParent
val factory: IrFactory val factory: IrFactory
}
abstract class IrDeclarationBase : IrDeclaration {
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrStatement = override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrStatement =
accept(transformer, data) as IrStatement accept(transformer, data) as IrStatement
} }
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrEnumEntry : IrSymbolDeclaration<IrEnumEntrySymbol>, IrDeclarationWithName { abstract class IrEnumEntry : IrDeclarationBase(), IrSymbolDeclaration<IrEnumEntrySymbol>, IrDeclarationWithName {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
abstract override val descriptor: ClassDescriptor abstract override val descriptor: ClassDescriptor
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrErrorDeclaration : IrDeclaration { abstract class IrErrorDeclaration : IrDeclarationBase() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitErrorDeclaration(this, data) visitor.visitErrorDeclaration(this, data)
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrField : abstract class IrField :
IrDeclarationBase(),
IrSymbolDeclaration<IrFieldSymbol>, IrSymbolDeclaration<IrFieldSymbol>,
IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner { IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner {
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrFunction : abstract class IrFunction :
IrDeclarationBase(),
IrDeclarationWithName, IrDeclarationWithVisibility, IrTypeParametersContainer, IrSymbolOwner, IrDeclarationParent, IrReturnTarget, IrDeclarationWithName, IrDeclarationWithVisibility, IrTypeParametersContainer, IrSymbolOwner, IrDeclarationParent, IrReturnTarget,
IrMetadataSourceOwner { IrMetadataSourceOwner {
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrLocalDelegatedProperty : abstract class IrLocalDelegatedProperty :
IrDeclarationBase(),
IrDeclarationWithName, IrDeclarationWithName,
IrSymbolOwner, IrSymbolOwner,
IrMetadataSourceOwner { IrMetadataSourceOwner {
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrProperty : IrOverridableMember, IrMetadataSourceOwner { abstract class IrProperty : IrDeclarationBase(), IrOverridableMember, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
abstract override val descriptor: PropertyDescriptor abstract override val descriptor: PropertyDescriptor
abstract override val symbol: IrPropertySymbol abstract override val symbol: IrPropertySymbol
@@ -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 //TODO: make IrScript as IrPackageFragment, because script is used as a file, not as a class
//NOTE: declarations and statements stored separately //NOTE: declarations and statements stored separately
abstract class IrScript : IrSymbolDeclaration<IrScriptSymbol>, IrDeclarationContainer, IrDeclarationWithName, IrDeclarationParent { abstract class IrScript :
IrDeclarationBase(), IrSymbolDeclaration<IrScriptSymbol>, IrDeclarationContainer, IrDeclarationWithName, IrDeclarationParent {
abstract val statements: MutableList<IrStatement> abstract val statements: MutableList<IrStatement>
// NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver // NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
abstract class IrTypeAlias : abstract class IrTypeAlias :
IrDeclarationBase(),
IrSymbolDeclaration<IrTypeAliasSymbol>, IrSymbolDeclaration<IrTypeAliasSymbol>,
IrDeclarationWithName, IrDeclarationWithName,
IrDeclarationWithVisibility, IrDeclarationWithVisibility,
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.Variance
abstract class IrTypeParameter : IrSymbolDeclaration<IrTypeParameterSymbol>, IrDeclarationWithName { abstract class IrTypeParameter : IrDeclarationBase(), IrSymbolDeclaration<IrTypeParameterSymbol>, IrDeclarationWithName {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
abstract override val descriptor: TypeParameterDescriptor abstract override val descriptor: TypeParameterDescriptor
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
abstract class IrValueDeclaration : IrDeclarationWithName, IrSymbolOwner { abstract class IrValueDeclaration : IrDeclarationBase(), IrDeclarationWithName, IrSymbolOwner {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
abstract override val descriptor: ValueDescriptor abstract override val descriptor: ValueDescriptor
@@ -109,7 +109,7 @@ open class DeepCopyIrTreeWithSymbols(
declaration.transformDeclarationsTo(this) declaration.transformDeclarationsTo(this)
} }
override fun visitDeclaration(declaration: IrDeclaration): IrStatement = override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement =
throw IllegalArgumentException("Unsupported declaration type: $declaration") throw IllegalArgumentException("Unsupported declaration type: $declaration")
override fun visitScript(declaration: IrScript): IrStatement { override fun visitScript(declaration: IrScript): IrStatement {
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.declarations.IrPackageFragment 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.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -39,7 +39,7 @@ class PatchDeclarationParentsVisitor() : IrElementVisitorVoid {
declarationParentsStack.pop() declarationParentsStack.pop()
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
patchParent(declaration) patchParent(declaration)
if (declaration is IrDeclarationParent) { if (declaration is IrDeclarationParent) {
@@ -56,4 +56,4 @@ class PatchDeclarationParentsVisitor() : IrElementVisitorVoid {
private fun patchParent(declaration: IrDeclaration) { private fun patchParent(declaration: IrDeclaration) {
declaration.parent = declarationParentsStack.peekFirst() declaration.parent = declarationParentsStack.peekFirst()
} }
} }
@@ -19,8 +19,8 @@ package org.jetbrains.kotlin.ir.util
import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol 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 = override fun visitElement(element: IrElement, data: Nothing?): String =
"?ELEMENT? ${element::class.java.simpleName} $element" "?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" "?DECLARATION? ${declaration::class.java.simpleName} $declaration"
override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String = override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String =
@@ -34,7 +34,7 @@ interface IrElementTransformer<in D> : IrElementVisitor<IrElement, D> {
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D): IrExternalPackageFragment = override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D): IrExternalPackageFragment =
declaration.also { it.transformChildren(this, data) } 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) } declaration.also { it.transformChildren(this, data) }
override fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data) override fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data)
@@ -43,8 +43,8 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
final override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment = final override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): IrExternalPackageFragment =
visitExternalPackageFragment(declaration) visitExternalPackageFragment(declaration)
open fun visitDeclaration(declaration: IrDeclaration): IrStatement = declaration.transformChildren() open fun visitDeclaration(declaration: IrDeclarationBase): IrStatement = declaration.transformChildren()
final override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): IrStatement = visitDeclaration(declaration) final override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): IrStatement = visitDeclaration(declaration)
open fun visitScript(declaration: IrScript) = visitDeclaration(declaration) open fun visitScript(declaration: IrScript) = visitDeclaration(declaration)
final override fun visitScript(declaration: IrScript, data: Nothing?) = visitScript(declaration) final override fun visitScript(declaration: IrScript, data: Nothing?) = visitScript(declaration)
@@ -28,7 +28,7 @@ interface IrElementVisitor<out R, in D> {
fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D) = visitPackageFragment(declaration, data) fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D) = visitPackageFragment(declaration, data)
fun visitScript(declaration: IrScript, data: D) = visitDeclaration(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 visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
@@ -37,8 +37,8 @@ interface IrElementVisitorVoid : IrElementVisitor<Unit, Nothing?> {
fun visitFile(declaration: IrFile) = visitPackageFragment(declaration) fun visitFile(declaration: IrFile) = visitPackageFragment(declaration)
override fun visitFile(declaration: IrFile, data: Nothing?) = visitFile(declaration) override fun visitFile(declaration: IrFile, data: Nothing?) = visitFile(declaration)
fun visitDeclaration(declaration: IrDeclaration) = visitElement(declaration) fun visitDeclaration(declaration: IrDeclarationBase) = visitElement(declaration)
override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?) = visitDeclaration(declaration) override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = visitDeclaration(declaration)
fun visitClass(declaration: IrClass) = visitDeclaration(declaration) fun visitClass(declaration: IrClass) = visitDeclaration(declaration)
override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration) override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration)
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.serialization.mangle
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrDeclaration 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.KotlinMangler
import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -47,8 +48,7 @@ class ManglerChecker(vararg _manglers: KotlinMangler<IrDeclaration>) : IrElement
return r return r
} }
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
val exported = manglers.checkAllEqual(false, { isExportCheck(declaration) }) { m1, r1, m2, r2 -> val exported = manglers.checkAllEqual(false, { isExportCheck(declaration) }) { m1, r1, m2, r2 ->
error("${declaration.render()}\n ${m1.manglerName}: $r1\n ${m2.manglerName}: $r2\n") error("${declaration.render()}\n ${m1.manglerName}: $r1\n ${m2.manglerName}: $r2\n")
} }
@@ -69,4 +69,4 @@ class ManglerChecker(vararg _manglers: KotlinMangler<IrDeclaration>) : IrElement
declaration.acceptChildrenVoid(this) declaration.acceptChildrenVoid(this)
} }
} }
@@ -39,7 +39,7 @@ abstract class IrExportCheckerVisitor : IrElementVisitor<Boolean, Nothing?>, Kot
override fun visitElement(element: IrElement, data: Nothing?): Boolean = error("Should bot reach here ${element.render()}") 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 visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?) = false
override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = false override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = false
@@ -181,7 +181,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
} }
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
override fun visitDeclaration(declaration: IrDeclaration) { override fun visitDeclaration(declaration: IrDeclarationBase) {
if (declaration is IrSymbolOwner) { if (declaration is IrSymbolOwner) {
declaration.symbol.checkBinding("decl", declaration) declaration.symbol.checkBinding("decl", declaration)