Add basic properties to IR declarations
This commit is contained in:
@@ -17,9 +17,11 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ValueDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface IrClass : IrSymbolDeclaration<IrClassSymbol>, IrDeclarationContainer, IrTypeParametersContainer {
|
interface IrClass : IrSymbolDeclaration<IrClassSymbol>, IrDeclarationContainer, IrTypeParametersContainer {
|
||||||
override val declarationKind: IrDeclarationKind
|
override val declarationKind: IrDeclarationKind
|
||||||
@@ -27,6 +29,13 @@ interface IrClass : IrSymbolDeclaration<IrClassSymbol>, IrDeclarationContainer,
|
|||||||
|
|
||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
val kind: ClassKind
|
||||||
|
val visibility: Visibility
|
||||||
|
val modality: Modality
|
||||||
|
val isCompanion: Boolean
|
||||||
|
val isData: Boolean
|
||||||
|
|
||||||
var thisReceiver: IrValueParameter?
|
var thisReceiver: IrValueParameter?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,6 @@ interface IrDeclarationOrigin {
|
|||||||
object IR_BUILTINS_STUB : IrDeclarationOriginImpl("IR_BUILTINS_STUB")
|
object IR_BUILTINS_STUB : IrDeclarationOriginImpl("IR_BUILTINS_STUB")
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class IrDeclarationOriginImpl(val name: String): IrDeclarationOrigin {
|
abstract class IrDeclarationOriginImpl(val name: String) : IrDeclarationOrigin {
|
||||||
override fun toString(): String = name
|
override fun toString(): String = name
|
||||||
}
|
}
|
||||||
@@ -19,12 +19,15 @@ package org.jetbrains.kotlin.ir.declarations
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface IrEnumEntry : IrSymbolDeclaration<IrEnumEntrySymbol> {
|
interface IrEnumEntry : IrSymbolDeclaration<IrEnumEntrySymbol> {
|
||||||
override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.ENUM_ENTRY
|
override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.ENUM_ENTRY
|
||||||
|
|
||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
|
||||||
var correspondingClass: IrClass?
|
var correspondingClass: IrClass?
|
||||||
var initializerExpression: IrExpression?
|
var initializerExpression: IrExpression?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
|
interface IrField : IrSymbolDeclaration<IrFieldSymbol> {
|
||||||
|
override val descriptor: PropertyDescriptor
|
||||||
|
|
||||||
|
override val declarationKind: IrDeclarationKind
|
||||||
|
get() = IrDeclarationKind.FIELD
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
val type: KotlinType
|
||||||
|
val visibility: Visibility
|
||||||
|
var initializer: IrExpressionBody?
|
||||||
|
}
|
||||||
@@ -24,10 +24,13 @@ import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrPackageFragmentSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrPackageFragmentSymbol
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
interface IrPackageFragment : IrElement, IrDeclarationContainer, IrSymbolOwner {
|
interface IrPackageFragment : IrElement, IrDeclarationContainer, IrSymbolOwner {
|
||||||
val packageFragmentDescriptor: PackageFragmentDescriptor
|
val packageFragmentDescriptor: PackageFragmentDescriptor
|
||||||
override val symbol: IrPackageFragmentSymbol
|
override val symbol: IrPackageFragmentSymbol
|
||||||
|
|
||||||
|
val fqName: FqName
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrExternalPackageFragment : IrPackageFragment {
|
interface IrExternalPackageFragment : IrPackageFragment {
|
||||||
|
|||||||
@@ -18,14 +18,19 @@ package org.jetbrains.kotlin.ir.declarations
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
interface IrFunction : IrDeclaration, IrTypeParametersContainer, IrSymbolOwner {
|
interface IrFunction : IrDeclaration, IrTypeParametersContainer, IrSymbolOwner {
|
||||||
override val descriptor: FunctionDescriptor
|
override val descriptor: FunctionDescriptor
|
||||||
override val symbol : IrFunctionSymbol
|
override val symbol: IrFunctionSymbol
|
||||||
|
|
||||||
|
val visibility: Visibility
|
||||||
|
val isInline: Boolean // NB: there's an inline constructor for Array and each primitive array class
|
||||||
|
val returnType: KotlinType
|
||||||
|
|
||||||
var dispatchReceiverParameter: IrValueParameter?
|
var dispatchReceiverParameter: IrValueParameter?
|
||||||
var extensionReceiverParameter: IrValueParameter?
|
var extensionReceiverParameter: IrValueParameter?
|
||||||
@@ -35,11 +40,6 @@ interface IrFunction : IrDeclaration, IrTypeParametersContainer, IrSymbolOwner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
interface IrSimpleFunction : IrFunction, IrSymbolDeclaration<IrSimpleFunctionSymbol> {
|
|
||||||
override val declarationKind: IrDeclarationKind
|
|
||||||
get() = IrDeclarationKind.FUNCTION
|
|
||||||
}
|
|
||||||
|
|
||||||
fun IrFunction.getIrValueParameter(parameter: ValueParameterDescriptor): IrValueParameter =
|
fun IrFunction.getIrValueParameter(parameter: ValueParameterDescriptor): IrValueParameter =
|
||||||
valueParameters.getOrElse(parameter.index) {
|
valueParameters.getOrElse(parameter.index) {
|
||||||
throw AssertionError("No IrValueParameter for $parameter")
|
throw AssertionError("No IrValueParameter for $parameter")
|
||||||
|
|||||||
+7
@@ -17,9 +17,16 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
interface IrLocalDelegatedProperty : IrDeclaration {
|
interface IrLocalDelegatedProperty : IrDeclaration {
|
||||||
override val descriptor: VariableDescriptorWithAccessors
|
override val descriptor: VariableDescriptorWithAccessors
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
val type: KotlinType
|
||||||
|
val isVar: Boolean
|
||||||
|
|
||||||
var delegate: IrVariable
|
var delegate: IrVariable
|
||||||
var getter: IrFunction
|
var getter: IrFunction
|
||||||
var setter: IrFunction?
|
var setter: IrFunction?
|
||||||
|
|||||||
@@ -21,8 +21,10 @@ import org.jetbrains.kotlin.ir.IrElement
|
|||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface IrModuleFragment : IrElement {
|
interface IrModuleFragment : IrElement {
|
||||||
|
val name: Name
|
||||||
val descriptor: ModuleDescriptor
|
val descriptor: ModuleDescriptor
|
||||||
val irBuiltins: IrBuiltIns
|
val irBuiltins: IrBuiltIns
|
||||||
val files: MutableList<IrFile>
|
val files: MutableList<IrFile>
|
||||||
|
|||||||
@@ -16,14 +16,26 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
interface IrProperty : IrDeclaration {
|
interface IrProperty : IrDeclaration {
|
||||||
override val descriptor: PropertyDescriptor
|
override val descriptor: PropertyDescriptor
|
||||||
val typeParameters: MutableList<IrTypeParameter>
|
|
||||||
|
val name: Name
|
||||||
|
val type: KotlinType
|
||||||
|
val modality: Modality
|
||||||
|
val visibility: Visibility
|
||||||
|
val isVar: Boolean
|
||||||
|
val isConst: Boolean
|
||||||
|
val isLateinit: Boolean
|
||||||
val isDelegated: Boolean
|
val isDelegated: Boolean
|
||||||
|
|
||||||
|
val typeParameters: MutableList<IrTypeParameter>
|
||||||
|
|
||||||
var backingField: IrField?
|
var backingField: IrField?
|
||||||
var getter: IrFunction?
|
var getter: IrFunction?
|
||||||
var setter: IrFunction?
|
var setter: IrFunction?
|
||||||
@@ -31,12 +43,3 @@ interface IrProperty : IrDeclaration {
|
|||||||
override val declarationKind: IrDeclarationKind
|
override val declarationKind: IrDeclarationKind
|
||||||
get() = IrDeclarationKind.PROPERTY
|
get() = IrDeclarationKind.PROPERTY
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrField : IrSymbolDeclaration<IrFieldSymbol> {
|
|
||||||
override val descriptor: PropertyDescriptor
|
|
||||||
|
|
||||||
override val declarationKind: IrDeclarationKind
|
|
||||||
get() = IrDeclarationKind.FIELD
|
|
||||||
|
|
||||||
var initializer: IrExpressionBody?
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
|
interface IrSimpleFunction : IrFunction, IrSymbolDeclaration<IrSimpleFunctionSymbol> {
|
||||||
|
val name: Name
|
||||||
|
val modality: Modality
|
||||||
|
val isTailrec: Boolean
|
||||||
|
val isSuspend: Boolean
|
||||||
|
|
||||||
|
override val declarationKind: IrDeclarationKind
|
||||||
|
get() = IrDeclarationKind.FUNCTION
|
||||||
|
}
|
||||||
@@ -19,6 +19,9 @@ package org.jetbrains.kotlin.ir.declarations
|
|||||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
|
||||||
interface IrTypeParameter : IrSymbolDeclaration<IrTypeParameterSymbol> {
|
interface IrTypeParameter : IrSymbolDeclaration<IrTypeParameterSymbol> {
|
||||||
override val declarationKind: IrDeclarationKind
|
override val declarationKind: IrDeclarationKind
|
||||||
@@ -26,5 +29,10 @@ interface IrTypeParameter : IrSymbolDeclaration<IrTypeParameterSymbol> {
|
|||||||
|
|
||||||
override val descriptor: TypeParameterDescriptor
|
override val descriptor: TypeParameterDescriptor
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
val variance: Variance
|
||||||
|
val index: Int
|
||||||
|
val upperBounds: List<KotlinType>
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrTypeParameter
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrTypeParameter
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,8 @@ import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
|||||||
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.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
interface IrValueParameter : IrSymbolDeclaration<IrValueParameterSymbol> {
|
interface IrValueParameter : IrSymbolDeclaration<IrValueParameterSymbol> {
|
||||||
override val declarationKind: IrDeclarationKind
|
override val declarationKind: IrDeclarationKind
|
||||||
@@ -27,7 +29,14 @@ interface IrValueParameter : IrSymbolDeclaration<IrValueParameterSymbol> {
|
|||||||
|
|
||||||
override val descriptor: ParameterDescriptor
|
override val descriptor: ParameterDescriptor
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrValueParameter
|
val name: Name
|
||||||
|
val index: Int
|
||||||
|
val type: KotlinType
|
||||||
|
val varargElementType: KotlinType?
|
||||||
|
val isCrossinline: Boolean
|
||||||
|
val isNoinline: Boolean
|
||||||
|
|
||||||
var defaultValue: IrExpressionBody?
|
var defaultValue: IrExpressionBody?
|
||||||
|
|
||||||
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrValueParameter
|
||||||
}
|
}
|
||||||
@@ -19,10 +19,18 @@ package org.jetbrains.kotlin.ir.declarations
|
|||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
interface IrVariable : IrSymbolDeclaration<IrVariableSymbol> {
|
interface IrVariable : IrSymbolDeclaration<IrVariableSymbol> {
|
||||||
override val descriptor: VariableDescriptor
|
override val descriptor: VariableDescriptor
|
||||||
|
|
||||||
|
val name: Name
|
||||||
|
val type: KotlinType
|
||||||
|
val isVar: Boolean
|
||||||
|
val isConst: Boolean
|
||||||
|
val isLateinit: Boolean
|
||||||
|
|
||||||
override val declarationKind: IrDeclarationKind
|
override val declarationKind: IrDeclarationKind
|
||||||
get() = IrDeclarationKind.VARIABLE
|
get() = IrDeclarationKind.VARIABLE
|
||||||
|
|
||||||
|
|||||||
@@ -17,21 +17,40 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.util.transform
|
import org.jetbrains.kotlin.ir.util.transform
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
import kotlin.collections.ArrayList
|
|
||||||
|
|
||||||
class IrClassImpl(
|
class IrClassImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrClassSymbol
|
override val symbol: IrClassSymbol,
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrClass {
|
override val name: Name,
|
||||||
|
override val kind: ClassKind,
|
||||||
|
override val visibility: Visibility,
|
||||||
|
override val modality: Modality,
|
||||||
|
override val isCompanion: Boolean,
|
||||||
|
override val isData: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrClass {
|
||||||
|
|
||||||
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, symbol: IrClassSymbol) :
|
||||||
|
this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.name, symbol.descriptor.kind,
|
||||||
|
symbol.descriptor.visibility, symbol.descriptor.modality,
|
||||||
|
symbol.descriptor.isCompanionObject, symbol.descriptor.isData
|
||||||
|
)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrClassSymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrClassSymbolImpl(descriptor))
|
||||||
|
|
||||||
|
|||||||
+34
-10
@@ -17,26 +17,51 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
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.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
class IrConstructorImpl(
|
class IrConstructorImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrConstructorSymbol
|
override val symbol: IrConstructorSymbol,
|
||||||
) : IrFunctionBase(startOffset, endOffset, origin), IrConstructor {
|
visibility: Visibility,
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor) :
|
returnType: KotlinType,
|
||||||
this(startOffset, endOffset, origin, IrConstructorSymbolImpl(descriptor))
|
isInline: Boolean
|
||||||
|
) :
|
||||||
|
IrFunctionBase(startOffset, endOffset, origin, visibility, isInline, returnType),
|
||||||
|
IrConstructor {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor,
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
symbol: IrConstructorSymbol
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.visibility,
|
||||||
|
symbol.descriptor.returnType,
|
||||||
|
symbol.descriptor.isInline
|
||||||
|
)
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: ClassConstructorDescriptor
|
||||||
|
) : this(startOffset, endOffset, origin, IrConstructorSymbolImpl(descriptor))
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: ClassConstructorDescriptor,
|
||||||
body: IrBody
|
body: IrBody
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.body = body
|
this.body = body
|
||||||
@@ -48,7 +73,6 @@ class IrConstructorImpl(
|
|||||||
|
|
||||||
override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor
|
override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
return visitor.visitConstructor(this, data)
|
visitor.visitConstructor(this, data)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+9
-3
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
|
import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
|
||||||
@@ -26,13 +25,20 @@ import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrEnumEntrySymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrEnumEntrySymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrEnumEntryImpl(
|
class IrEnumEntryImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrEnumEntrySymbol
|
override val symbol: IrEnumEntrySymbol,
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrEnumEntry {
|
override val name: Name
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrEnumEntry {
|
||||||
|
|
||||||
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, symbol: IrEnumEntrySymbol) :
|
||||||
|
this(startOffset, endOffset, origin, symbol, symbol.descriptor.name)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrEnumEntrySymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrEnumEntrySymbolImpl(descriptor))
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -24,10 +24,15 @@ import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
class IrExternalPackageFragmentImpl(
|
class IrExternalPackageFragmentImpl(
|
||||||
override val symbol: IrExternalPackageFragmentSymbol
|
override val symbol: IrExternalPackageFragmentSymbol,
|
||||||
|
override val fqName: FqName
|
||||||
) : IrExternalPackageFragment, IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
) : IrExternalPackageFragment, IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
|
||||||
|
|
||||||
|
constructor(symbol: IrExternalPackageFragmentSymbol) : this(symbol, symbol.descriptor.fqName)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,26 +17,38 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
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.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrField
|
import org.jetbrains.kotlin.ir.declarations.IrField
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
|
||||||
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.impl.IrFieldSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
|
|
||||||
class IrFieldImpl(
|
class IrFieldImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrFieldSymbol
|
override val symbol: IrFieldSymbol,
|
||||||
): IrDeclarationBase(startOffset, endOffset, origin), IrField {
|
override val name: Name,
|
||||||
|
override val type: KotlinType,
|
||||||
|
override val visibility: Visibility
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrField {
|
||||||
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, symbol: IrFieldSymbol) :
|
||||||
|
this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.name, symbol.descriptor.type, symbol.descriptor.visibility
|
||||||
|
)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrFieldSymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrFieldSymbolImpl(descriptor))
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor,
|
constructor(
|
||||||
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor,
|
||||||
initializer: IrExpressionBody?
|
initializer: IrExpressionBody?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.initializer = initializer
|
this.initializer = initializer
|
||||||
|
|||||||
@@ -26,15 +26,21 @@ import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class IrFileImpl(
|
class IrFileImpl(
|
||||||
override val fileEntry: SourceManager.FileEntry,
|
override val fileEntry: SourceManager.FileEntry,
|
||||||
override val symbol: IrFileSymbol
|
override val symbol: IrFileSymbol,
|
||||||
|
override val fqName: FqName
|
||||||
) : IrElementBase(0, fileEntry.maxOffset), IrFile {
|
) : IrElementBase(0, fileEntry.maxOffset), IrFile {
|
||||||
constructor(fileEntry: SourceManager.FileEntry, packageFragmentDescriptor: PackageFragmentDescriptor)
|
|
||||||
: this(fileEntry, IrFileSymbolImpl(packageFragmentDescriptor))
|
constructor(fileEntry: SourceManager.FileEntry, symbol: IrFileSymbol) :
|
||||||
|
this(fileEntry, symbol, symbol.descriptor.fqName)
|
||||||
|
|
||||||
|
constructor(fileEntry: SourceManager.FileEntry, packageFragmentDescriptor: PackageFragmentDescriptor) :
|
||||||
|
this(fileEntry, IrFileSymbolImpl(packageFragmentDescriptor), packageFragmentDescriptor.fqName)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
fileEntry: SourceManager.FileEntry,
|
fileEntry: SourceManager.FileEntry,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
|
||||||
@@ -24,12 +25,16 @@ import org.jetbrains.kotlin.ir.expressions.IrBody
|
|||||||
import org.jetbrains.kotlin.ir.util.transform
|
import org.jetbrains.kotlin.ir.util.transform
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
|
|
||||||
abstract class IrFunctionBase(
|
abstract class IrFunctionBase(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin
|
origin: IrDeclarationOrigin,
|
||||||
|
override val visibility: Visibility,
|
||||||
|
override val isInline: Boolean,
|
||||||
|
override val returnType: KotlinType
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrFunction {
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrFunction {
|
||||||
override val typeParameters: MutableList<IrTypeParameter> = SmartList()
|
override val typeParameters: MutableList<IrTypeParameter> = SmartList()
|
||||||
|
|
||||||
|
|||||||
+41
-4
@@ -17,23 +17,60 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
class IrFunctionImpl(
|
class IrFunctionImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrSimpleFunctionSymbol
|
override val symbol: IrSimpleFunctionSymbol,
|
||||||
) : IrFunctionBase(startOffset, endOffset, origin), IrSimpleFunction {
|
override val name: Name,
|
||||||
|
visibility: Visibility,
|
||||||
|
override val modality: Modality,
|
||||||
|
returnType: KotlinType,
|
||||||
|
isInline: Boolean,
|
||||||
|
override val isTailrec: Boolean,
|
||||||
|
override val isSuspend: Boolean
|
||||||
|
) :
|
||||||
|
IrFunctionBase(startOffset, endOffset, origin, visibility, isInline, returnType),
|
||||||
|
IrSimpleFunction {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
symbol: IrSimpleFunctionSymbol
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.name,
|
||||||
|
symbol.descriptor.visibility,
|
||||||
|
symbol.descriptor.modality,
|
||||||
|
symbol.descriptor.returnType!!,
|
||||||
|
symbol.descriptor.isInline,
|
||||||
|
symbol.descriptor.isTailrec,
|
||||||
|
symbol.descriptor.isSuspend
|
||||||
|
)
|
||||||
|
|
||||||
override val descriptor: FunctionDescriptor = symbol.descriptor
|
override val descriptor: FunctionDescriptor = symbol.descriptor
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: FunctionDescriptor) :
|
constructor(
|
||||||
this(startOffset, endOffset, origin, IrSimpleFunctionSymbolImpl(descriptor))
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: FunctionDescriptor
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin,
|
||||||
|
IrSimpleFunctionSymbolImpl(descriptor)
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
|
|||||||
+19
-2
@@ -23,13 +23,30 @@ import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
class IrLocalDelegatedPropertyImpl(
|
class IrLocalDelegatedPropertyImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val descriptor: VariableDescriptorWithAccessors
|
override val descriptor: VariableDescriptorWithAccessors,
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrLocalDelegatedProperty {
|
override val name: Name,
|
||||||
|
override val type: KotlinType,
|
||||||
|
override val isVar: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrLocalDelegatedProperty {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: VariableDescriptorWithAccessors
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, descriptor,
|
||||||
|
descriptor.name, descriptor.type, descriptor.isVar
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
|
|||||||
+4
-1
@@ -23,16 +23,19 @@ import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
|||||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import kotlin.collections.ArrayList
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrModuleFragmentImpl(
|
class IrModuleFragmentImpl(
|
||||||
override val descriptor: ModuleDescriptor,
|
override val descriptor: ModuleDescriptor,
|
||||||
override val irBuiltins: IrBuiltIns
|
override val irBuiltins: IrBuiltIns
|
||||||
) : IrModuleFragment {
|
) : IrModuleFragment {
|
||||||
|
|
||||||
constructor(descriptor: ModuleDescriptor, irBuiltins: IrBuiltIns, files: List<IrFile>) : this(descriptor, irBuiltins) {
|
constructor(descriptor: ModuleDescriptor, irBuiltins: IrBuiltIns, files: List<IrFile>) : this(descriptor, irBuiltins) {
|
||||||
this.files.addAll(files)
|
this.files.addAll(files)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val name: Name get() = descriptor.name // TODO
|
||||||
|
|
||||||
override val files: MutableList<IrFile> = ArrayList()
|
override val files: MutableList<IrFile> = ArrayList()
|
||||||
|
|
||||||
override val externalPackageFragments: MutableList<IrExternalPackageFragment> = ArrayList()
|
override val externalPackageFragments: MutableList<IrExternalPackageFragment> = ArrayList()
|
||||||
|
|||||||
+29
-3
@@ -16,20 +16,46 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.util.transform
|
import org.jetbrains.kotlin.ir.util.transform
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
|
|
||||||
class IrPropertyImpl(
|
class IrPropertyImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val isDelegated: Boolean,
|
override val descriptor: PropertyDescriptor,
|
||||||
override val descriptor: PropertyDescriptor
|
override val name: Name,
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty {
|
override val type: KotlinType,
|
||||||
|
override val visibility: Visibility,
|
||||||
|
override val modality: Modality,
|
||||||
|
override val isVar: Boolean,
|
||||||
|
override val isConst: Boolean,
|
||||||
|
override val isLateinit: Boolean,
|
||||||
|
override val isDelegated: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrProperty {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
isDelegated: Boolean,
|
||||||
|
descriptor: PropertyDescriptor
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, descriptor,
|
||||||
|
descriptor.name, descriptor.type, descriptor.visibility, descriptor.modality,
|
||||||
|
descriptor.isVar, descriptor.isConst, descriptor.isLateInit,
|
||||||
|
isDelegated
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin,
|
||||||
descriptor: PropertyDescriptor
|
descriptor: PropertyDescriptor
|
||||||
|
|||||||
+19
-2
@@ -23,14 +23,29 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrTypeParameterSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrTypeParameterSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
|
||||||
class IrTypeParameterImpl(
|
class IrTypeParameterImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrTypeParameterSymbol
|
override val symbol: IrTypeParameterSymbol,
|
||||||
|
override val name: Name,
|
||||||
|
override val index: Int,
|
||||||
|
override val variance: Variance,
|
||||||
|
override val upperBounds: List<KotlinType>
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeParameter {
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeParameter {
|
||||||
override val descriptor: TypeParameterDescriptor get() = symbol.descriptor
|
|
||||||
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, symbol: IrTypeParameterSymbol) :
|
||||||
|
this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.name,
|
||||||
|
symbol.descriptor.index,
|
||||||
|
symbol.descriptor.variance,
|
||||||
|
symbol.descriptor.upperBounds.toMutableList()
|
||||||
|
)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: TypeParameterDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: TypeParameterDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrTypeParameterSymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrTypeParameterSymbolImpl(descriptor))
|
||||||
@@ -39,6 +54,8 @@ class IrTypeParameterImpl(
|
|||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val descriptor: TypeParameterDescriptor get() = symbol.descriptor
|
||||||
|
|
||||||
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.visitTypeParameter(this, data)
|
visitor.visitTypeParameter(this, data)
|
||||||
|
|
||||||
|
|||||||
+25
-2
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
@@ -24,14 +25,34 @@ import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class IrValueParameterImpl(
|
class IrValueParameterImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrValueParameterSymbol
|
override val symbol: IrValueParameterSymbol,
|
||||||
|
override val name: Name,
|
||||||
|
override val index: Int,
|
||||||
|
override val type: KotlinType,
|
||||||
|
override val varargElementType: KotlinType?,
|
||||||
|
override val isCrossinline: Boolean,
|
||||||
|
override val isNoinline: Boolean
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrValueParameter {
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrValueParameter {
|
||||||
override val descriptor: ParameterDescriptor = symbol.descriptor
|
|
||||||
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, symbol: IrValueParameterSymbol) :
|
||||||
|
this(
|
||||||
|
startOffset, endOffset, origin,
|
||||||
|
symbol,
|
||||||
|
symbol.descriptor.name,
|
||||||
|
symbol.descriptor.safeAs<ValueParameterDescriptor>()?.index ?: -1,
|
||||||
|
symbol.descriptor.type,
|
||||||
|
symbol.descriptor.safeAs<ValueParameterDescriptor>()?.varargElementType,
|
||||||
|
symbol.descriptor.safeAs<ValueParameterDescriptor>()?.isCrossinline ?: false,
|
||||||
|
symbol.descriptor.safeAs<ValueParameterDescriptor>()?.isNoinline ?: false
|
||||||
|
)
|
||||||
|
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ParameterDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ParameterDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrValueParameterSymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrValueParameterSymbolImpl(descriptor))
|
||||||
@@ -46,6 +67,8 @@ class IrValueParameterImpl(
|
|||||||
this.defaultValue = defaultValue
|
this.defaultValue = defaultValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val descriptor: ParameterDescriptor = symbol.descriptor
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+32
-7
@@ -24,15 +24,41 @@ import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
class IrVariableImpl(
|
class IrVariableImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrVariableSymbol
|
override val symbol: IrVariableSymbol,
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrVariable {
|
override val name: Name,
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: VariableDescriptor) :
|
override val type: KotlinType,
|
||||||
this(startOffset, endOffset, origin, IrVariableSymbolImpl(descriptor))
|
override val isVar: Boolean,
|
||||||
|
override val isConst: Boolean,
|
||||||
|
override val isLateinit: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrVariable {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
symbol: IrVariableSymbol
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
symbol.descriptor.name, symbol.descriptor.type,
|
||||||
|
isVar = symbol.descriptor.isVar,
|
||||||
|
isConst = symbol.descriptor.isConst,
|
||||||
|
isLateinit = symbol.descriptor.isLateInit
|
||||||
|
)
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: VariableDescriptor
|
||||||
|
) : this(startOffset, endOffset, origin, IrVariableSymbolImpl(descriptor))
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -52,9 +78,8 @@ class IrVariableImpl(
|
|||||||
|
|
||||||
override var initializer: IrExpression? = null
|
override var initializer: IrExpression? = null
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
return visitor.visitVariable(this, data)
|
visitor.visitVariable(this, data)
|
||||||
}
|
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
initializer?.accept(visitor, data)
|
initializer?.accept(visitor, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user