FIR2IR: get rid of setParentAndContent + fixes around anonymous objects

This commit is contained in:
Mikhail Glukhikh
2020-03-03 12:59:36 +03:00
parent 20eddef06f
commit 03eab2ec6c
18 changed files with 270 additions and 224 deletions
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.psi
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -37,6 +38,7 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.ir.util.constructors
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFunctionLiteral
@@ -179,123 +181,117 @@ class Fir2IrDeclarationStorage(
return this
}
fun getIrClass(klass: FirClass<*>, setParentAndContent: Boolean = true): IrClass {
val regularClass = klass as? FirRegularClass
fun create(): IrClass {
val descriptor = WrappedClassDescriptor()
val origin = IrDeclarationOrigin.DEFINED
val modality = regularClass?.modality ?: Modality.FINAL
val visibility = regularClass?.visibility ?: Visibilities.PUBLIC
return klass.convertWithOffsets { startOffset, endOffset ->
irSymbolTable.declareClass(startOffset, endOffset, origin, descriptor, modality, visibility) { symbol ->
IrClassImpl(
startOffset,
endOffset,
origin,
symbol,
regularClass?.name ?: Name.special("<anonymous>"),
klass.classKind,
regularClass?.visibility ?: Visibilities.LOCAL,
modality,
isCompanion = regularClass?.isCompanion == true,
isInner = regularClass?.isInner == true,
isData = regularClass?.isData == true,
isExternal = regularClass?.isExternal == true,
isInline = regularClass?.isInline == true,
isExpect = regularClass?.isExpect == true,
isFun = false // TODO FirRegularClass.isFun
).apply {
descriptor.bind(this)
if (setParentAndContent && regularClass != null) {
val classId = regularClass.classId
val parentId = classId.outerClassId
if (parentId != null) {
val parentFirSymbol = firSymbolProvider.getClassLikeSymbolByFqName(parentId)
if (parentFirSymbol is FirClassSymbol) {
val parentIrSymbol = getIrClassSymbol(parentFirSymbol)
parent = parentIrSymbol.owner
}
} else {
val packageFqName = classId.packageFqName
parent = getIrExternalPackageFragment(packageFqName)
}
private fun addDeclarationsToExternalClass(regularClass: FirRegularClass, irClass: IrClass) {
if (regularClass.symbol.classId.packageFqName.startsWith(Name.identifier("kotlin"))) {
// Note: yet this is necessary only for *Range / *Progression classes
// due to BE optimizations (for lowering) that use their first / last / step members
// TODO: think how to refactor this piece of code and/or merge it with similar Fir2IrVisitor fragment
val processedNames = mutableSetOf<Name>()
for (declaration in regularClass.declarations) {
irClass.declarations += when (declaration) {
is FirSimpleFunction -> {
processedNames += declaration.name
getIrFunction(declaration, irClass)
}
is FirProperty -> {
processedNames += declaration.name
getIrProperty(declaration, irClass)
}
is FirConstructor -> getIrConstructor(declaration, irClass)
is FirRegularClass -> getIrClass(declaration)
else -> continue
}
}
val allNames = regularClass.collectCallableNamesFromSupertypes(session)
val scope = regularClass.buildUseSiteMemberScope(session, ScopeSession())
if (scope != null) {
for (name in allNames) {
if (name in processedNames) continue
processedNames += name
scope.processFunctionsByName(name) { functionSymbol ->
if (functionSymbol is FirNamedFunctionSymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideFunction(session, functionSymbol.fir, functionSymbol)
irClass.declarations += getIrFunction(fakeOverrideSymbol.fir, irClass)
}
}
scope.processPropertiesByName(name) { propertySymbol ->
if (propertySymbol is FirPropertySymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideProperty(session, propertySymbol.fir, propertySymbol)
irClass.declarations += getIrProperty(fakeOverrideSymbol.fir, irClass)
}
}
}
}
}
if (regularClass?.visibility == Visibilities.LOCAL || klass is FirAnonymousObject) {
val cached = localStorage.getLocalClass(klass)
if (cached != null) return cached
val created = create()
localStorage.putLocalClass(klass, created)
created.declareSupertypesAndTypeParameters(klass)
created.setThisReceiver()
return created
}
// NB: klass can be either FirRegularClass or FirAnonymousObject
return classCache.getOrPut(klass as FirRegularClass, { create() }) { irClass ->
irClass.declareSupertypesAndTypeParameters(klass)
irClass.setThisReceiver()
if (setParentAndContent && regularClass != null &&
regularClass.symbol.classId.packageFqName.startsWith(Name.identifier("kotlin"))
) {
// Note: yet this is necessary only for *Range / *Progression classes
// due to BE optimizations (for lowering) that use their first / last / step members
// TODO: think how to refactor this piece of code and/or merge it with similar Fir2IrVisitor fragment
val processedNames = mutableSetOf<Name>()
for (declaration in regularClass.declarations) {
irClass.declarations += when (declaration) {
is FirSimpleFunction -> {
processedNames += declaration.name
getIrFunction(declaration, irClass, shouldLeaveScope = true)
}
is FirProperty -> {
processedNames += declaration.name
getIrProperty(declaration, irClass)
}
is FirConstructor -> getIrConstructor(declaration, irClass, shouldLeaveScope = true)
is FirRegularClass -> getIrClass(declaration)
else -> continue
}
}
val allNames = regularClass.collectCallableNamesFromSupertypes(session)
val scope = regularClass.buildUseSiteMemberScope(session, ScopeSession())
if (scope != null) {
for (name in allNames) {
if (name in processedNames) continue
processedNames += name
scope.processFunctionsByName(name) { functionSymbol ->
if (functionSymbol is FirNamedFunctionSymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideFunction(session, functionSymbol.fir, functionSymbol)
irClass.declarations += getIrFunction(fakeOverrideSymbol.fir, irClass, shouldLeaveScope = true)
}
}
scope.processPropertiesByName(name) { propertySymbol ->
if (propertySymbol is FirPropertySymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideProperty(session, propertySymbol.fir, propertySymbol)
irClass.declarations += getIrProperty(fakeOverrideSymbol.fir, irClass)
}
}
}
}
for (irDeclaration in irClass.declarations) {
irDeclaration.parent = irClass
}
for (irDeclaration in irClass.declarations) {
irDeclaration.parent = irClass
}
}
}
fun getIrAnonymousObject(anonymousObject: FirAnonymousObject): IrClass {
private fun getCachedIrClass(klass: FirClass<*>): IrClass? {
return if (klass is FirAnonymousObject || klass is FirRegularClass && klass.visibility == Visibilities.LOCAL) {
localStorage.getLocalClass(klass)
} else {
classCache[klass]
}
}
private fun createIrClass(klass: FirClass<*>): IrClass {
// NB: klass can be either FirRegularClass or FirAnonymousObject
if (klass is FirAnonymousObject) {
return createIrAnonymousObject(klass)
}
val regularClass = klass as FirRegularClass
val descriptor = WrappedClassDescriptor()
val origin = IrDeclarationOrigin.DEFINED
val modality = regularClass.modality ?: Modality.FINAL
val visibility = regularClass.visibility
val irClass = klass.convertWithOffsets { startOffset, endOffset ->
irSymbolTable.declareClass(startOffset, endOffset, origin, descriptor, modality, visibility) { symbol ->
IrClassImpl(
startOffset,
endOffset,
origin,
symbol,
regularClass.name,
klass.classKind,
regularClass.visibility,
modality,
isCompanion = regularClass.isCompanion,
isInner = regularClass.isInner,
isData = regularClass.isData,
isExternal = regularClass.isExternal,
isInline = regularClass.isInline,
isExpect = regularClass.isExpect,
isFun = false // TODO FirRegularClass.isFun
).apply {
descriptor.bind(this)
}
}
}
if (regularClass.visibility == Visibilities.LOCAL) {
localStorage.putLocalClass(klass, irClass)
} else {
classCache[klass] = irClass
}
irClass.declareSupertypesAndTypeParameters(klass)
irClass.setThisReceiver()
return irClass
}
fun getIrClass(klass: FirClass<*>): IrClass {
return getCachedIrClass(klass) ?: createIrClass(klass)
}
private fun createIrAnonymousObject(anonymousObject: FirAnonymousObject): IrClass {
val descriptor = WrappedClassDescriptor()
val origin = IrDeclarationOrigin.DEFINED
val modality = Modality.FINAL
val visibility = Visibilities.LOCAL
return anonymousObject.convertWithOffsets { startOffset, endOffset ->
val result = anonymousObject.convertWithOffsets { startOffset, endOffset ->
irSymbolTable.declareClass(startOffset, endOffset, origin, descriptor, modality, visibility) { symbol ->
IrClassImpl(
startOffset, endOffset, origin, symbol,
@@ -309,6 +305,13 @@ class Fir2IrDeclarationStorage(
}
}
}.declareSupertypesAndTypeParameters(anonymousObject)
localStorage.putLocalClass(anonymousObject, result)
return result
}
fun getIrAnonymousObject(anonymousObject: FirAnonymousObject): IrClass {
localStorage.getLocalClass(anonymousObject)?.let { return it }
return createIrAnonymousObject(anonymousObject)
}
private fun getIrEnumEntryClass(enumEntry: FirEnumEntry, anonymousObject: FirAnonymousObject, irParent: IrClass?): IrClass {
@@ -389,10 +392,7 @@ class Fir2IrDeclarationStorage(
}
}
internal fun findIrParent(callableDeclaration: FirCallableDeclaration<*>): IrDeclarationParent? {
val firBasedSymbol = callableDeclaration.symbol
val callableId = firBasedSymbol.callableId
val parentClassId = callableId.classId
private fun findIrParent(packageFqName: FqName, parentClassId: ClassId?, firBasedSymbol: FirBasedSymbol<*>): IrDeclarationParent? {
return if (parentClassId != null) {
// TODO: this will never work for local classes
val parentFirSymbol = firSymbolProvider.getClassLikeSymbolByFqName(parentClassId)
@@ -403,16 +403,26 @@ class Fir2IrDeclarationStorage(
null
}
} else {
val containerFile = firProvider.getFirCallableContainerFile(firBasedSymbol)
val containerFile = when (firBasedSymbol) {
is FirCallableSymbol -> firProvider.getFirCallableContainerFile(firBasedSymbol)
is FirClassLikeSymbol -> firProvider.getFirClassifierContainerFileIfAny(firBasedSymbol)
else -> throw AssertionError("Unexpected: $firBasedSymbol")
}
if (containerFile != null) {
fileCache[containerFile]
} else {
val packageFqName = callableId.packageName
getIrExternalPackageFragment(packageFqName)
}
}
}
internal fun findIrParent(callableDeclaration: FirCallableDeclaration<*>): IrDeclarationParent? {
val firBasedSymbol = callableDeclaration.symbol
val callableId = firBasedSymbol.callableId
return findIrParent(callableId.packageName, callableId.classId, firBasedSymbol)
}
private fun IrDeclaration.setAndModifyParent(irParent: IrDeclarationParent?) {
if (irParent != null) {
parent = irParent
@@ -504,18 +514,13 @@ class Fir2IrDeclarationStorage(
descriptor: WrappedCallableDescriptor<T>,
irParent: IrDeclarationParent?,
isStatic: Boolean,
shouldLeaveScope: Boolean,
parentPropertyReceiverType: FirTypeRef? = null
): T {
if (irParent != null) {
parent = irParent
}
descriptor.bind(this)
enterScope(descriptor)
declareParameters(function, irParent as? IrClass, isStatic, parentPropertyReceiverType)
if (shouldLeaveScope) {
leaveScope(descriptor)
}
return this
}
@@ -531,7 +536,7 @@ class Fir2IrDeclarationStorage(
fun getIrFunction(
function: FirSimpleFunction,
irParent: IrDeclarationParent?,
shouldLeaveScope: Boolean = false,
shouldLeaveScope: Boolean = true,
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
): IrSimpleFunction {
fun create(): IrSimpleFunction {
@@ -555,9 +560,8 @@ class Fir2IrDeclarationStorage(
isOperator = function.isOperator
)
}
leaveScope(descriptor)
result
}.bindAndDeclareParameters(function, descriptor, irParent, isStatic = function.isStatic, shouldLeaveScope = shouldLeaveScope)
}.bindAndDeclareParameters(function, descriptor, irParent, isStatic = function.isStatic)
}
if (function.visibility == Visibilities.LOCAL) {
@@ -566,6 +570,9 @@ class Fir2IrDeclarationStorage(
return if (shouldLeaveScope) cached else cached.enterLocalScope(function)
}
val created = create()
if (shouldLeaveScope) {
leaveScope(created.descriptor)
}
localStorage.putLocalFunction(function, created)
return created
}
@@ -574,6 +581,9 @@ class Fir2IrDeclarationStorage(
return if (shouldLeaveScope) cached else cached.enterLocalScope(function)
}
val created = create()
if (shouldLeaveScope) {
leaveScope(created.descriptor)
}
if (function.symbol.callableId.isKFunctionInvoke()) {
(function.symbol.overriddenSymbol as? FirNamedFunctionSymbol)?.let {
created.overriddenSymbols += getIrFunctionSymbol(it) as IrSimpleFunctionSymbol
@@ -586,7 +596,7 @@ class Fir2IrDeclarationStorage(
fun getIrLocalFunction(
function: FirAnonymousFunction,
irParent: IrDeclarationParent? = null,
shouldLeaveScope: Boolean = false
shouldLeaveScope: Boolean = true
): IrSimpleFunction {
val descriptor = WrappedSimpleFunctionDescriptor()
val isLambda = function.psi is KtFunctionLiteral
@@ -604,17 +614,23 @@ class Fir2IrDeclarationStorage(
isExpect = false,
isFakeOverride = false,
isOperator = false
)
).apply {
enterScope(descriptor)
}
}.bindAndDeclareParameters(
function, descriptor, irParent = irParent, isStatic = false, shouldLeaveScope = shouldLeaveScope
)
function, descriptor, irParent = irParent, isStatic = false
).apply {
if (shouldLeaveScope) {
leaveScope(descriptor)
}
}
}
}
fun getIrConstructor(
constructor: FirConstructor,
irParent: IrDeclarationParent? = null,
shouldLeaveScope: Boolean = false
shouldLeaveScope: Boolean = true
): IrConstructor {
val cached = constructorCache[constructor]
if (cached != null) {
@@ -635,7 +651,13 @@ class Fir2IrDeclarationStorage(
Name.special("<init>"), visibility,
constructor.returnTypeRef.toIrType(),
isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = false
).bindAndDeclareParameters(constructor, descriptor, irParent, isStatic = true, shouldLeaveScope = shouldLeaveScope)
).apply {
enterScope(descriptor)
}.bindAndDeclareParameters(constructor, descriptor, irParent, isStatic = true).apply {
if (shouldLeaveScope) {
leaveScope(descriptor)
}
}
}
}
constructorCache[constructor] = created
@@ -685,10 +707,12 @@ class Fir2IrDeclarationStorage(
property.returnTypeRef.toIrType(ConversionTypeContext.DEFAULT.inSetter())
)
}
enterScope(descriptor)
}.bindAndDeclareParameters(
propertyAccessor, descriptor, irParent, isStatic = irParent !is IrClass, shouldLeaveScope = true,
propertyAccessor, descriptor, irParent, isStatic = irParent !is IrClass,
parentPropertyReceiverType = property.receiverTypeRef
).apply {
leaveScope(descriptor)
if (irParent != null) {
parent = irParent
}
@@ -738,8 +762,16 @@ class Fir2IrDeclarationStorage(
fun getIrProperty(
property: FirProperty,
irParent: IrDeclarationParent?,
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED,
shouldLeaveScope: Boolean = true
): IrProperty {
val cached = propertyCache[property]
if (cached != null) {
if (!shouldLeaveScope) {
enterScope(cached.descriptor)
}
return cached
}
return propertyCache.getOrPut(property) {
val containerSource = property.containerSource
val descriptor = containerSource?.let { WrappedPropertyDescriptorWithContainerSource(it) } ?: WrappedPropertyDescriptor()
@@ -789,7 +821,9 @@ class Fir2IrDeclarationStorage(
}
}
}
leaveScope(descriptor)
if (shouldLeaveScope) {
leaveScope(descriptor)
}
result
}
}
@@ -913,7 +947,22 @@ class Fir2IrDeclarationStorage(
}
fun getIrClassSymbol(firClassSymbol: FirClassSymbol<*>): IrClassSymbol {
val irClass = getIrClass(firClassSymbol.fir)
val firClass = firClassSymbol.fir
getCachedIrClass(firClass)?.let { return irSymbolTable.referenceClass(it.descriptor) }
val irClass = createIrClass(firClass)
if (firClass is FirAnonymousObject || firClass is FirRegularClass && firClass.visibility == Visibilities.LOCAL) {
return irSymbolTable.referenceClass(irClass.descriptor)
}
val classId = firClassSymbol.classId
val parentId = classId.outerClassId
val irParent = findIrParent(classId.packageFqName, parentId, firClassSymbol)
if (irParent != null) {
irClass.parent = irParent
}
if (irParent is IrExternalPackageFragment) {
addDeclarationsToExternalClass(firClass as FirRegularClass, irClass)
}
return irSymbolTable.referenceClass(irClass.descriptor)
}
@@ -930,19 +979,19 @@ class Fir2IrDeclarationStorage(
val irParent = (firDeclaration as? FirCallableDeclaration<*>)?.let { findIrParent(it) }
return when (firDeclaration) {
is FirSimpleFunction -> {
val irDeclaration = getIrFunction(firDeclaration, irParent, shouldLeaveScope = true).apply {
val irDeclaration = getIrFunction(firDeclaration, irParent).apply {
setAndModifyParent(irParent)
}
irSymbolTable.referenceSimpleFunction(irDeclaration.descriptor)
}
is FirAnonymousFunction -> {
val irDeclaration = getIrLocalFunction(firDeclaration, irParent, shouldLeaveScope = true).apply {
val irDeclaration = getIrLocalFunction(firDeclaration, irParent).apply {
setAndModifyParent(irParent)
}
irSymbolTable.referenceSimpleFunction(irDeclaration.descriptor)
}
is FirConstructor -> {
val irDeclaration = getIrConstructor(firDeclaration, irParent, shouldLeaveScope = true).apply {
val irDeclaration = getIrConstructor(firDeclaration, irParent).apply {
setAndModifyParent(irParent)
}
irSymbolTable.referenceConstructor(irDeclaration.descriptor)
@@ -996,7 +1045,7 @@ class Fir2IrDeclarationStorage(
is FirEnumEntry -> {
val containingFile = firProvider.getFirCallableContainerFile(firVariableSymbol)
val parentClassSymbol = firVariableSymbol.callableId.classId?.let { firSymbolProvider.getClassLikeSymbolByFqName(it) }
val irParentClass = (parentClassSymbol?.fir as? FirClass<*>)?.let { getIrClass(it, setParentAndContent = false) }
val irParentClass = (parentClassSymbol?.fir as? FirClass<*>)?.let { getIrClass(it) }
val irEnumEntry = getIrEnumEntry(
firDeclaration,
irParent = irParentClass,
@@ -73,8 +73,7 @@ class Fir2IrFakeOverrideGenerator(
val baseSymbol = functionSymbol.deepestOverriddenSymbol() as FirNamedFunctionSymbol
val irFunction = declarationStorage.getIrFunction(
// TODO: parents for functions and properties should be consistent
originalFunction, declarationStorage.findIrParent(baseSymbol.fir),
origin = origin, shouldLeaveScope = true
originalFunction, declarationStorage.findIrParent(baseSymbol.fir), origin = origin
)
// In fake overrides, parent logic is a bit specific, because
// parent of *original* function (base class) is used for dispatch receiver,
@@ -91,8 +90,7 @@ class Fir2IrFakeOverrideGenerator(
val fakeOverrideFunction = fakeOverrideSymbol.fir
val irFunction = declarationStorage.getIrFunction(
fakeOverrideFunction, declarationStorage.findIrParent(originalFunction),
origin = origin, shouldLeaveScope = true
fakeOverrideFunction, declarationStorage.findIrParent(originalFunction), origin = origin
)
val overriddenSymbol = declarationStorage.getIrFunctionSymbol(functionSymbol) as IrSimpleFunctionSymbol
declarations += irFunction.withFunction {
@@ -157,7 +157,7 @@ class Fir2IrVisitor(
override fun visitRegularClass(regularClass: FirRegularClass, data: Any?): IrElement {
return conversionScope.withParent(
applyParentFromStackTo(declarationStorage.getIrClass(regularClass, setParentAndContent = false))
applyParentFromStackTo(declarationStorage.getIrClass(regularClass))
) {
setClassContent(regularClass)
}
@@ -228,7 +228,7 @@ class Fir2IrVisitor(
override fun visitConstructor(constructor: FirConstructor, data: Any?): IrElement {
val irConstructor = declarationStorage.getIrConstructor(
constructor, irParent = conversionScope.lastClass()
constructor, irParent = conversionScope.lastClass(), shouldLeaveScope = false
)
return conversionScope.withFunction(irConstructor) {
setFunctionContent(irConstructor.descriptor, constructor)
@@ -285,7 +285,7 @@ class Fir2IrVisitor(
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement {
val irFunction = declarationStorage.getIrFunction(
simpleFunction, irParent = conversionScope.parent()
simpleFunction, irParent = conversionScope.parent(), shouldLeaveScope = false
)
return conversionScope.withFunction(irFunction) {
setFunctionContent(irFunction.descriptor, simpleFunction)
@@ -294,7 +294,7 @@ class Fir2IrVisitor(
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement {
return anonymousFunction.convertWithOffsets { startOffset, endOffset ->
val irFunction = declarationStorage.getIrLocalFunction(anonymousFunction, conversionScope.parent())
val irFunction = declarationStorage.getIrLocalFunction(anonymousFunction, conversionScope.parent(), shouldLeaveScope = false)
conversionScope.withFunction(irFunction) {
setFunctionContent(irFunction.descriptor, anonymousFunction)
}
@@ -360,7 +360,6 @@ class Fir2IrVisitor(
}
private fun IrProperty.setPropertyContent(descriptor: PropertyDescriptor, property: FirProperty): IrProperty {
declarationStorage.enterScope(descriptor)
val initializer = property.initializer
val delegate = property.delegate
val irParent = this.parent
@@ -399,7 +398,7 @@ class Fir2IrVisitor(
override fun visitProperty(property: FirProperty, data: Any?): IrElement {
if (property.isLocal) return visitLocalVariable(property)
val irProperty = declarationStorage.getIrProperty(property, irParent = conversionScope.parent())
val irProperty = declarationStorage.getIrProperty(property, irParent = conversionScope.parent(), shouldLeaveScope = false)
return conversionScope.withProperty(irProperty) { setPropertyContent(irProperty.descriptor, property) }
}
@@ -556,7 +555,7 @@ class Fir2IrVisitor(
val irClass = symbol.owner
val fir = firSymbol?.fir as? FirClass<*>
val irConstructor = fir?.getPrimaryConstructorIfAny()?.let { firConstructor ->
declarationStorage.getIrConstructor(firConstructor, irParent = irClass, shouldLeaveScope = true)
declarationStorage.getIrConstructor(firConstructor, irParent = irClass)
}?.apply {
this.parent = irClass
}
@@ -646,7 +645,7 @@ class Fir2IrVisitor(
it is FirAnonymousObject || it is FirRegularClass && it.classKind == ClassKind.OBJECT
}
firClass?.convertWithOffsets { startOffset, endOffset ->
val irClass = declarationStorage.getIrClass(firClass, setParentAndContent = false)
val irClass = declarationStorage.getIrClass(firClass)
IrGetObjectValueImpl(startOffset, endOffset, irClass.defaultType, irClass.symbol)
}
}
@@ -714,7 +713,7 @@ class Fir2IrVisitor(
it is FirAnonymousObject || it is FirRegularClass && it.classKind == ClassKind.OBJECT
}
if (firObject != null) {
val irObject = declarationStorage.getIrClass(firObject, setParentAndContent = false)
val irObject = declarationStorage.getIrClass(firObject)
if (irObject != conversionScope.lastClass()) {
return thisReceiverExpression.convertWithOffsets { startOffset, endOffset ->
IrGetObjectValueImpl(startOffset, endOffset, irObject.defaultType, irObject.symbol)
+11 -11
View File
@@ -75,7 +75,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST1
class: CLASS ENUM_ENTRY name:TEST1 modality:FINAL visibility:private superTypes:[<root>.TestEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum2.TEST1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum2'
x: CONST Int type=kotlin.Int value=1
@@ -83,7 +83,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST2
class: CLASS ENUM_ENTRY name:TEST2 modality:FINAL visibility:private superTypes:[<root>.TestEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum2.TEST2
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum2'
x: CONST Int type=kotlin.Int value=2
@@ -91,7 +91,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST3
class: CLASS ENUM_ENTRY name:TEST3 modality:FINAL visibility:private superTypes:[<root>.TestEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum2.TEST3
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum2'
x: CONST Int type=kotlin.Int value=3
@@ -147,7 +147,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST
class: CLASS ENUM_ENTRY name:TEST modality:FINAL visibility:private superTypes:[<root>.TestEnum3]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum3.TEST
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestEnum3'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:TEST modality:FINAL visibility:private superTypes:[<root>.TestEnum3]'
@@ -221,7 +221,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST1
class: CLASS ENUM_ENTRY name:TEST1 modality:FINAL visibility:private superTypes:[<root>.TestEnum4]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum4.TEST1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum4'
x: CONST Int type=kotlin.Int value=1
@@ -234,7 +234,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST2
class: CLASS ENUM_ENTRY name:TEST2 modality:FINAL visibility:private superTypes:[<root>.TestEnum4]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum4.TEST2
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum4'
x: CONST Int type=kotlin.Int value=2
@@ -251,7 +251,7 @@ FILE fqName:<root> fileName:/enum.kt
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:z type:kotlin.Int visibility:private [final]' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
value: GET_VAR 'x: kotlin.Int declared in <root>.TestEnum4.<init>' type=kotlin.Int origin=null
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.TestEnum4.TEST2) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.TestEnum4.TEST2
@@ -325,21 +325,21 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST1
class: CLASS ENUM_ENTRY name:TEST1 modality:FINAL visibility:private superTypes:[<root>.TestEnum5]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum5.TEST1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum5'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:TEST1 modality:FINAL visibility:private superTypes:[<root>.TestEnum5]'
ENUM_ENTRY name:TEST2
class: CLASS ENUM_ENTRY name:TEST2 modality:FINAL visibility:private superTypes:[<root>.TestEnum5]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum5.TEST2
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum5'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:TEST2 modality:FINAL visibility:private superTypes:[<root>.TestEnum5]'
ENUM_ENTRY name:TEST3
class: CLASS ENUM_ENTRY name:TEST3 modality:FINAL visibility:private superTypes:[<root>.TestEnum5]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum5.TEST3
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestEnum5'
x: CONST Int type=kotlin.Int value=0
@@ -423,7 +423,7 @@ FILE fqName:<root> fileName:/enum.kt
ENUM_ENTRY name:TEST
class: CLASS ENUM_ENTRY name:TEST modality:FINAL visibility:private superTypes:[<root>.TestEnum6]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum6.TEST
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int, y: kotlin.Int) [primary] declared in <root>.TestEnum6'
x: CALL 'public final fun f (): kotlin.Int declared in <root>' type=kotlin.Int origin=null
@@ -72,7 +72,7 @@ FILE fqName:<root> fileName:/enumClassModality.kt
ENUM_ENTRY name:X1
class: CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestFinalEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestFinalEnum2.X1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.TestFinalEnum2'
x: CONST Int type=kotlin.Int value=1
@@ -182,7 +182,7 @@ FILE fqName:<root> fileName:/enumClassModality.kt
ENUM_ENTRY name:X1
class: CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestOpenEnum1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestOpenEnum1.X1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestOpenEnum1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestOpenEnum1]'
@@ -242,7 +242,7 @@ FILE fqName:<root> fileName:/enumClassModality.kt
ENUM_ENTRY name:X1
class: CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestOpenEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestOpenEnum2.X1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestOpenEnum2'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestOpenEnum2]'
@@ -303,7 +303,7 @@ FILE fqName:<root> fileName:/enumClassModality.kt
ENUM_ENTRY name:X1
class: CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestAbstractEnum1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestAbstractEnum1.X1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestAbstractEnum1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestAbstractEnum1]'
@@ -380,7 +380,7 @@ FILE fqName:<root> fileName:/enumClassModality.kt
ENUM_ENTRY name:X1
class: CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestAbstractEnum2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestAbstractEnum2.X1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestAbstractEnum2'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X1 modality:FINAL visibility:private superTypes:[<root>.TestAbstractEnum2]'
@@ -4,7 +4,7 @@ FILE fqName:<root> fileName:/enumWithMultipleCtors.kt
ENUM_ENTRY name:X
class: CLASS ENUM_ENTRY name:X modality:FINAL visibility:private superTypes:[<root>.A]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A.X
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (arg: kotlin.String) declared in <root>.A'
arg: CONST String type=kotlin.String value="asd"
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/enumWithMultipleCtors.kt
ENUM_ENTRY name:Y
class: CLASS ENUM_ENTRY name:Y modality:FINAL visibility:private superTypes:[<root>.A]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A.Y
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () declared in <root>.A'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Y modality:FINAL visibility:private superTypes:[<root>.A]'
@@ -27,7 +27,7 @@ FILE fqName:<root> fileName:/enumWithMultipleCtors.kt
ENUM_ENTRY name:Z
class: CLASS ENUM_ENTRY name:Z modality:FINAL visibility:private superTypes:[<root>.A]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.A.Z
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) declared in <root>.A'
x: CONST Int type=kotlin.Int value=5
@@ -21,7 +21,7 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
ENUM_ENTRY name:ZERO
class: CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test0]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test0.ZERO
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () declared in <root>.Test0'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test0]'
@@ -92,14 +92,14 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
ENUM_ENTRY name:ZERO
class: CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test1.ZERO
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () declared in <root>.Test1'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test1]'
ENUM_ENTRY name:ONE
class: CLASS ENUM_ENTRY name:ONE modality:FINAL visibility:private superTypes:[<root>.Test1]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test1.ONE
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.Test1'
x: CONST Int type=kotlin.Int value=1
@@ -171,7 +171,7 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
ENUM_ENTRY name:ZERO
class: CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test2.ZERO
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () declared in <root>.Test2'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ZERO modality:FINAL visibility:private superTypes:[<root>.Test2]'
@@ -183,7 +183,7 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
ENUM_ENTRY name:ONE
class: CLASS ENUM_ENTRY name:ONE modality:FINAL visibility:private superTypes:[<root>.Test2]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test2.ONE
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.Int) [primary] declared in <root>.Test2'
x: CONST Int type=kotlin.Int value=1
@@ -17,7 +17,7 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:test1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test1 type:<uninitialized parent>.<anonymous> visibility:private [final,static]
FIELD PROPERTY_BACKING_FIELD name:test1 type:<root>.test1.<no name provided> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.test1.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]
@@ -27,13 +27,13 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]'
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.test1.<no name provided>' type=<root>.test1.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test1> visibility:public modality:FINAL <> () returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test1> visibility:public modality:FINAL <> () returnType:<root>.test1.<no name provided>
correspondingProperty: PROPERTY name:test1 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test1> (): <uninitialized parent>.<anonymous> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test1 type:<uninitialized parent>.<anonymous> visibility:private [final,static]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-test1> (): <root>.test1.<no name provided> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test1 type:<root>.test1.<no name provided> visibility:private [final,static]' type=<root>.test1.<no name provided> origin=null
PROPERTY name:test2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test2 type:<uninitialized parent>.<anonymous> visibility:private [final,static]
FIELD PROPERTY_BACKING_FIELD name:test2 type:<root>.test2.<no name provided> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.test2.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IFoo]
@@ -48,11 +48,11 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
CALL 'public final fun println (message: kotlin.Any?): kotlin.Unit [inline] declared in kotlin.io' type=kotlin.Unit origin=null
message: CONST String type=kotlin.String value="foo"
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.test2.<no name provided>' type=<root>.test2.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test2> visibility:public modality:FINAL <> () returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test2> visibility:public modality:FINAL <> () returnType:<root>.test2.<no name provided>
correspondingProperty: PROPERTY name:test2 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test2> (): <uninitialized parent>.<anonymous> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test2 type:<uninitialized parent>.<anonymous> visibility:private [final,static]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-test2> (): <root>.test2.<no name provided> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test2 type:<root>.test2.<no name provided> visibility:private [final,static]' type=<root>.test2.<no name provided> origin=null
CLASS CLASS name:Outer modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Outer
CONSTRUCTOR visibility:public <> () returnType:<root>.Outer [primary]
@@ -82,10 +82,10 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:test3 visibility:public modality:FINAL <> ($this:<root>.Outer) returnType:<uninitialized parent>.<anonymous>
FUN name:test3 visibility:public modality:FINAL <> ($this:<root>.Outer) returnType:<root>.Outer.test3.<no name provided>
$this: VALUE_PARAMETER name:<this> type:<root>.Outer
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test3 (): <uninitialized parent>.<anonymous> declared in <root>.Outer'
RETURN type=kotlin.Nothing from='public final fun test3 (): <root>.Outer.test3.<no name provided> declared in <root>.Outer'
BLOCK type=<root>.Outer.test3.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Outer.Inner]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Outer.test3.<no name provided>
@@ -112,10 +112,10 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:test4 visibility:public modality:FINAL <> ($receiver:<root>.Outer) returnType:<uninitialized parent>.<anonymous>
FUN name:test4 visibility:public modality:FINAL <> ($receiver:<root>.Outer) returnType:<root>.test4.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Outer
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test4 (): <uninitialized parent>.<anonymous> declared in <root>'
RETURN type=kotlin.Nothing from='public final fun test4 (): <root>.test4.<no name provided> declared in <root>'
BLOCK type=<root>.test4.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Outer.Inner]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.test4.<no name provided>
@@ -39,7 +39,7 @@ FILE fqName:<root> fileName:/enumEntriesWithAnnotations.kt
annotations:
TestAnn(x = 'ENTRY1')
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum.ENTRY1
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestEnum'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ENTRY1 modality:FINAL visibility:private superTypes:[<root>.TestEnum]'
@@ -48,7 +48,7 @@ FILE fqName:<root> fileName:/enumEntriesWithAnnotations.kt
annotations:
TestAnn(x = 'ENTRY2')
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.TestEnum.ENTRY2
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.TestEnum'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ENTRY2 modality:FINAL visibility:private superTypes:[<root>.TestEnum]'
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/enumEntryAsReceiver.kt
ENUM_ENTRY name:B
class: CLASS ENUM_ENTRY name:B modality:FINAL visibility:private superTypes:[<root>.X]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.X.B
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.X'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:B modality:FINAL visibility:private superTypes:[<root>.X]'
@@ -32,7 +32,7 @@ FILE fqName:<root> fileName:/enumEntryAsReceiver.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.String declared in <root>.X.B.value'
CALL 'public final fun <get-value2> (): kotlin.String declared in <root>.X.B' type=kotlin.String origin=GET_PROPERTY
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value> visibility:public modality:FINAL <> ($this:<root>.X.B) returnType:kotlin.Function0<kotlin.String>
correspondingProperty: PROPERTY name:value visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.X.B
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
ENUM_ENTRY name:Z
class: CLASS ENUM_ENTRY name:Z modality:FINAL visibility:private superTypes:[<root>.MyEnum]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.MyEnum.Z
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.MyEnum'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Z modality:FINAL visibility:private superTypes:[<root>.MyEnum]'
@@ -39,10 +39,10 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum.Z
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:counter type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
value: CONST Int type=kotlin.Int value=1
CALL 'public final fun foo (): kotlin.Unit declared in <root>.MyEnum.Z' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
PROPERTY name:aLambda visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:aLambda type:kotlin.Function0<kotlin.Unit> visibility:private [final]
EXPRESSION_BODY
@@ -50,10 +50,10 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:counter type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
value: CONST Int type=kotlin.Int value=1
CALL 'public final fun foo (): kotlin.Unit declared in <root>.MyEnum.Z' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-aLambda> visibility:public modality:FINAL <> ($this:<root>.MyEnum.Z) returnType:kotlin.Function0<kotlin.Unit>
correspondingProperty: PROPERTY name:aLambda visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum.Z
@@ -62,7 +62,7 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:aLambda type:kotlin.Function0<kotlin.Unit> visibility:private [final]' type=kotlin.Function0<kotlin.Unit> origin=null
receiver: GET_VAR '<this>: <root>.MyEnum.Z declared in <root>.MyEnum.Z.<get-aLambda>' type=<root>.MyEnum.Z origin=null
PROPERTY name:anObject visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:anObject type:<uninitialized parent>.<anonymous> visibility:private [final]
FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.MyEnum.Z.anObject.<no name provided> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.MyEnum.Z.anObject.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]
@@ -74,25 +74,25 @@ FILE fqName:<root> fileName:/enumEntryReferenceFromEnumEntryClass.kt
ANONYMOUS_INITIALIZER isStatic=false
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:counter type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
value: CONST Int type=kotlin.Int value=1
CALL 'public final fun foo (): kotlin.Unit declared in <root>.MyEnum.Z' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
FUN name:test visibility:public modality:FINAL <> ($this:<root>.MyEnum.Z.anObject.<no name provided>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum.Z.anObject.<no name provided>
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:counter type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
receiver: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
value: CONST Int type=kotlin.Int value=1
CALL 'public final fun foo (): kotlin.Unit declared in <root>.MyEnum.Z' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.MyEnum.Z.anObject.<no name provided>' type=<root>.MyEnum.Z.anObject.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.MyEnum.Z) returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.MyEnum.Z) returnType:<root>.MyEnum.Z.anObject.<no name provided>
correspondingProperty: PROPERTY name:anObject visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum.Z
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): <uninitialized parent>.<anonymous> declared in <root>.MyEnum.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:<uninitialized parent>.<anonymous> visibility:private [final]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): <root>.MyEnum.Z.anObject.<no name provided> declared in <root>.MyEnum.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.MyEnum.Z.anObject.<no name provided> visibility:private [final]' type=<root>.MyEnum.Z.anObject.<no name provided> origin=null
receiver: GET_VAR '<this>: <root>.MyEnum.Z declared in <root>.MyEnum.Z.<get-anObject>' type=<root>.MyEnum.Z origin=null
FUN name:values visibility:public modality:FINAL <> ($this:<root>.MyEnum) returnType:kotlin.Array<<root>.MyEnum>
$this: VALUE_PARAMETER name:<this> type:<root>.MyEnum
@@ -56,7 +56,7 @@ FILE fqName:<root> fileName:/partialSam.kt
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:fsi visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:fsi type:<uninitialized parent>.<anonymous> visibility:private [final,static]
FIELD PROPERTY_BACKING_FIELD name:fsi type:<root>.fsi.<no name provided> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.fsi.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Fn<kotlin.String, kotlin.Int>]
@@ -74,13 +74,13 @@ FILE fqName:<root> fileName:/partialSam.kt
RETURN type=kotlin.Nothing from='public final fun run (s: kotlin.String, i: kotlin.Int, t: kotlin.String): kotlin.Int declared in <root>.fsi.<no name provided>'
CONST Int type=kotlin.Int value=1
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.fsi.<no name provided>' type=<root>.fsi.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-fsi> visibility:public modality:FINAL <> () returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-fsi> visibility:public modality:FINAL <> () returnType:<root>.fsi.<no name provided>
correspondingProperty: PROPERTY name:fsi visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-fsi> (): <uninitialized parent>.<anonymous> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fsi type:<uninitialized parent>.<anonymous> visibility:private [final,static]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-fsi> (): <root>.fsi.<no name provided> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fsi type:<root>.fsi.<no name provided> visibility:private [final,static]' type=<root>.fsi.<no name provided> origin=null
PROPERTY name:fis visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:fis type:<uninitialized parent>.<anonymous> visibility:private [final,static]
FIELD PROPERTY_BACKING_FIELD name:fis type:<root>.fis.<no name provided> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.fis.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Fn<kotlin.Int, kotlin.String>]
@@ -98,17 +98,17 @@ FILE fqName:<root> fileName:/partialSam.kt
RETURN type=kotlin.Nothing from='public final fun run (s: kotlin.String, i: kotlin.Int, t: kotlin.Int): kotlin.String declared in <root>.fis.<no name provided>'
CONST String type=kotlin.String value=""
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.fis.<no name provided>' type=<root>.fis.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-fis> visibility:public modality:FINAL <> () returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-fis> visibility:public modality:FINAL <> () returnType:<root>.fis.<no name provided>
correspondingProperty: PROPERTY name:fis visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-fis> (): <uninitialized parent>.<anonymous> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fis type:<uninitialized parent>.<anonymous> visibility:private [final,static]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-fis> (): <root>.fis.<no name provided> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:fis type:<root>.fis.<no name provided> visibility:private [final,static]' type=<root>.fis.<no name provided> origin=null
FUN name:test visibility:public modality:FINAL <> (j:<root>.J) returnType:kotlin.Unit
VALUE_PARAMETER name:j index:0 type:<root>.J
BLOCK_BODY
CALL 'public final fun runConversion (f1: <root>.Fn<kotlin.String, kotlin.Int>, f2: <root>.Fn<kotlin.Int, kotlin.String>): kotlin.Int declared in <root>.J' type=kotlin.Int origin=null
$this: GET_VAR 'j: <root>.J declared in <root>.test' type=<root>.J origin=null
f1: CALL 'public final fun <get-fsi> (): <uninitialized parent>.<anonymous> declared in <root>' type=<uninitialized parent>.<anonymous> origin=GET_PROPERTY
f1: CALL 'public final fun <get-fsi> (): <root>.fsi.<no name provided> declared in <root>' type=<uninitialized parent>.<no name provided> origin=GET_PROPERTY
f2: FUN_EXPR type=kotlin.Function3<kotlin.String, kotlin.Int, kotlin.Int, kotlin.String> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (s:kotlin.String, i:kotlin.Int, ti:kotlin.Int) returnType:kotlin.String
VALUE_PARAMETER name:s index:0 type:kotlin.String
@@ -127,4 +127,4 @@ FILE fqName:<root> fileName:/partialSam.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (s: kotlin.String, i: kotlin.Int, ts: kotlin.String): kotlin.Int declared in <root>.test'
CONST Int type=kotlin.Int value=1
f2: CALL 'public final fun <get-fis> (): <uninitialized parent>.<anonymous> declared in <root>' type=<uninitialized parent>.<anonymous> origin=GET_PROPERTY
f2: CALL 'public final fun <get-fis> (): <root>.fis.<no name provided> declared in <root>' type=<uninitialized parent>.<no name provided> origin=GET_PROPERTY
@@ -67,11 +67,11 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
RETURN type=kotlin.Nothing from='public final fun <get-y> (): kotlin.Int declared in <root>.Host'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Host declared in <root>.Host.<get-y>' type=<root>.Host origin=null
FUN name:test visibility:public modality:FINAL <> ($this:<root>.Host, $receiver:<root>.Outer) returnType:<uninitialized parent>.<anonymous>
FUN name:test visibility:public modality:FINAL <> ($this:<root>.Host, $receiver:<root>.Outer) returnType:<root>.Host.test.<no name provided>
$this: VALUE_PARAMETER name:<this> type:<root>.Host
$receiver: VALUE_PARAMETER name:<this> type:<root>.Outer
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test (): <uninitialized parent>.<anonymous> declared in <root>.Host'
RETURN type=kotlin.Nothing from='public final fun test (): <root>.Host.test.<no name provided> declared in <root>.Host'
BLOCK type=<root>.Host.test.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Outer.Inner]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Host.test.<no name provided>
@@ -85,7 +85,7 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
EXPRESSION_BODY
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
$this: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.Outer.Inner' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <root>.Host.test.<no name provided> declared in <root>.Host.test.<no name provided>' type=<root>.Host.test.<no name provided> origin=null
other: GET_VAR 'y: kotlin.Int declared in <root>.Host.<init>' type=kotlin.Int origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-xx> visibility:public modality:FINAL <> ($this:<root>.Host.test.<no name provided>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:xx visibility:public modality:FINAL [val]
@@ -108,7 +108,7 @@ FILE fqName:<root> fileName:/objectReference.kt
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:aLambda type:kotlin.Function0<kotlin.Unit> visibility:private [final]' type=kotlin.Function0<kotlin.Unit> origin=null
receiver: GET_VAR '<this>: <root>.Z declared in <root>.Z.<get-aLambda>' type=<root>.Z origin=null
PROPERTY name:anObject visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:anObject type:<uninitialized parent>.<anonymous> visibility:private [final]
FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.Z.anObject.<no name provided> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.Z.anObject.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]
@@ -143,12 +143,12 @@ FILE fqName:<root> fileName:/objectReference.kt
CALL 'public final fun foo (): kotlin.Unit declared in <root>.Z' type=kotlin.Unit origin=null
$this: GET_OBJECT 'CLASS OBJECT name:Z modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.Z
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.Z.anObject.<no name provided>' type=<root>.Z.anObject.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.Z) returnType:<uninitialized parent>.<anonymous>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.Z) returnType:<root>.Z.anObject.<no name provided>
correspondingProperty: PROPERTY name:anObject visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Z
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): <uninitialized parent>.<anonymous> declared in <root>.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:<uninitialized parent>.<anonymous> visibility:private [final]' type=<uninitialized parent>.<anonymous> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): <root>.Z.anObject.<no name provided> declared in <root>.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.Z.anObject.<no name provided> visibility:private [final]' type=<root>.Z.anObject.<no name provided> origin=null
receiver: GET_VAR '<this>: <root>.Z declared in <root>.Z.<get-anObject>' type=<root>.Z origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -30,7 +30,7 @@ FILE fqName:<root> fileName:/temporaryInEnumEntryInitializer.kt
ENUM_ENTRY name:ENTRY
class: CLASS ENUM_ENTRY name:ENTRY modality:FINAL visibility:private superTypes:[<root>.En]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.En.ENTRY
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (x: kotlin.String?) [primary] declared in <root>.En'
x: CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String? origin=null
@@ -62,10 +62,10 @@ FILE fqName:<root> fileName:/thisOfGenericOuterClass.kt
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:test visibility:public modality:FINAL <> ($receiver:<root>.Outer<kotlin.Int>) returnType:<uninitialized parent>.<anonymous>
FUN name:test visibility:public modality:FINAL <> ($receiver:<root>.Outer<kotlin.Int>) returnType:<root>.test.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Outer<kotlin.Int>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test (): <uninitialized parent>.<anonymous> declared in <root>'
RETURN type=kotlin.Nothing from='public final fun test (): <root>.test.<no name provided> declared in <root>'
BLOCK type=<root>.test.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.Outer.Inner<kotlin.Int>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.test.<no name provided>
@@ -81,7 +81,7 @@ FILE fqName:<root> fileName:/thisOfGenericOuterClass.kt
$this: CALL 'public final fun <get-x> (): T of <root>.Outer declared in <root>.Outer' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.Outer<kotlin.Int> declared in <root>.test' type=<root>.Outer<kotlin.Int> origin=null
other: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.Outer.Inner' type=kotlin.Int origin=GET_PROPERTY
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <root>.test.<no name provided> declared in <root>.test.<no name provided>' type=<root>.test.<no name provided> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-xx> visibility:public modality:FINAL <> ($this:<root>.test.<no name provided>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:xx visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.test.<no name provided>
@@ -2,7 +2,7 @@ FILE fqName:<root> fileName:/thisReferenceBeforeClassDeclared.kt
FUN name:test visibility:public modality:FINAL <> ($receiver:<root>.WithCompanion) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.WithCompanion
BLOCK_BODY
VAR name:test1 type:<uninitialized parent>.<anonymous> [val]
VAR name:test1 type:<root>.test.<no name provided> [val]
BLOCK type=<root>.test.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.WithCompanion]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.test.<no name provided>
@@ -11,7 +11,7 @@ FILE fqName:<root> fileName:/thisReferenceBeforeClassDeclared.kt
ERROR_CALL 'Cannot find delegated constructor call' type=<root>.WithCompanion
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.WithCompanion]'
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.test.<no name provided>' type=<root>.test.<no name provided> origin=null
VAR name:test2 type:<uninitialized parent>.<anonymous> [val]
VAR name:test2 type:<root>.test.<no name provided> [val]
BLOCK type=<root>.test.<no name provided> origin=OBJECT_LITERAL
CLASS OBJECT name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.WithCompanion]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.test.<no name provided>
+2 -2
View File
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/enumEntry.kt
ENUM_ENTRY name:ENTRY
class: CLASS ENUM_ENTRY name:ENTRY modality:FINAL visibility:private superTypes:[<root>.Z]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Z.ENTRY
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<anonymous> [primary]
CONSTRUCTOR visibility:private <> () returnType:<uninitialized parent>.<no name provided> [primary]
BLOCK_BODY
ENUM_CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.Z'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:ENTRY modality:FINAL visibility:private superTypes:[<root>.Z]'
@@ -26,7 +26,7 @@ FILE fqName:<root> fileName:/enumEntry.kt
$this: VALUE_PARAMETER name:<this> type:<root>.Z.ENTRY.A
BLOCK_BODY
CALL 'public final fun test (): kotlin.Unit declared in <root>.Z.ENTRY' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<anonymous> declared in <no parent>.<anonymous>' type=<uninitialized parent>.<anonymous> origin=null
$this: GET_VAR '<this>: <uninitialized parent>.<no name provided> declared in <no parent>.<no name provided>' type=<uninitialized parent>.<no name provided> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any