From 9aa7da44e25959960c23540241ebea4fbb57da25 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 22 Jul 2020 18:04:22 +0200 Subject: [PATCH] IR: remove IrTerminalExpressionBase, Ir{Terminal,}DeclarationReferenceBase Implement no-op acceptChildren/transformChildren in the base class IrExpressionBase instead. This doesn't change behavior because all other implementations of acceptChildren/transformChildren are not affected. --- .../common/lower/inline/FunctionInlining.kt | 4 +-- .../ir/expressions/IrDeclarationReference.kt | 1 - .../expressions/impl/IrBreakContinueBase.kt | 2 +- .../expressions/impl/IrClassReferenceImpl.kt | 2 +- .../kotlin/ir/expressions/impl/IrConstImpl.kt | 2 +- .../impl/IrDeclarationReferenceBase.kt | 24 -------------- .../expressions/impl/IrErrorExpressionImpl.kt | 2 +- .../ir/expressions/impl/IrExpressionBase.kt | 10 ++++++ .../ir/expressions/impl/IrGetEnumValueImpl.kt | 2 +- .../expressions/impl/IrGetObjectValueImpl.kt | 2 +- .../ir/expressions/impl/IrGetValueImpl.kt | 2 +- .../impl/IrInstanceInitializerCallImpl.kt | 2 +- .../impl/IrRawFunctionReferenceImpl.kt | 2 +- .../IrTerminalDeclarationReferenceBase.kt | 31 ------------------- .../impl/IrTerminalExpressionBase.kt | 30 ------------------ 15 files changed, 21 insertions(+), 97 deletions(-) delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDeclarationReferenceBase.kt delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalDeclarationReferenceBase.kt delete mode 100644 compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalExpressionBase.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 8a171d2fe9e..91861e93c4a 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 - ) : IrTerminalDeclarationReferenceBase(), IrGetValue { + ) : IrExpressionBase(), IrGetValue { override val startOffset: Int get() = UNDEFINED_OFFSET override val endOffset: Int get() = UNDEFINED_OFFSET @@ -537,4 +537,4 @@ class InlinerExpressionLocationHint(val inlineAtSymbol: IrSymbol) : IrStatementO private val functionNameOrDefaultToString: String get() = (inlineAtSymbol as? IrFunction)?.name?.asString() ?: inlineAtSymbol.toString() -} \ No newline at end of file +} 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 aedbcca8535..cef95560440 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 @@ -21,7 +21,6 @@ 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 } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBreakContinueBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBreakContinueBase.kt index 66ceaf9e73c..3c26a32e746 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBreakContinueBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrBreakContinueBase.kt @@ -18,6 +18,6 @@ package org.jetbrains.kotlin.ir.expressions.impl import org.jetbrains.kotlin.ir.expressions.IrBreakContinue -abstract class IrBreakContinueBase : IrTerminalExpressionBase(), IrBreakContinue { +abstract class IrBreakContinueBase : IrExpressionBase(), IrBreakContinue { override var label: String? = null } 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 e5286aa1aa0..e5006f22021 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 -) : IrTerminalDeclarationReferenceBase(), IrClassReference { +) : IrExpressionBase(), 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/IrConstImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstImpl.kt index 798328735be..7d4fc0162b6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstImpl.kt @@ -27,7 +27,7 @@ class IrConstImpl( override val type: IrType, override val kind: IrConstKind, override val value: T -) : IrTerminalExpressionBase(), IrConst { +) : IrExpressionBase(), IrConst { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitConst(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDeclarationReferenceBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDeclarationReferenceBase.kt deleted file mode 100644 index cb8fcb3925d..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDeclarationReferenceBase.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.IrDeclarationReference -import org.jetbrains.kotlin.ir.symbols.IrSymbol - -abstract class IrDeclarationReferenceBase : IrExpressionBase(), IrDeclarationReference { - abstract override val symbol: S -} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrErrorExpressionImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrErrorExpressionImpl.kt index 89f7921a60d..c5aa4efbfbc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrErrorExpressionImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrErrorExpressionImpl.kt @@ -26,7 +26,7 @@ class IrErrorExpressionImpl( override val endOffset: Int, override val type: IrType, override val description: String -) : IrTerminalExpressionBase(), IrExpressionWithCopy, IrErrorExpression { +) : IrExpressionBase(), IrExpressionWithCopy, IrErrorExpression { override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitErrorExpression(this, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrExpressionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrExpressionBase.kt index 6b16a5750d4..d8a2840cdc4 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrExpressionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrExpressionBase.kt @@ -19,8 +19,18 @@ package org.jetbrains.kotlin.ir.expressions.impl import org.jetbrains.kotlin.ir.IrElementBase import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer import org.jetbrains.kotlin.ir.expressions.IrExpression +import org.jetbrains.kotlin.ir.visitors.IrElementTransformer +import org.jetbrains.kotlin.ir.visitors.IrElementVisitor abstract class IrExpressionBase : IrElementBase(), IrExpression { @Suppress("LeakingThis") override var attributeOwnerId: IrAttributeContainer = this + + override fun acceptChildren(visitor: IrElementVisitor, data: D) { + // No children by default + } + + override fun transformChildren(transformer: IrElementTransformer, data: D) { + // No children by default + } } 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 f752a5cfb17..84255508009 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, -) : IrTerminalDeclarationReferenceBase(), IrGetEnumValue { +) : IrExpressionBase(), 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/IrGetObjectValueImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrGetObjectValueImpl.kt index 8eb0ca9c9d9..862c40bff44 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 -) : IrTerminalDeclarationReferenceBase(), IrGetObjectValue { +) : IrExpressionBase(), 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 0078dc77bec..87a80f2fb72 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 -) : IrTerminalDeclarationReferenceBase(), IrGetValue { +) : IrExpressionBase(), IrGetValue { constructor( startOffset: Int, endOffset: Int, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrInstanceInitializerCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrInstanceInitializerCallImpl.kt index 5fa8a8f7c82..9c519e4a00e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrInstanceInitializerCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrInstanceInitializerCallImpl.kt @@ -26,7 +26,7 @@ class IrInstanceInitializerCallImpl( override val endOffset: Int, override val classSymbol: IrClassSymbol, override val type: IrType, -) : IrTerminalExpressionBase(), IrInstanceInitializerCall { +) : IrExpressionBase(), IrInstanceInitializerCall { override fun accept(visitor: IrElementVisitor, data: D): R { return visitor.visitInstanceInitializerCall(this, data) } 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 054bb4c949d..743b289ec49 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, -) : IrTerminalDeclarationReferenceBase(), IrRawFunctionReference { +) : IrExpressionBase(), 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/IrTerminalDeclarationReferenceBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalDeclarationReferenceBase.kt deleted file mode 100644 index c2fc4b114aa..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalDeclarationReferenceBase.kt +++ /dev/null @@ -1,31 +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.symbols.IrSymbol -import org.jetbrains.kotlin.ir.visitors.IrElementTransformer -import org.jetbrains.kotlin.ir.visitors.IrElementVisitor - -abstract class IrTerminalDeclarationReferenceBase : IrDeclarationReferenceBase() { - override fun acceptChildren(visitor: IrElementVisitor, data: D) { - // No children - } - - override fun transformChildren(transformer: IrElementTransformer, data: D) { - // No children - } -} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalExpressionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalExpressionBase.kt deleted file mode 100644 index 6dffc0a7ac1..00000000000 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrTerminalExpressionBase.kt +++ /dev/null @@ -1,30 +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.visitors.IrElementTransformer -import org.jetbrains.kotlin.ir.visitors.IrElementVisitor - -abstract class IrTerminalExpressionBase : IrExpressionBase() { - override fun acceptChildren(visitor: IrElementVisitor, data: D) { - // No children - } - - override fun transformChildren(transformer: IrElementTransformer, data: D) { - // No children - } -}