IR: remove base classes IrDeclarationBase and IrFunctionBase

They introduce a diamond class hierarchy which prevents IR element
hierarchy from being transformed to classes.
This commit is contained in:
Alexander Udalov
2020-07-21 23:30:30 +02:00
parent 9152df4702
commit b02653a524
14 changed files with 194 additions and 168 deletions
@@ -19,21 +19,30 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer 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.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.expressions.IrBlockBody import org.jetbrains.kotlin.ir.expressions.IrBlockBody
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
class IrAnonymousInitializerImpl( class IrAnonymousInitializerImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrAnonymousInitializerSymbol, override val symbol: IrAnonymousInitializerSymbol,
override val isStatic: Boolean = false override val isStatic: Boolean = false
) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer { ) : IrAnonymousInitializer {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ClassDescriptor override val descriptor: ClassDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -19,14 +19,15 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.* 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.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrClassImpl( class IrClassImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrClassSymbol, override val symbol: IrClassSymbol,
override val name: Name, override val name: Name,
override val kind: ClassKind, override val kind: ClassKind,
@@ -40,11 +41,17 @@ class IrClassImpl(
override val isExpect: Boolean = false, override val isExpect: Boolean = false,
override val isFun: Boolean = false, override val isFun: Boolean = false,
override val source: SourceElement = SourceElement.NO_SOURCE override val source: SourceElement = SourceElement.NO_SOURCE
) : IrDeclarationBase(startOffset, endOffset, origin), IrClass { ) : IrClass {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ClassDescriptor override val descriptor: ClassDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -19,29 +19,54 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin 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.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrConstructorImpl( class IrConstructorImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrConstructorSymbol, override val symbol: IrConstructorSymbol,
name: Name, override val name: Name,
visibility: Visibility, override var visibility: Visibility,
returnType: IrType, returnType: IrType,
isInline: Boolean, override val isInline: Boolean,
isExternal: Boolean, override val isExternal: Boolean,
override val isPrimary: Boolean, override val isPrimary: Boolean,
isExpect: Boolean override val isExpect: Boolean,
) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrConstructor { ) : IrConstructor {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = 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<IrTypeParameter> = emptyList()
override var dispatchReceiverParameter: IrValueParameter? = null
override var extensionReceiverParameter: IrValueParameter? = null
override var valueParameters: List<IrValueParameter> = emptyList()
override var body: IrBody? = null
override var metadata: MetadataSource? = null
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ClassConstructorDescriptor override val descriptor: ClassConstructorDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -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<IrConstructorCall> = emptyList()
}
@@ -18,24 +18,29 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrEnumEntryImpl( class IrEnumEntryImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrEnumEntrySymbol, override val symbol: IrEnumEntrySymbol,
override val name: Name override val name: Name
) : IrDeclarationBase(startOffset, endOffset, origin), IrEnumEntry { ) : IrEnumEntry {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ClassDescriptor override val descriptor: ClassDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -18,12 +18,23 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI 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.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
@OptIn(ObsoleteDescriptorBasedAPI::class) @OptIn(ObsoleteDescriptorBasedAPI::class)
class IrErrorDeclarationImpl( class IrErrorDeclarationImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
override val descriptor: DeclarationDescriptor 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<IrConstructorCall> = emptyList()
}
@@ -19,9 +19,8 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
@@ -29,9 +28,9 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrFieldImpl( class IrFieldImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrFieldSymbol, override val symbol: IrFieldSymbol,
override val name: Name, override val name: Name,
override val type: IrType, override val type: IrType,
@@ -39,11 +38,17 @@ class IrFieldImpl(
override val isFinal: Boolean, override val isFinal: Boolean,
override val isExternal: Boolean, override val isExternal: Boolean,
override val isStatic: Boolean, override val isStatic: Boolean,
) : IrDeclarationBase(startOffset, endOffset, origin), IrField { ) : IrField {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: PropertyDescriptor override val descriptor: PropertyDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -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<IrTypeParameter> = emptyList()
override var dispatchReceiverParameter: IrValueParameter? = null
override var extensionReceiverParameter: IrValueParameter? = null
override var valueParameters: List<IrValueParameter> = emptyList()
final override var body: IrBody? = null
override var metadata: MetadataSource? = null
}
@@ -9,31 +9,54 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer import org.jetbrains.kotlin.ir.declarations.*
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.descriptors.WrappedSimpleFunctionDescriptor 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.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
abstract class IrFunctionCommonImpl( abstract class IrFunctionCommonImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
name: Name, override val name: Name,
visibility: Visibility, override var visibility: Visibility,
returnType: IrType, returnType: IrType,
isInline: Boolean, override val isInline: Boolean,
isExternal: Boolean, override val isExternal: Boolean,
override val isTailrec: Boolean, override val isTailrec: Boolean,
override val isSuspend: Boolean, override val isSuspend: Boolean,
override val isOperator: Boolean, override val isOperator: Boolean,
override val isInfix: Boolean, override val isInfix: Boolean,
isExpect: Boolean, override val isExpect: Boolean,
) : IrFunctionBase(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType), IrSimpleFunction { ) : IrSimpleFunction {
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = 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<IrTypeParameter> = emptyList()
override var dispatchReceiverParameter: IrValueParameter? = null
override var extensionReceiverParameter: IrValueParameter? = null
override var valueParameters: List<IrValueParameter> = emptyList()
override var body: IrBody? = null
override var metadata: MetadataSource? = null
override var overriddenSymbols: List<IrSimpleFunctionSymbol> = emptyList() override var overriddenSymbols: List<IrSimpleFunctionSymbol> = emptyList()
@Suppress("LeakingThis") @Suppress("LeakingThis")
@@ -19,23 +19,30 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.* 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.symbols.IrLocalDelegatedPropertySymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrLocalDelegatedPropertyImpl( class IrLocalDelegatedPropertyImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrLocalDelegatedPropertySymbol, override val symbol: IrLocalDelegatedPropertySymbol,
override val name: Name, override val name: Name,
override val type: IrType, override val type: IrType,
override val isVar: Boolean override val isVar: Boolean
) : IrDeclarationBase(startOffset, endOffset, origin), IrLocalDelegatedProperty { ) : IrLocalDelegatedProperty {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: VariableDescriptorWithAccessors override val descriptor: VariableDescriptorWithAccessors
get() = symbol.descriptor get() = symbol.descriptor
@@ -22,13 +22,14 @@ import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.descriptors.WrappedPropertyDescriptor 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.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
abstract class IrPropertyCommonImpl( abstract class IrPropertyCommonImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val name: Name, override val name: Name,
override var visibility: Visibility, override var visibility: Visibility,
override val isVar: Boolean, override val isVar: Boolean,
@@ -37,7 +38,13 @@ abstract class IrPropertyCommonImpl(
override val isDelegated: Boolean, override val isDelegated: Boolean,
override val isExternal: Boolean, override val isExternal: Boolean,
override val isExpect: 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<IrConstructorCall> = emptyList()
override var backingField: IrField? = null override var backingField: IrField? = null
override var getter: IrSimpleFunction? = null override var getter: IrSimpleFunction? = null
@@ -8,27 +8,32 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrTypeAlias import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrTypeAliasImpl( class IrTypeAliasImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
override val symbol: IrTypeAliasSymbol, override val symbol: IrTypeAliasSymbol,
override val name: Name, override val name: Name,
override var visibility: Visibility, override var visibility: Visibility,
override val expandedType: IrType, override val expandedType: IrType,
override val isActual: Boolean, override val isActual: Boolean,
origin: IrDeclarationOrigin override var origin: IrDeclarationOrigin
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias { ) : IrTypeAlias {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: TypeAliasDescriptor override val descriptor: TypeAliasDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -18,8 +18,11 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI 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.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter 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.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -27,19 +30,25 @@ import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.SmartList
class IrTypeParameterImpl( class IrTypeParameterImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrTypeParameterSymbol, override val symbol: IrTypeParameterSymbol,
override val name: Name, override val name: Name,
override val index: Int, override val index: Int,
override val isReified: Boolean, override val isReified: Boolean,
override val variance: Variance override val variance: Variance
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeParameter { ) : IrTypeParameter {
init { init {
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: TypeParameterDescriptor override val descriptor: TypeParameterDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -18,17 +18,20 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ParameterDescriptor import org.jetbrains.kotlin.descriptors.ParameterDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI 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.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.declarations.IrValueParameter 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.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
class IrValueParameterImpl( class IrValueParameterImpl(
startOffset: Int, override val startOffset: Int,
endOffset: Int, override val endOffset: Int,
origin: IrDeclarationOrigin, override var origin: IrDeclarationOrigin,
override val symbol: IrValueParameterSymbol, override val symbol: IrValueParameterSymbol,
override val name: Name, override val name: Name,
override val index: Int, override val index: Int,
@@ -36,7 +39,7 @@ class IrValueParameterImpl(
override val varargElementType: IrType?, override val varargElementType: IrType?,
override val isCrossinline: Boolean, override val isCrossinline: Boolean,
override val isNoinline: Boolean override val isNoinline: Boolean
) : IrDeclarationBase(startOffset, endOffset, origin), IrValueParameter { ) : IrValueParameter {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ParameterDescriptor override val descriptor: ParameterDescriptor
get() = symbol.descriptor get() = symbol.descriptor
@@ -45,5 +48,11 @@ class IrValueParameterImpl(
symbol.bind(this) symbol.bind(this)
} }
override val factory: IrFactory
get() = IrFactoryImpl
override lateinit var parent: IrDeclarationParent
override var annotations: List<IrConstructorCall> = emptyList()
override var defaultValue: IrExpressionBody? = null override var defaultValue: IrExpressionBody? = null
} }