IR: remove IrNoArgumentsCallableReferenceBase
To simplify transformation of IR element hierarchy to classes.
This commit is contained in:
+11
-1
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.expressions.impl
|
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.IrLocalDelegatedPropertyReference
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||||
@@ -35,12 +36,21 @@ class IrLocalDelegatedPropertyReferenceImpl(
|
|||||||
override val setter: IrSimpleFunctionSymbol?,
|
override val setter: IrSimpleFunctionSymbol?,
|
||||||
origin: IrStatementOrigin? = null
|
origin: IrStatementOrigin? = null
|
||||||
) :
|
) :
|
||||||
IrNoArgumentsCallableReferenceBase<IrLocalDelegatedPropertySymbol>(startOffset, endOffset, type, 0, origin),
|
IrMemberAccessExpressionBase<IrLocalDelegatedPropertySymbol>(startOffset, endOffset, type, 0, 0, origin),
|
||||||
IrLocalDelegatedPropertyReference {
|
IrLocalDelegatedPropertyReference {
|
||||||
|
|
||||||
override val referencedName: Name
|
override val referencedName: Name
|
||||||
get() = symbol.owner.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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
visitor.visitLocalDelegatedPropertyReference(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
-44
@@ -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<S : IrSymbol>(
|
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int,
|
|
||||||
type: IrType,
|
|
||||||
typeArgumentsCount: Int,
|
|
||||||
origin: IrStatementOrigin? = null
|
|
||||||
) :
|
|
||||||
IrMemberAccessExpressionBase<S>(startOffset, endOffset, type, typeArgumentsCount, 0, origin),
|
|
||||||
IrCallableReference<S> {
|
|
||||||
|
|
||||||
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()
|
|
||||||
}
|
|
||||||
+11
-1
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.expressions.impl
|
package org.jetbrains.kotlin.ir.expressions.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
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.IrPropertyReference
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||||
@@ -38,7 +39,7 @@ class IrPropertyReferenceImpl(
|
|||||||
override val setter: IrSimpleFunctionSymbol?,
|
override val setter: IrSimpleFunctionSymbol?,
|
||||||
origin: IrStatementOrigin? = null
|
origin: IrStatementOrigin? = null
|
||||||
) :
|
) :
|
||||||
IrNoArgumentsCallableReferenceBase<IrPropertySymbol>(startOffset, endOffset, type, typeArgumentsCount, origin),
|
IrMemberAccessExpressionBase<IrPropertySymbol>(startOffset, endOffset, type, typeArgumentsCount, 0, origin),
|
||||||
IrPropertyReference {
|
IrPropertyReference {
|
||||||
|
|
||||||
@Deprecated(message = "Don't use descriptor-based API for IrPropertyReference", level = DeprecationLevel.WARNING)
|
@Deprecated(message = "Don't use descriptor-based API for IrPropertyReference", level = DeprecationLevel.WARNING)
|
||||||
@@ -61,6 +62,15 @@ class IrPropertyReferenceImpl(
|
|||||||
override val referencedName: Name
|
override val referencedName: Name
|
||||||
get() = symbol.owner.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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
visitor.visitPropertyReference(this, data)
|
visitor.visitPropertyReference(this, data)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user