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?
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,15 +48,15 @@ fun IrClass.addAll(members: List<IrDeclaration>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrClass.getInstanceInitializerMembers() =
|
fun IrClass.getInstanceInitializerMembers() =
|
||||||
declarations.filter {
|
declarations.filter {
|
||||||
when (it) {
|
when (it) {
|
||||||
is IrAnonymousInitializer ->
|
is IrAnonymousInitializer ->
|
||||||
true
|
true
|
||||||
is IrProperty ->
|
is IrProperty ->
|
||||||
it.backingField?.initializer != null
|
it.backingField?.initializer != null
|
||||||
is IrField ->
|
is IrField ->
|
||||||
it.initializer != null
|
it.initializer != null
|
||||||
else -> false
|
else -> false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ interface IrDeclaration : IrStatement {
|
|||||||
val origin: IrDeclarationOrigin
|
val origin: IrDeclarationOrigin
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrStatement =
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrStatement =
|
||||||
accept(transformer, data) as IrStatement
|
accept(transformer, data) as IrStatement
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrSymbolDeclaration<out S : IrSymbol> : IrDeclaration, IrSymbolOwner {
|
interface IrSymbolDeclaration<out S : IrSymbol> : IrDeclaration, IrSymbolOwner {
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -41,7 +44,7 @@ interface IrFile : IrPackageFragment {
|
|||||||
val fileAnnotations: MutableList<AnnotationDescriptor>
|
val fileAnnotations: MutableList<AnnotationDescriptor>
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrFile =
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrFile =
|
||||||
accept(transformer, data) as IrFile
|
accept(transformer, data) as IrFile
|
||||||
}
|
}
|
||||||
|
|
||||||
val IrFile.name: String get() = fileEntry.name
|
val IrFile.name: String get() = fileEntry.name
|
||||||
|
|||||||
@@ -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,22 +40,17 @@ 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")
|
||||||
}.also { found ->
|
}.also { found ->
|
||||||
assert(found.descriptor == parameter) {
|
assert(found.descriptor == parameter) {
|
||||||
"Parameter indices mismatch at $descriptor: $parameter != ${found.descriptor}"
|
"Parameter indices mismatch at $descriptor: $parameter != ${found.descriptor}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunction.getDefault(parameter: ValueParameterDescriptor): IrExpressionBody? =
|
fun IrFunction.getDefault(parameter: ValueParameterDescriptor): IrExpressionBody? =
|
||||||
getIrValueParameter(parameter).defaultValue
|
getIrValueParameter(parameter).defaultValue
|
||||||
|
|
||||||
fun IrFunction.putDefault(parameter: ValueParameterDescriptor, expressionBody: IrExpressionBody) {
|
fun IrFunction.putDefault(parameter: ValueParameterDescriptor, expressionBody: IrExpressionBody) {
|
||||||
getIrValueParameter(parameter).defaultValue = expressionBody
|
getIrValueParameter(parameter).defaultValue = expressionBody
|
||||||
|
|||||||
+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>
|
||||||
@@ -33,6 +35,6 @@ interface IrModuleFragment : IrElement {
|
|||||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||||
accept(transformer, data) as IrModuleFragment
|
accept(transformer, data) as IrModuleFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -26,17 +26,17 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
|
||||||
class IrAnonymousInitializerImpl(
|
class IrAnonymousInitializerImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrAnonymousInitializerSymbol
|
override val symbol: IrAnonymousInitializerSymbol
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer {
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer {
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor) :
|
||||||
this(startOffset, endOffset, origin, IrAnonymousInitializerSymbolImpl(descriptor))
|
this(startOffset, endOffset, origin, IrAnonymousInitializerSymbolImpl(descriptor))
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
||||||
body: IrBlockBody
|
body: IrBlockBody
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.body = body
|
this.body = body
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,27 +17,46 @@
|
|||||||
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))
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
||||||
members: List<IrDeclaration>
|
members: List<IrDeclaration>
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
addAll(members)
|
addAll(members)
|
||||||
}
|
}
|
||||||
@@ -55,7 +74,7 @@ class IrClassImpl(
|
|||||||
override val typeParameters: MutableList<IrTypeParameter> = SmartList()
|
override val typeParameters: MutableList<IrTypeParameter> = SmartList()
|
||||||
|
|
||||||
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.visitClass(this, data)
|
visitor.visitClass(this, data)
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
thisReceiver?.accept(visitor, data)
|
thisReceiver?.accept(visitor, data)
|
||||||
|
|||||||
+35
-11
@@ -17,27 +17,52 @@
|
|||||||
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,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val symbol: IrConstructorSymbol,
|
||||||
|
visibility: Visibility,
|
||||||
|
returnType: KotlinType,
|
||||||
|
isInline: Boolean
|
||||||
|
) :
|
||||||
|
IrFunctionBase(startOffset, endOffset, origin, visibility, isInline, returnType),
|
||||||
|
IrConstructor {
|
||||||
|
|
||||||
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrConstructorSymbol
|
symbol: IrConstructorSymbol
|
||||||
) : IrFunctionBase(startOffset, endOffset, origin), IrConstructor {
|
) : this(
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor) :
|
startOffset, endOffset, origin, symbol,
|
||||||
this(startOffset, endOffset, origin, IrConstructorSymbolImpl(descriptor))
|
symbol.descriptor.visibility,
|
||||||
|
symbol.descriptor.returnType,
|
||||||
|
symbol.descriptor.isInline
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassConstructorDescriptor,
|
startOffset: Int,
|
||||||
body: IrBody
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: ClassConstructorDescriptor
|
||||||
|
) : this(startOffset, endOffset, origin, IrConstructorSymbolImpl(descriptor))
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: ClassConstructorDescriptor,
|
||||||
|
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)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+3
-3
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
|
|
||||||
abstract class IrDeclarationBase(
|
abstract class IrDeclarationBase(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
override val origin: IrDeclarationOrigin
|
override val origin: IrDeclarationOrigin
|
||||||
) : IrElementBase(startOffset, endOffset), IrDeclaration
|
) : IrElementBase(startOffset, endOffset), IrDeclaration
|
||||||
+14
-8
@@ -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,19 +25,26 @@ 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))
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
||||||
correspondingClass: IrClass?, initializerExpression: IrExpression?
|
correspondingClass: IrClass?, initializerExpression: IrExpression?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.correspondingClass = correspondingClass
|
this.correspondingClass = correspondingClass
|
||||||
this.initializerExpression = initializerExpression
|
this.initializerExpression = initializerExpression
|
||||||
|
|||||||
+3
-3
@@ -24,9 +24,9 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
|
||||||
class IrErrorDeclarationImpl(
|
class IrErrorDeclarationImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
override val descriptor: DeclarationDescriptor
|
override val descriptor: DeclarationDescriptor
|
||||||
) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOrigin.DEFINED), IrErrorDeclaration {
|
) : IrDeclarationBase(startOffset, endOffset, IrDeclarationOrigin.DEFINED), IrErrorDeclaration {
|
||||||
override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.ERROR
|
override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.ERROR
|
||||||
|
|
||||||
|
|||||||
+7
-2
@@ -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)
|
||||||
}
|
}
|
||||||
@@ -37,7 +42,7 @@ class IrExternalPackageFragmentImpl(
|
|||||||
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
||||||
|
|
||||||
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.visitExternalPackageFragment(this, data)
|
visitor.visitExternalPackageFragment(this, data)
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
declarations.forEach { it.accept(visitor, data) }
|
declarations.forEach { it.accept(visitor, data) }
|
||||||
|
|||||||
@@ -17,27 +17,39 @@
|
|||||||
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(
|
||||||
initializer: IrExpressionBody?
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor,
|
||||||
|
initializer: IrExpressionBody?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.initializer = initializer
|
this.initializer = initializer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,21 +26,27 @@ 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,
|
||||||
packageFragmentDescriptor: PackageFragmentDescriptor,
|
packageFragmentDescriptor: PackageFragmentDescriptor,
|
||||||
fileAnnotations: List<AnnotationDescriptor>,
|
fileAnnotations: List<AnnotationDescriptor>,
|
||||||
declarations: List<IrDeclaration>
|
declarations: List<IrDeclaration>
|
||||||
) : this(fileEntry, packageFragmentDescriptor) {
|
) : this(fileEntry, packageFragmentDescriptor) {
|
||||||
this.fileAnnotations.addAll(fileAnnotations)
|
this.fileAnnotations.addAll(fileAnnotations)
|
||||||
this.declarations.addAll(declarations)
|
this.declarations.addAll(declarations)
|
||||||
@@ -57,7 +63,7 @@ class IrFileImpl(
|
|||||||
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
override val declarations: MutableList<IrDeclaration> = ArrayList()
|
||||||
|
|
||||||
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.visitFile(this, data)
|
visitor.visitFile(this, data)
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
declarations.forEach { it.accept(visitor, data) }
|
declarations.forEach { it.accept(visitor, data) }
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
+47
-10
@@ -17,30 +17,67 @@
|
|||||||
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,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val symbol: IrSimpleFunctionSymbol,
|
||||||
|
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,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrSimpleFunctionSymbol
|
symbol: IrSimpleFunctionSymbol
|
||||||
) : IrFunctionBase(startOffset, endOffset, origin), IrSimpleFunction {
|
) : 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,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: FunctionDescriptor,
|
descriptor: FunctionDescriptor,
|
||||||
body: IrBody?
|
body: IrBody?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.body = body
|
this.body = body
|
||||||
}
|
}
|
||||||
@@ -50,5 +87,5 @@ class IrFunctionImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
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.visitSimpleFunction(this, data)
|
visitor.visitSimpleFunction(this, data)
|
||||||
}
|
}
|
||||||
+32
-15
@@ -23,31 +23,48 @@ 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,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val descriptor: VariableDescriptorWithAccessors,
|
||||||
|
override val name: Name,
|
||||||
|
override val type: KotlinType,
|
||||||
|
override val isVar: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrLocalDelegatedProperty {
|
||||||
|
|
||||||
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val descriptor: VariableDescriptorWithAccessors
|
descriptor: VariableDescriptorWithAccessors
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrLocalDelegatedProperty {
|
) : this(
|
||||||
|
startOffset, endOffset, origin, descriptor,
|
||||||
|
descriptor.name, descriptor.type, descriptor.isVar
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: VariableDescriptorWithAccessors,
|
descriptor: VariableDescriptorWithAccessors,
|
||||||
delegate: IrVariable
|
delegate: IrVariable
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.delegate = delegate
|
this.delegate = delegate
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: VariableDescriptorWithAccessors,
|
descriptor: VariableDescriptorWithAccessors,
|
||||||
delegate: IrVariable,
|
delegate: IrVariable,
|
||||||
getter: IrFunction,
|
getter: IrFunction,
|
||||||
setter: IrFunction?
|
setter: IrFunction?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.delegate = delegate
|
this.delegate = delegate
|
||||||
this.getter = getter
|
this.getter = getter
|
||||||
@@ -59,7 +76,7 @@ class IrLocalDelegatedPropertyImpl(
|
|||||||
override var setter: IrFunction? = null
|
override var setter: IrFunction? = 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 =
|
||||||
visitor.visitLocalDelegatedProperty(this, data)
|
visitor.visitLocalDelegatedProperty(this, data)
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
delegate.accept(visitor, data)
|
delegate.accept(visitor, data)
|
||||||
|
|||||||
+7
-4
@@ -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()
|
||||||
@@ -40,7 +43,7 @@ class IrModuleFragmentImpl(
|
|||||||
override val dependencyModules: MutableList<IrModuleFragment> = ArrayList()
|
override val dependencyModules: MutableList<IrModuleFragment> = ArrayList()
|
||||||
|
|
||||||
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.visitModuleFragment(this, data)
|
visitor.visitModuleFragment(this, data)
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
files.forEach { it.accept(visitor, data) }
|
files.forEach { it.accept(visitor, data) }
|
||||||
|
|||||||
+35
-9
@@ -16,35 +16,61 @@
|
|||||||
|
|
||||||
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,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val descriptor: PropertyDescriptor,
|
||||||
|
override val name: Name,
|
||||||
|
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,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val isDelegated: Boolean,
|
isDelegated: Boolean,
|
||||||
override val descriptor: PropertyDescriptor
|
descriptor: PropertyDescriptor
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrProperty {
|
) : 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
|
||||||
) : this(startOffset, endOffset, origin, descriptor.isDelegated, descriptor)
|
) : this(startOffset, endOffset, origin, descriptor.isDelegated, descriptor)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, isDelegated: Boolean, descriptor: PropertyDescriptor,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, isDelegated: Boolean, descriptor: PropertyDescriptor,
|
||||||
backingField: IrField?
|
backingField: IrField?
|
||||||
) : this(startOffset, endOffset, origin, isDelegated, descriptor) {
|
) : this(startOffset, endOffset, origin, isDelegated, descriptor) {
|
||||||
this.backingField = backingField
|
this.backingField = backingField
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, isDelegated: Boolean, descriptor: PropertyDescriptor,
|
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, isDelegated: Boolean, descriptor: PropertyDescriptor,
|
||||||
backingField: IrField?, getter: IrFunction?, setter: IrFunction?
|
backingField: IrField?, getter: IrFunction?, setter: IrFunction?
|
||||||
) : this(startOffset, endOffset, origin, isDelegated, descriptor, backingField) {
|
) : this(startOffset, endOffset, origin, isDelegated, descriptor, backingField) {
|
||||||
this.getter = getter
|
this.getter = getter
|
||||||
this.setter = setter
|
this.setter = setter
|
||||||
|
|||||||
+4
-4
@@ -23,10 +23,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
|
||||||
class IrTypeAliasImpl(
|
class IrTypeAliasImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val descriptor: TypeAliasDescriptor
|
override val descriptor: TypeAliasDescriptor
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias {
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrTypeAlias {
|
||||||
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.visitTypeAlias(this, data)
|
return visitor.visitTypeAlias(this, data)
|
||||||
|
|||||||
+24
-7
@@ -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,11 +54,13 @@ 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)
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrTypeParameter =
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrTypeParameter =
|
||||||
transformer.visitTypeParameter(this, data) as IrTypeParameter
|
transformer.visitTypeParameter(this, data) as IrTypeParameter
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
// no children
|
// no children
|
||||||
|
|||||||
+35
-12
@@ -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,28 +25,50 @@ 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))
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: ParameterDescriptor,
|
descriptor: ParameterDescriptor,
|
||||||
defaultValue: IrExpressionBody?
|
defaultValue: IrExpressionBody?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.defaultValue = defaultValue
|
this.defaultValue = defaultValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val descriptor: ParameterDescriptor = symbol.descriptor
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -53,10 +76,10 @@ class IrValueParameterImpl(
|
|||||||
override var defaultValue: IrExpressionBody? = null
|
override var defaultValue: IrExpressionBody? = 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 =
|
||||||
visitor.visitValueParameter(this, data)
|
visitor.visitValueParameter(this, data)
|
||||||
|
|
||||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrValueParameter =
|
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrValueParameter =
|
||||||
transformer.visitValueParameter(this, data) as IrValueParameter
|
transformer.visitValueParameter(this, data) as IrValueParameter
|
||||||
|
|
||||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
defaultValue?.accept(visitor, data)
|
defaultValue?.accept(visitor, data)
|
||||||
|
|||||||
+37
-12
@@ -24,22 +24,48 @@ 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,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val symbol: IrVariableSymbol,
|
||||||
|
override val name: Name,
|
||||||
|
override val type: KotlinType,
|
||||||
|
override val isVar: Boolean,
|
||||||
|
override val isConst: Boolean,
|
||||||
|
override val isLateinit: Boolean
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
|
IrVariable {
|
||||||
|
|
||||||
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrVariableSymbol
|
symbol: IrVariableSymbol
|
||||||
) : IrDeclarationBase(startOffset, endOffset, origin), IrVariable {
|
) : this(
|
||||||
constructor(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: VariableDescriptor) :
|
startOffset, endOffset, origin, symbol,
|
||||||
this(startOffset, endOffset, origin, IrVariableSymbolImpl(descriptor))
|
symbol.descriptor.name, symbol.descriptor.type,
|
||||||
|
isVar = symbol.descriptor.isVar,
|
||||||
|
isConst = symbol.descriptor.isConst,
|
||||||
|
isLateinit = symbol.descriptor.isLateInit
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: VariableDescriptor,
|
descriptor: VariableDescriptor
|
||||||
initializer: IrExpression?
|
) : this(startOffset, endOffset, origin, IrVariableSymbolImpl(descriptor))
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
descriptor: VariableDescriptor,
|
||||||
|
initializer: IrExpression?
|
||||||
) : this(startOffset, endOffset, origin, descriptor) {
|
) : this(startOffset, endOffset, origin, descriptor) {
|
||||||
this.initializer = initializer
|
this.initializer = initializer
|
||||||
}
|
}
|
||||||
@@ -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