diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt index 4f7ed7f2ba4..7f55270f714 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt @@ -116,7 +116,7 @@ class CallGenerator(statementGenerator: StatementGenerator): StatementGeneratorE } } - private fun addParametersToCall(startOffset: Int, endOffset: Int, call: CallBuilder, irCall: IrGeneralCallBase, returnType: KotlinType): IrExpression = + private fun addParametersToCall(startOffset: Int, endOffset: Int, call: CallBuilder, irCall: IrCallWithIndexedArgumentsBase, returnType: KotlinType): IrExpression = if (call.isValueArgumentReorderingRequired()) { generateCallWithArgumentReordering(irCall, startOffset, endOffset, call, returnType) } @@ -129,7 +129,7 @@ class CallGenerator(statementGenerator: StatementGenerator): StatementGeneratorE } private fun generateCallWithArgumentReordering( - irCall: IrGeneralCall, + irCall: IrMemberAccessExpression, startOffset: Int, endOffset: Int, call: CallBuilder, diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt index fd3ce3a3903..4b07e822b12 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt @@ -40,7 +40,7 @@ class InsertImplicitCasts(val builtIns: KotlinBuiltIns): IrElementTransformerVoi return element } - override fun visitGeneralCall(expression: IrGeneralCall): IrExpression { + override fun visitMemberAccess(expression: IrMemberAccessExpression): IrExpression { expression.transformChildrenVoid(this) with(expression) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt index ceb0e9ac385..6a8f406699c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.descriptors.ClassDescriptor -interface IrCall : IrGeneralCall { +interface IrCall : IrMemberAccessExpression { val superQualifier: ClassDescriptor? } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt index ef3d64bfc54..42c8b2efdc1 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt @@ -16,5 +16,5 @@ package org.jetbrains.kotlin.ir.expressions -interface IrCallableReference : IrGeneralCall +interface IrCallableReference : IrMemberAccessExpression diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt index 34a87abd117..b2266959da6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.descriptors.ConstructorDescriptor -interface IrDelegatingConstructorCall : IrGeneralCall { +interface IrDelegatingConstructorCall : IrMemberAccessExpression { override val descriptor: ConstructorDescriptor } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt index b5ce2dd1248..9beeef37b69 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ConstructorDescriptor -interface IrEnumConstructorCall : IrGeneralCall { +interface IrEnumConstructorCall : IrMemberAccessExpression { override val descriptor: ConstructorDescriptor val enumEntryDescriptor: ClassDescriptor? } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGeneralCall.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGeneralCall.kt deleted file mode 100644 index 371c0feb6a9..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGeneralCall.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.ir.expressions - -import org.jetbrains.kotlin.descriptors.CallableDescriptor -import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor - -interface IrGeneralCall : IrMemberAccessExpression { - val origin: IrStatementOrigin? - override val descriptor: CallableDescriptor - - fun getArgument(index: Int): IrExpression? - fun putArgument(index: Int, valueArgument: IrExpression?) - fun removeArgument(index: Int) -} - -fun T.putArguments(arguments: List): T { - arguments.forEachIndexed { i, irArgument -> - putArgument(i, irArgument) - } - return this -} - -inline fun T.mapValueParameters(transform: (ValueParameterDescriptor) -> IrExpression): T { - descriptor.valueParameters.forEach { - putArgument(it.index, transform(it)) - } - return this -} - diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt index 95c3e122fa4..609a9d5c8c3 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt @@ -16,8 +16,26 @@ package org.jetbrains.kotlin.ir.expressions +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor + interface IrMemberAccessExpression : IrDeclarationReference { var dispatchReceiver: IrExpression? var extensionReceiver: IrExpression? + + val origin: IrStatementOrigin? + override val descriptor: CallableDescriptor + + fun getArgument(index: Int): IrExpression? + fun putArgument(index: Int, valueArgument: IrExpression?) + fun removeArgument(index: Int) +} + + +inline fun T.mapValueParameters(transform: (ValueParameterDescriptor) -> IrExpression): T { + descriptor.valueParameters.forEach { + putArgument(it.index, transform(it)) + } + return this } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt index 6988fd4aa93..68494fff3cf 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallImpl.kt @@ -30,7 +30,7 @@ class IrCallImpl( override val descriptor: CallableDescriptor, override val origin: IrStatementOrigin? = null, override val superQualifier: ClassDescriptor? = null -) : IrGeneralCallBase(startOffset, endOffset, type, descriptor.valueParameters.size), IrCall { +) : IrCallWithIndexedArgumentsBase(startOffset, endOffset, type, descriptor.valueParameters.size), IrCall { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitCall(this, data) } \ No newline at end of file diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGeneralCallBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallWithIndexedArgumentsBase.kt similarity index 92% rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGeneralCallBase.kt rename to compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallWithIndexedArgumentsBase.kt index 96114c34dc5..6431ebe8ac5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGeneralCallBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallWithIndexedArgumentsBase.kt @@ -17,18 +17,17 @@ package org.jetbrains.kotlin.ir.expressions.impl import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrGeneralCall import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.types.KotlinType import java.lang.AssertionError -abstract class IrGeneralCallBase( +abstract class IrCallWithIndexedArgumentsBase( startOffset: Int, endOffset: Int, type: KotlinType, numArguments: Int, override val origin: IrStatementOrigin? = null -) : IrMemberAccessExpressionBase(startOffset, endOffset, type), IrGeneralCall { +) : IrMemberAccessExpressionBase(startOffset, endOffset, type) { protected val argumentsByParameterIndex = arrayOfNulls(numArguments) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallableReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallableReferenceImpl.kt index fb27bf0f014..be4d0c7d758 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallableReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrCallableReferenceImpl.kt @@ -28,7 +28,7 @@ class IrCallableReferenceImpl( type: KotlinType, override val descriptor: CallableDescriptor, override val origin: IrStatementOrigin? = null -) : IrGeneralCallBase(startOffset, endOffset, type, descriptor.valueParameters.size, origin), IrCallableReference { +) : IrCallWithIndexedArgumentsBase(startOffset, endOffset, type, descriptor.valueParameters.size, origin), IrCallableReference { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitCallableReference(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDelegatingConstructorCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDelegatingConstructorCallImpl.kt index f42d3cbcd55..262f5dde242 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDelegatingConstructorCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDelegatingConstructorCallImpl.kt @@ -24,7 +24,7 @@ class IrDelegatingConstructorCallImpl( startOffset: Int, endOffset: Int, override val descriptor: ConstructorDescriptor -) : IrGeneralCallBase(startOffset, endOffset, descriptor.returnType, descriptor.valueParameters.size), IrDelegatingConstructorCall { +) : IrCallWithIndexedArgumentsBase(startOffset, endOffset, descriptor.returnType, descriptor.valueParameters.size), IrDelegatingConstructorCall { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitDelegatingConstructorCall(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt index 7d49c203623..9753bda437e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrEnumConstructorCallImpl.kt @@ -26,7 +26,7 @@ class IrEnumConstructorCallImpl( endOffset: Int, override val descriptor: ConstructorDescriptor, override val enumEntryDescriptor: ClassDescriptor? = null -) : IrGeneralCallBase(startOffset, endOffset, descriptor.returnType, descriptor.valueParameters.size), IrEnumConstructorCall { +) : IrCallWithIndexedArgumentsBase(startOffset, endOffset, descriptor.returnType, descriptor.valueParameters.size), IrEnumConstructorCall { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitEnumConstructorCall(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt index 2091666538d..dd3a766e560 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt @@ -95,7 +95,7 @@ class DumpIrTreeVisitor(out: Appendable): IrElementVisitor { } } - override fun visitGeneralCall(expression: IrGeneralCall, data: String) { + override fun visitMemberAccess(expression: IrMemberAccessExpression, data: String) { expression.dumpLabeledElementWith(data) { expression.dispatchReceiver?.accept(this, "\$this") expression.extensionReceiver?.accept(this, "\$receiver") 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 8548d0aad6a..2fd047a3927 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 @@ -78,13 +78,13 @@ interface IrElementTransformer : IrElementVisitor { override fun visitGetField(expression: IrGetField, data: D) = visitFieldAccess(expression, data) override fun visitSetField(expression: IrSetField, data: D) = visitFieldAccess(expression, data) override fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver, data: D) = visitDeclarationReference(expression, data) - override fun visitGeneralCall(expression: IrGeneralCall, data: D) = visitDeclarationReference(expression, data) - override fun visitCall(expression: IrCall, data: D) = visitGeneralCall(expression, data) - override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitGeneralCall(expression, data) - override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitGeneralCall(expression, data) + override fun visitMemberAccess(expression: IrMemberAccessExpression, data: D): IrElement = visitDeclarationReference(expression, data) + override fun visitCall(expression: IrCall, data: D) = visitMemberAccess(expression, data) + override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitMemberAccess(expression, data) + override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitMemberAccess(expression, data) override fun visitGetClass(expression: IrGetClass, data: D) = visitExpression(expression, data) - override fun visitCallableReference(expression: IrCallableReference, data: D) = visitGeneralCall(expression, data) + override fun visitCallableReference(expression: IrCallableReference, data: D) = visitMemberAccess(expression, data) override fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data) override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, 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 9c237b92f94..c8f15f78ab1 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 @@ -145,22 +145,22 @@ interface IrElementTransformerVoid : IrElementTransformer { fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver) = visitDeclarationReference(expression) override fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver, data: Nothing?) = visitGetExtensionReceiver(expression) - fun visitGeneralCall(expression: IrGeneralCall) = visitDeclarationReference(expression) - override fun visitGeneralCall(expression: IrGeneralCall, data: Nothing?) = visitGeneralCall(expression) + fun visitMemberAccess(expression: IrMemberAccessExpression) = visitDeclarationReference(expression) + override fun visitMemberAccess(expression: IrMemberAccessExpression, data: Nothing?) = visitMemberAccess(expression) - fun visitCall(expression: IrCall) = visitGeneralCall(expression) + fun visitCall(expression: IrCall) = visitMemberAccess(expression) override fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression) - fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitGeneralCall(expression) + fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitMemberAccess(expression) override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?) = visitDelegatingConstructorCall(expression) - fun visitEnumConstructorCall(expression: IrEnumConstructorCall) = visitGeneralCall(expression) + fun visitEnumConstructorCall(expression: IrEnumConstructorCall) = visitMemberAccess(expression) override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: Nothing?) = visitEnumConstructorCall(expression) fun visitGetClass(expression: IrGetClass) = visitExpression(expression) override fun visitGetClass(expression: IrGetClass, data: Nothing?) = visitGetClass(expression) - fun visitCallableReference(expression: IrCallableReference) = visitGeneralCall(expression) + fun visitCallableReference(expression: IrCallableReference) = visitMemberAccess(expression) override fun visitCallableReference(expression: IrCallableReference, data: Nothing?) = visitCallableReference(expression) fun visitClassReference(expression: IrClassReference) = visitDeclarationReference(expression) 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 a4ead01c10c..6d9280b6ca0 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 @@ -64,13 +64,13 @@ interface IrElementVisitor { fun visitGetField(expression: IrGetField, data: D) = visitFieldAccess(expression, data) fun visitSetField(expression: IrSetField, data: D) = visitFieldAccess(expression, data) fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver, data: D) = visitDeclarationReference(expression, data) - fun visitGeneralCall(expression: IrGeneralCall, data: D) = visitDeclarationReference(expression, data) - fun visitCall(expression: IrCall, data: D) = visitGeneralCall(expression, data) - fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitGeneralCall(expression, data) - fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitGeneralCall(expression, data) + fun visitMemberAccess(expression: IrMemberAccessExpression, data: D) = visitDeclarationReference(expression, data) + fun visitCall(expression: IrCall, data: D) = visitMemberAccess(expression, data) + fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitMemberAccess(expression, data) + fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitMemberAccess(expression, data) fun visitGetClass(expression: IrGetClass, data: D) = visitExpression(expression, data) - fun visitCallableReference(expression: IrCallableReference, data: D) = visitGeneralCall(expression, data) + fun visitCallableReference(expression: IrCallableReference, data: D) = visitMemberAccess(expression, data) fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data) fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, 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 b9e1a4ea5c0..133fe745693 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 @@ -135,22 +135,22 @@ interface IrElementVisitorVoid : IrElementVisitor { fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver) = visitDeclarationReference(expression) override fun visitGetExtensionReceiver(expression: IrGetExtensionReceiver, data: Nothing?) = visitGetExtensionReceiver(expression) - fun visitGeneralCall(expression: IrGeneralCall) = visitDeclarationReference(expression) - override fun visitGeneralCall(expression: IrGeneralCall, data: Nothing?) = visitGeneralCall(expression) + fun visitMemberAccess(expression: IrMemberAccessExpression) = visitDeclarationReference(expression) + override fun visitMemberAccess(expression: IrMemberAccessExpression, data: Nothing?) = visitMemberAccess(expression) - fun visitCall(expression: IrCall) = visitGeneralCall(expression) + fun visitCall(expression: IrCall) = visitMemberAccess(expression) override fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression) - fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitGeneralCall(expression) + fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitMemberAccess(expression) override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?) = visitDelegatingConstructorCall(expression) - fun visitEnumConstructorCall(expression: IrEnumConstructorCall) = visitGeneralCall(expression) + fun visitEnumConstructorCall(expression: IrEnumConstructorCall) = visitMemberAccess(expression) override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: Nothing?) = visitEnumConstructorCall(expression) fun visitGetClass(expression: IrGetClass) = visitExpression(expression) override fun visitGetClass(expression: IrGetClass, data: Nothing?) = visitGetClass(expression) - fun visitCallableReference(expression: IrCallableReference) = visitGeneralCall(expression) + fun visitCallableReference(expression: IrCallableReference) = visitMemberAccess(expression) override fun visitCallableReference(expression: IrCallableReference, data: Nothing?) = visitCallableReference(expression) fun visitClassReference(expression: IrClassReference) = visitDeclarationReference(expression)