From b02653a524379f182ebb04007d51cd5f7ce5a76d Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 21 Jul 2020 23:30:30 +0200 Subject: [PATCH] IR: remove base classes IrDeclarationBase and IrFunctionBase They introduce a diamond class hierarchy which prevents IR element hierarchy from being transformed to classes. --- .../impl/IrAnonymousInitializerImpl.kt | 17 ++++-- .../ir/declarations/impl/IrClassImpl.kt | 15 ++++-- .../ir/declarations/impl/IrConstructorImpl.kt | 47 ++++++++++++---- .../ir/declarations/impl/IrDeclarationBase.kt | 43 --------------- .../ir/declarations/impl/IrEnumEntryImpl.kt | 19 ++++--- .../impl/IrErrorDeclarationImpl.kt | 17 ++++-- .../ir/declarations/impl/IrFieldImpl.kt | 19 ++++--- .../ir/declarations/impl/IrFunctionBase.kt | 53 ------------------- .../ir/declarations/impl/IrFunctionImpl.kt | 49 ++++++++++++----- .../impl/IrLocalDelegatedPropertyImpl.kt | 15 ++++-- .../ir/declarations/impl/IrPropertyImpl.kt | 15 ++++-- .../ir/declarations/impl/IrTypeAliasImpl.kt | 19 ++++--- .../declarations/impl/IrTypeParameterImpl.kt | 17 ++++-- .../declarations/impl/IrValueParameterImpl.kt | 17 ++++-- 14 files changed, 194 insertions(+), 168 deletions(-) delete mode 100644 compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt delete mode 100644 compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrAnonymousInitializerImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrAnonymousInitializerImpl.kt index 65ad050726f..55e2aaf614a 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrAnonymousInitializerImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrAnonymousInitializerImpl.kt @@ -19,21 +19,30 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.expressions.IrBlockBody +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol class IrAnonymousInitializerImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrAnonymousInitializerSymbol, override val isStatic: Boolean = false -) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer { +) : IrAnonymousInitializer { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: ClassDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt index 1a1175d3a83..72b65d1d20e 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt @@ -19,14 +19,15 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrClassImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrClassSymbol, override val name: Name, override val kind: ClassKind, @@ -40,11 +41,17 @@ class IrClassImpl( override val isExpect: Boolean = false, override val isFun: Boolean = false, override val source: SourceElement = SourceElement.NO_SOURCE -) : IrDeclarationBase(startOffset, endOffset, origin), IrClass { +) : IrClass { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: ClassDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt index 0fd96f3f8a8..e08d7249be8 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrConstructorImpl.kt @@ -19,29 +19,54 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrConstructor -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrBody +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrConstructorImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrConstructorSymbol, - name: Name, - visibility: Visibility, + override val name: Name, + override var visibility: Visibility, returnType: IrType, - isInline: Boolean, - isExternal: Boolean, + override val isInline: Boolean, + override val isExternal: Boolean, override val isPrimary: Boolean, - isExpect: Boolean -) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrConstructor { + override val isExpect: Boolean, +) : IrConstructor { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + + @Suppress("DEPRECATION") + override var returnType: IrType = returnType + get() = if (field === org.jetbrains.kotlin.ir.types.impl.IrUninitializedType) { + error("Return type is not initialized") + } else { + field + } + + override var typeParameters: List = emptyList() + + override var dispatchReceiverParameter: IrValueParameter? = null + override var extensionReceiverParameter: IrValueParameter? = null + override var valueParameters: List = emptyList() + + override var body: IrBody? = null + + override var metadata: MetadataSource? = null + @ObsoleteDescriptorBasedAPI override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt deleted file mode 100644 index fbb47fe0f5c..00000000000 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrDeclarationBase.kt +++ /dev/null @@ -1,43 +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.declarations.impl - -import org.jetbrains.kotlin.ir.IrElementBase -import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent -import org.jetbrains.kotlin.ir.declarations.IrFactory -import org.jetbrains.kotlin.ir.expressions.IrConstructorCall - -abstract class IrDeclarationBase( - startOffset: Int, - endOffset: Int, - override var origin: IrDeclarationOrigin -) : IrElementBase(startOffset, endOffset), IrDeclaration { - override val factory: IrFactory - get() = IrFactoryImpl - - private var _parent: IrDeclarationParent? = null - override var parent: IrDeclarationParent - get() = _parent - ?: throw UninitializedPropertyAccessException("Parent not initialized: $this") - set(v) { - _parent = v - } - - override var annotations: List = emptyList() -} diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt index 5e2d33aa54f..e7f75f4eb35 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt @@ -18,24 +18,29 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrEnumEntry +import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol import org.jetbrains.kotlin.name.Name class IrEnumEntryImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrEnumEntrySymbol, override val name: Name -) : IrDeclarationBase(startOffset, endOffset, origin), IrEnumEntry { +) : IrEnumEntry { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: ClassDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt index b2c8bca22bf..30bcdc17b91 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrErrorDeclarationImpl.kt @@ -18,12 +18,23 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall @OptIn(ObsoleteDescriptorBasedAPI::class) class IrErrorDeclarationImpl( - startOffset: Int, - endOffset: Int, + override val startOffset: Int, + override val endOffset: Int, override val descriptor: DeclarationDescriptor -) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOrigin.DEFINED), IrErrorDeclaration +) : IrErrorDeclaration { + override var origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED + + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() +} diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt index 44a3dfae7de..5f77315d4bf 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt @@ -19,9 +19,8 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrField -import org.jetbrains.kotlin.ir.declarations.MetadataSource +import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol @@ -29,9 +28,9 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrFieldImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrFieldSymbol, override val name: Name, override val type: IrType, @@ -39,11 +38,17 @@ class IrFieldImpl( override val isFinal: Boolean, override val isExternal: Boolean, override val isStatic: Boolean, -) : IrDeclarationBase(startOffset, endOffset, origin), IrField { +) : IrField { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: PropertyDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt deleted file mode 100644 index 51b0500aed0..00000000000 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionBase.kt +++ /dev/null @@ -1,53 +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.declarations.impl - -import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.expressions.IrBody -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.name.Name - -abstract class IrFunctionBase( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - override val name: Name, - override var visibility: Visibility, - override val isInline: Boolean, - override val isExternal: Boolean, - override val isExpect: Boolean, - returnType: IrType -) : IrDeclarationBase(startOffset, endOffset, origin), IrFunction { - @Suppress("DEPRECATION") - final override var returnType: IrType = returnType - get() = if (field === org.jetbrains.kotlin.ir.types.impl.IrUninitializedType) { - error("Return type is not initialized") - } else { - field - } - - override var typeParameters: List = emptyList() - - override var dispatchReceiverParameter: IrValueParameter? = null - override var extensionReceiverParameter: IrValueParameter? = null - override var valueParameters: List = emptyList() - - final override var body: IrBody? = null - - override var metadata: MetadataSource? = null -} diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt index 2412861b347..6ff452a2fe0 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt @@ -9,31 +9,54 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrFakeOverrideFunction -import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor +import org.jetbrains.kotlin.ir.expressions.IrBody +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name abstract class IrFunctionCommonImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - name: Name, - visibility: Visibility, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, + override val name: Name, + override var visibility: Visibility, returnType: IrType, - isInline: Boolean, - isExternal: Boolean, + override val isInline: Boolean, + override val isExternal: Boolean, override val isTailrec: Boolean, override val isSuspend: Boolean, override val isOperator: Boolean, override val isInfix: Boolean, - isExpect: Boolean, -) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrSimpleFunction { + override val isExpect: Boolean, +) : IrSimpleFunction { + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + + @Suppress("DEPRECATION") + override var returnType: IrType = returnType + get() = if (field === org.jetbrains.kotlin.ir.types.impl.IrUninitializedType) { + error("Return type is not initialized") + } else { + field + } + + override var typeParameters: List = emptyList() + + override var dispatchReceiverParameter: IrValueParameter? = null + override var extensionReceiverParameter: IrValueParameter? = null + override var valueParameters: List = emptyList() + + override var body: IrBody? = null + + override var metadata: MetadataSource? = null + override var overriddenSymbols: List = emptyList() @Suppress("LeakingThis") diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt index 37831c6de5f..239f6ed3634 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrLocalDelegatedPropertyImpl.kt @@ -19,23 +19,30 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrLocalDelegatedPropertyImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrLocalDelegatedPropertySymbol, override val name: Name, override val type: IrType, override val isVar: Boolean -) : IrDeclarationBase(startOffset, endOffset, origin), IrLocalDelegatedProperty { +) : IrLocalDelegatedProperty { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: VariableDescriptorWithAccessors get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt index 4f068d3d42f..1e9105b215a 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrPropertyImpl.kt @@ -22,13 +22,14 @@ import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.descriptors.WrappedPropertyDescriptor +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.name.Name abstract class IrPropertyCommonImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val name: Name, override var visibility: Visibility, override val isVar: Boolean, @@ -37,7 +38,13 @@ abstract class IrPropertyCommonImpl( override val isDelegated: Boolean, override val isExternal: Boolean, override val isExpect: Boolean, -) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty { +) : IrProperty { + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + override var backingField: IrField? = null override var getter: IrSimpleFunction? = null diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt index b837fa112f6..634cb65a010 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt @@ -8,27 +8,32 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrTypeAlias -import org.jetbrains.kotlin.ir.declarations.IrTypeParameter +import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrTypeAliasImpl( - startOffset: Int, - endOffset: Int, + override val startOffset: Int, + override val endOffset: Int, override val symbol: IrTypeAliasSymbol, override val name: Name, override var visibility: Visibility, override val expandedType: IrType, override val isActual: Boolean, - origin: IrDeclarationOrigin -) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias { + override var origin: IrDeclarationOrigin +) : IrTypeAlias { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: TypeAliasDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeParameterImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeParameterImpl.kt index b6af55304ea..48ccbecc4bb 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeParameterImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeParameterImpl.kt @@ -18,8 +18,11 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrTypeParameter +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name @@ -27,19 +30,25 @@ import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.SmartList class IrTypeParameterImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrTypeParameterSymbol, override val name: Name, override val index: Int, override val isReified: Boolean, override val variance: Variance -) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeParameter { +) : IrTypeParameter { init { symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + @ObsoleteDescriptorBasedAPI override val descriptor: TypeParameterDescriptor get() = symbol.descriptor diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt index 027122c5016..e943371b993 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt @@ -18,17 +18,20 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.ParameterDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI +import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.name.Name class IrValueParameterImpl( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, + override val startOffset: Int, + override val endOffset: Int, + override var origin: IrDeclarationOrigin, override val symbol: IrValueParameterSymbol, override val name: Name, override val index: Int, @@ -36,7 +39,7 @@ class IrValueParameterImpl( override val varargElementType: IrType?, override val isCrossinline: Boolean, override val isNoinline: Boolean -) : IrDeclarationBase(startOffset, endOffset, origin), IrValueParameter { +) : IrValueParameter { @ObsoleteDescriptorBasedAPI override val descriptor: ParameterDescriptor get() = symbol.descriptor @@ -45,5 +48,11 @@ class IrValueParameterImpl( symbol.bind(this) } + override val factory: IrFactory + get() = IrFactoryImpl + + override lateinit var parent: IrDeclarationParent + override var annotations: List = emptyList() + override var defaultValue: IrExpressionBody? = null }