From e36d3ba4f6a68e3c9895b3bb2287e26c170e7658 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 22 Jul 2020 16:04:58 +0200 Subject: [PATCH] IR: remove IrNoArgumentsCallableReferenceBase To simplify transformation of IR element hierarchy to classes. --- .../IrLocalDelegatedPropertyReferenceImpl.kt | 12 ++++- .../IrNoArgumentsCallableReferenceBase.kt | 44 ------------------- .../impl/IrPropertyReferenceImpl.kt | 12 ++++- 3 files changed, 22 insertions(+), 46 deletions(-) delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrNoArgumentsCallableReferenceBase.kt diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt index b7eacea0d83..188d92e4640 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.ir.expressions.impl +import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol @@ -35,12 +36,21 @@ class IrLocalDelegatedPropertyReferenceImpl( override val setter: IrSimpleFunctionSymbol?, origin: IrStatementOrigin? = null ) : - IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, 0, origin), + IrMemberAccessExpressionBase(startOffset, endOffset, type, 0, 0, origin), IrLocalDelegatedPropertyReference { override val referencedName: Name get() = symbol.owner.name + private fun throwNoValueArguments(): Nothing = + throw UnsupportedOperationException("Property reference $symbol has no value arguments") + + override fun getValueArgument(index: Int): IrExpression? = throwNoValueArguments() + + override fun putValueArgument(index: Int, valueArgument: IrExpression?): Unit = throwNoValueArguments() + + override fun removeValueArgument(index: Int): Unit = throwNoValueArguments() + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitLocalDelegatedPropertyReference(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrNoArgumentsCallableReferenceBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrNoArgumentsCallableReferenceBase.kt deleted file mode 100644 index bd7c808c703..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrNoArgumentsCallableReferenceBase.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2017 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.impl - -import org.jetbrains.kotlin.ir.expressions.IrCallableReference -import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin -import org.jetbrains.kotlin.ir.symbols.IrSymbol -import org.jetbrains.kotlin.ir.types.IrType - -abstract class IrNoArgumentsCallableReferenceBase( - startOffset: Int, - endOffset: Int, - type: IrType, - typeArgumentsCount: Int, - origin: IrStatementOrigin? = null -) : - IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArgumentsCount, 0, origin), - IrCallableReference { - - private fun throwNoValueArguments(): Nothing { - throw UnsupportedOperationException("Property reference $symbol has no value arguments") - } - - override fun getValueArgument(index: Int): IrExpression? = throwNoValueArguments() - - override fun putValueArgument(index: Int, valueArgument: IrExpression?) = throwNoValueArguments() - - override fun removeValueArgument(index: Int) = throwNoValueArguments() -} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt index cdd30164cf5..74377afec36 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.ir.expressions.impl import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrPropertyReference import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol @@ -38,7 +39,7 @@ class IrPropertyReferenceImpl( override val setter: IrSimpleFunctionSymbol?, origin: IrStatementOrigin? = null ) : - IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, typeArgumentsCount, origin), + IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArgumentsCount, 0, origin), IrPropertyReference { @Deprecated(message = "Don't use descriptor-based API for IrPropertyReference", level = DeprecationLevel.WARNING) @@ -61,6 +62,15 @@ class IrPropertyReferenceImpl( override val referencedName: Name get() = symbol.owner.name + private fun throwNoValueArguments(): Nothing = + throw UnsupportedOperationException("Property reference $symbol has no value arguments") + + override fun getValueArgument(index: Int): IrExpression? = throwNoValueArguments() + + override fun putValueArgument(index: Int, valueArgument: IrExpression?): Unit = throwNoValueArguments() + + override fun removeValueArgument(index: Int): Unit = throwNoValueArguments() + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitPropertyReference(this, data) }