From ba7ff362749ee7c55e1154d23a2fc43eaa54beec Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 22 Jul 2020 19:15:34 +0200 Subject: [PATCH] IR: make IrDeclarationReference and subtypes classes --- .../common/lower/inline/FunctionInlining.kt | 2 +- .../kotlin/ir/expressions/IrClassReference.kt | 8 +++---- .../ir/expressions/IrDeclarationReference.kt | 19 ++++++++------- .../ir/expressions/IrFieldAccessExpression.kt | 16 ++++++------- .../expressions/IrMemberAccessExpression.kt | 3 +-- .../ir/expressions/IrValueAccessExpression.kt | 17 +++++++------ .../expressions/impl/IrClassReferenceImpl.kt | 2 +- .../expressions/impl/IrFieldExpressionBase.kt | 24 ------------------- .../ir/expressions/impl/IrGetEnumValueImpl.kt | 2 +- .../ir/expressions/impl/IrGetFieldImpl.kt | 2 +- .../expressions/impl/IrGetObjectValueImpl.kt | 2 +- .../ir/expressions/impl/IrGetValueImpl.kt | 2 +- .../impl/IrRawFunctionReferenceImpl.kt | 2 +- .../ir/expressions/impl/IrSetFieldImpl.kt | 2 +- .../ir/expressions/impl/IrSetVariableImpl.kt | 2 +- 15 files changed, 39 insertions(+), 66 deletions(-) delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFieldExpressionBase.kt diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index 91861e93c4a..4f9a1fb96b5 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -511,7 +511,7 @@ class FunctionInlining( private class IrGetValueWithoutLocation( override val symbol: IrValueSymbol, override val origin: IrStatementOrigin? = null - ) : IrExpressionBase(), IrGetValue { + ) : IrGetValue() { override val startOffset: Int get() = UNDEFINED_OFFSET override val endOffset: Int get() = UNDEFINED_OFFSET diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt index 71a912fd190..671733b9cca 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt @@ -19,9 +19,7 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol import org.jetbrains.kotlin.ir.types.IrType - -interface IrClassReference : IrDeclarationReference { - override val symbol: IrClassifierSymbol - val classType: IrType +abstract class IrClassReference : IrDeclarationReference() { + abstract override val symbol: IrClassifierSymbol + abstract val classType: IrType } - diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt index cef95560440..06e60767d88 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt @@ -16,23 +16,24 @@ package org.jetbrains.kotlin.ir.expressions +import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBase import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol -interface IrDeclarationReference : IrExpression { - val symbol: IrSymbol +abstract class IrDeclarationReference : IrExpressionBase() { + abstract val symbol: IrSymbol } -interface IrGetSingletonValue : IrDeclarationReference +abstract class IrGetSingletonValue : IrDeclarationReference() -interface IrGetObjectValue : IrGetSingletonValue { - override val symbol: IrClassSymbol +abstract class IrGetObjectValue : IrGetSingletonValue() { + abstract override val symbol: IrClassSymbol } -interface IrGetEnumValue : IrGetSingletonValue { - override val symbol: IrEnumEntrySymbol +abstract class IrGetEnumValue : IrGetSingletonValue() { + abstract override val symbol: IrEnumEntrySymbol } /** @@ -40,6 +41,6 @@ interface IrGetEnumValue : IrGetSingletonValue { * * On JS platform represent a plain reference to JavaScript function. */ -interface IrRawFunctionReference : IrDeclarationReference { - override val symbol: IrFunctionSymbol +abstract class IrRawFunctionReference : IrDeclarationReference() { + abstract override val symbol: IrFunctionSymbol } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt index 62abbfaf193..44d8ff48268 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt @@ -19,17 +19,17 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol -interface IrFieldAccessExpression : IrDeclarationReference { - override val symbol: IrFieldSymbol +abstract class IrFieldAccessExpression : IrDeclarationReference() { + abstract override val symbol: IrFieldSymbol - val superQualifierSymbol: IrClassSymbol? + abstract val superQualifierSymbol: IrClassSymbol? - var receiver: IrExpression? - val origin: IrStatementOrigin? + var receiver: IrExpression? = null + abstract val origin: IrStatementOrigin? } -interface IrGetField : IrFieldAccessExpression +abstract class IrGetField : IrFieldAccessExpression() -interface IrSetField : IrFieldAccessExpression { - var value: IrExpression +abstract class IrSetField : IrFieldAccessExpression() { + abstract var value: IrExpression } 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 c868dea3b14..7dcf3fdd119 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 @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrTypeParameter import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBase import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.defaultType @@ -23,7 +22,7 @@ import org.jetbrains.kotlin.types.KotlinType abstract class IrMemberAccessExpression( val typeArgumentsCount: Int -) : IrExpressionBase(), IrDeclarationReference { +) : IrDeclarationReference() { var dispatchReceiver: IrExpression? = null var extensionReceiver: IrExpression? = null diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt index 903b4e9438c..f7058668905 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt @@ -19,17 +19,16 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.ir.symbols.IrValueSymbol import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol -interface IrValueAccessExpression : IrDeclarationReference { - override val symbol: IrValueSymbol - val origin: IrStatementOrigin? +abstract class IrValueAccessExpression : IrDeclarationReference() { + abstract override val symbol: IrValueSymbol + abstract val origin: IrStatementOrigin? } -interface IrGetValue : IrValueAccessExpression, IrExpressionWithCopy { - override fun copy(): IrGetValue +abstract class IrGetValue : IrValueAccessExpression(), IrExpressionWithCopy { + abstract override fun copy(): IrGetValue } -interface IrSetVariable : IrValueAccessExpression { - override val symbol: IrVariableSymbol - var value: IrExpression +abstract class IrSetVariable : IrValueAccessExpression() { + abstract override val symbol: IrVariableSymbol + abstract var value: IrExpression } - diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt index e5006f22021..b4f3341fcdc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrClassReferenceImpl.kt @@ -27,7 +27,7 @@ class IrClassReferenceImpl( override val type: IrType, override val symbol: IrClassifierSymbol, override val classType: IrType -) : IrExpressionBase(), IrClassReference { +) : IrClassReference() { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitClassReference(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFieldExpressionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFieldExpressionBase.kt deleted file mode 100644 index f69eb779ab8..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFieldExpressionBase.kt +++ /dev/null @@ -1,24 +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.impl - -import org.jetbrains.kotlin.ir.expressions.IrExpression -import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression - -abstract class IrFieldExpressionBase : IrExpressionBase(), IrFieldAccessExpression { - final override var receiver: IrExpression? = null -} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetEnumValueImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetEnumValueImpl.kt index 84255508009..0c345b02fe1 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetEnumValueImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetEnumValueImpl.kt @@ -26,7 +26,7 @@ class IrGetEnumValueImpl( override val endOffset: Int, override val type: IrType, override val symbol: IrEnumEntrySymbol, -) : IrExpressionBase(), IrGetEnumValue { +) : IrGetEnumValue() { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitGetEnumValue(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetFieldImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetFieldImpl.kt index f979dbe2793..043b0196734 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetFieldImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetFieldImpl.kt @@ -32,7 +32,7 @@ class IrGetFieldImpl( override val type: IrType, override val origin: IrStatementOrigin? = null, override val superQualifierSymbol: IrClassSymbol? = null, -) : IrFieldExpressionBase(), IrGetField { +) : IrGetField() { constructor( startOffset: Int, endOffset: Int, symbol: IrFieldSymbol, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetObjectValueImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetObjectValueImpl.kt index 862c40bff44..9d3c1622959 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetObjectValueImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetObjectValueImpl.kt @@ -26,7 +26,7 @@ class IrGetObjectValueImpl( override val endOffset: Int, override val type: IrType, override val symbol: IrClassSymbol -) : IrExpressionBase(), IrGetObjectValue { +) : IrGetObjectValue() { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitGetObjectValue(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetValueImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetValueImpl.kt index 87a80f2fb72..5e5a6ee05d8 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetValueImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetValueImpl.kt @@ -17,7 +17,7 @@ class IrGetValueImpl( override val type: IrType, override val symbol: IrValueSymbol, override val origin: IrStatementOrigin? = null -) : IrExpressionBase(), IrGetValue { +) : IrGetValue() { constructor( startOffset: Int, endOffset: Int, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrRawFunctionReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrRawFunctionReferenceImpl.kt index 743b289ec49..598f9c4703e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrRawFunctionReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrRawFunctionReferenceImpl.kt @@ -26,7 +26,7 @@ class IrRawFunctionReferenceImpl( override val endOffset: Int, override val type: IrType, override val symbol: IrFunctionSymbol, -) : IrExpressionBase(), IrRawFunctionReference { +) : IrRawFunctionReference() { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitRawFunctionReference(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetFieldImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetFieldImpl.kt index ad48c25ff45..5dc25f748aa 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetFieldImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetFieldImpl.kt @@ -32,7 +32,7 @@ class IrSetFieldImpl( override val type: IrType, override val origin: IrStatementOrigin? = null, override val superQualifierSymbol: IrClassSymbol? = null, -) : IrFieldExpressionBase(), IrSetField { +) : IrSetField() { constructor( startOffset: Int, endOffset: Int, symbol: IrFieldSymbol, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetVariableImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetVariableImpl.kt index 85baf889841..7d86ba6d7cf 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetVariableImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrSetVariableImpl.kt @@ -31,7 +31,7 @@ class IrSetVariableImpl( override val symbol: IrVariableSymbol, override var value: IrExpression, override val origin: IrStatementOrigin? -) : IrExpressionBase(), IrSetVariable { +) : IrSetVariable() { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitSetVariable(this, data) }