Represent class instance initialization "as from resolve".
This commit is contained in:
committed by
Dmitry Petrov
parent
c3c758c7cc
commit
1b5dd50359
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.psi2ir.generators
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunctionBase
|
import org.jetbrains.kotlin.ir.declarations.IrFunctionBase
|
||||||
import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor
|
import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
@@ -32,7 +31,6 @@ import org.jetbrains.kotlin.psi2ir.builders.irReturn
|
|||||||
import org.jetbrains.kotlin.psi2ir.intermediate.VariableLValue
|
import org.jetbrains.kotlin.psi2ir.intermediate.VariableLValue
|
||||||
import org.jetbrains.kotlin.psi2ir.intermediate.setExplicitReceiverValue
|
import org.jetbrains.kotlin.psi2ir.intermediate.setExplicitReceiverValue
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import java.lang.AssertionError
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context: GeneratorContext): GeneratorWithScope {
|
class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context: GeneratorContext): GeneratorWithScope {
|
||||||
@@ -146,7 +144,9 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
|
|||||||
|
|
||||||
generateSuperConstructorCall(irBlockBody, ktClassOrObject)
|
generateSuperConstructorCall(irBlockBody, ktClassOrObject)
|
||||||
generateInitializersForPropertiesDefinedInPrimaryConstructor(irBlockBody, ktClassOrObject)
|
generateInitializersForPropertiesDefinedInPrimaryConstructor(irBlockBody, ktClassOrObject)
|
||||||
generateInitializersForClassBody(irBlockBody, ktClassOrObject)
|
|
||||||
|
val classDescriptor = (scopeOwner as ConstructorDescriptor).containingDeclaration
|
||||||
|
irBlockBody.addStatement(IrInstanceInitializerCallImpl(ktClassOrObject.startOffset, ktClassOrObject.endOffset, classDescriptor))
|
||||||
|
|
||||||
return irBlockBody
|
return irBlockBody
|
||||||
}
|
}
|
||||||
@@ -157,7 +157,7 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
|
|||||||
generateDelegatingConstructorCall(irBlockBody, ktConstructor)
|
generateDelegatingConstructorCall(irBlockBody, ktConstructor)
|
||||||
|
|
||||||
val classDescriptor = getOrFail(BindingContext.CONSTRUCTOR, ktConstructor).containingDeclaration
|
val classDescriptor = getOrFail(BindingContext.CONSTRUCTOR, ktConstructor).containingDeclaration
|
||||||
irBlockBody.addStatement(IrNestedInitializersCallImpl(ktConstructor.startOffset, ktConstructor.endOffset, classDescriptor))
|
irBlockBody.addStatement(IrInstanceInitializerCallImpl(ktConstructor.startOffset, ktConstructor.endOffset, classDescriptor))
|
||||||
|
|
||||||
ktConstructor.bodyExpression?.let { ktBody ->
|
ktConstructor.bodyExpression?.let { ktBody ->
|
||||||
createStatementGenerator().generateBlockBodyStatements(irBlockBody, ktBody)
|
createStatementGenerator().generateBlockBodyStatements(irBlockBody, ktBody)
|
||||||
@@ -197,6 +197,18 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
|
|||||||
return generateEnumConstructorCallOrSuperCall(ktEnumEntry, enumEntryDescriptor.containingDeclaration as ClassDescriptor, null)
|
return generateEnumConstructorCallOrSuperCall(ktEnumEntry, enumEntryDescriptor.containingDeclaration as ClassDescriptor, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun generateAnonymousInitializerBody(ktAnonymousInitializer: KtAnonymousInitializer): IrBlockBody {
|
||||||
|
val ktBody = ktAnonymousInitializer.body!!
|
||||||
|
val irBlockBody = IrBlockBodyImpl(ktBody.startOffset, ktBody.endOffset)
|
||||||
|
if (ktBody is KtBlockExpression) {
|
||||||
|
createStatementGenerator().generateBlockBodyStatements(irBlockBody, ktBody)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
irBlockBody.addStatement(createStatementGenerator().generateStatement(ktBody))
|
||||||
|
}
|
||||||
|
return irBlockBody
|
||||||
|
}
|
||||||
|
|
||||||
fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression {
|
fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression {
|
||||||
if (ktEnumEntry.declarations.isNotEmpty()) {
|
if (ktEnumEntry.declarations.isNotEmpty()) {
|
||||||
val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!!
|
val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!!
|
||||||
@@ -229,41 +241,6 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
|
|||||||
enumClassConstructor, enumEntryOrNull)
|
enumClassConstructor, enumEntryOrNull)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateNestedInitializersBody(ktClassOrObject: KtClassOrObject): IrBody {
|
|
||||||
val irBody = IrBlockBodyImpl(ktClassOrObject.startOffset, ktClassOrObject.endOffset)
|
|
||||||
generateInitializersForClassBody(irBody, ktClassOrObject)
|
|
||||||
return irBody
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun generateInitializersForClassBody(irBlockBody: IrBlockBodyImpl, ktClassOrObject: KtClassOrObject) {
|
|
||||||
ktClassOrObject.getBody()?.let { ktClassBody ->
|
|
||||||
for (ktDeclaration in ktClassBody.declarations) {
|
|
||||||
when (ktDeclaration) {
|
|
||||||
is KtProperty -> generateInitializerForPropertyDefinedInClassBody(irBlockBody, ktDeclaration)
|
|
||||||
is KtClassInitializer -> generateAnonymousInitializer(irBlockBody, ktDeclaration)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun generateAnonymousInitializer(irBlockBody: IrBlockBodyImpl, ktClassInitializer: KtClassInitializer) {
|
|
||||||
if (ktClassInitializer.body == null) return
|
|
||||||
val irInitializer = generateAnonymousInitializer(ktClassInitializer)
|
|
||||||
irBlockBody.addStatement(irInitializer)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun generateAnonymousInitializer(ktInitializer: KtAnonymousInitializer): IrStatement {
|
|
||||||
return createStatementGenerator().generateStatement(ktInitializer.body!!)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun generateInitializerForPropertyDefinedInClassBody(irBlockBody: IrBlockBodyImpl, ktProperty: KtProperty) {
|
|
||||||
val propertyDescriptor = getOrFail(BindingContext.VARIABLE, ktProperty) as PropertyDescriptor
|
|
||||||
ktProperty.initializer?.let { ktInitializer ->
|
|
||||||
irBlockBody.addStatement(createPropertyInitializationExpression(
|
|
||||||
ktProperty, propertyDescriptor, createStatementGenerator().generateExpression(ktInitializer)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun generateInitializersForPropertiesDefinedInPrimaryConstructor(irBlockBody: IrBlockBodyImpl, ktClassOrObject: KtClassOrObject) {
|
private fun generateInitializersForPropertiesDefinedInPrimaryConstructor(irBlockBody: IrBlockBodyImpl, ktClassOrObject: KtClassOrObject) {
|
||||||
ktClassOrObject.getPrimaryConstructor()?.let { ktPrimaryConstructor ->
|
ktClassOrObject.getPrimaryConstructor()?.let { ktPrimaryConstructor ->
|
||||||
for (ktParameter in ktPrimaryConstructor.valueParameters) {
|
for (ktParameter in ktPrimaryConstructor.valueParameters) {
|
||||||
|
|||||||
@@ -21,10 +21,11 @@ import org.jetbrains.kotlin.ir.declarations.*
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBodyImpl
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBodyImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrGetVariableImpl
|
import org.jetbrains.kotlin.ir.expressions.IrGetVariableImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrOperator
|
import org.jetbrains.kotlin.ir.expressions.IrOperator
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
import org.jetbrains.kotlin.psi.KtEnumEntry
|
||||||
|
import org.jetbrains.kotlin.psi.KtParameter
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
import org.jetbrains.kotlin.psi2ir.isConstructorDelegatingToSuper
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
|
||||||
class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator {
|
class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator {
|
||||||
@@ -40,10 +41,6 @@ class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator
|
|||||||
|
|
||||||
generateMembersDeclaredInClassBody(irClass, ktClassOrObject)
|
generateMembersDeclaredInClassBody(irClass, ktClassOrObject)
|
||||||
|
|
||||||
if (shouldGenerateNestedInitializers(ktClassOrObject)) {
|
|
||||||
irClass.nestedInitializers = BodyGenerator(descriptor, context).generateNestedInitializersBody(ktClassOrObject)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (descriptor.isData) {
|
if (descriptor.isData) {
|
||||||
generateAdditionalMembersForDataClass(irClass, ktClassOrObject)
|
generateAdditionalMembersForDataClass(irClass, ktClassOrObject)
|
||||||
}
|
}
|
||||||
@@ -63,12 +60,6 @@ class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator
|
|||||||
EnumClassMembersGenerator(context).generateSpecialMembers(irClass)
|
EnumClassMembersGenerator(context).generateSpecialMembers(irClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shouldGenerateNestedInitializers(ktClassOrObject: KtClassOrObject): Boolean {
|
|
||||||
val ktClassBody = ktClassOrObject.getBody() ?: return false
|
|
||||||
|
|
||||||
return ktClassBody.declarations.any { it is KtSecondaryConstructor && it.isConstructorDelegatingToSuper(context.bindingContext) }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun generatePrimaryConstructor(irClass: IrClassImpl, ktClassOrObject: KtClassOrObject) {
|
private fun generatePrimaryConstructor(irClass: IrClassImpl, ktClassOrObject: KtClassOrObject) {
|
||||||
val primaryConstructorDescriptor = irClass.descriptor.unsubstitutedPrimaryConstructor ?: return
|
val primaryConstructorDescriptor = irClass.descriptor.unsubstitutedPrimaryConstructor ?: return
|
||||||
|
|
||||||
@@ -97,10 +88,7 @@ class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator
|
|||||||
private fun generateMembersDeclaredInClassBody(irClass: IrClassImpl, ktClassOrObject: KtClassOrObject) {
|
private fun generateMembersDeclaredInClassBody(irClass: IrClassImpl, ktClassOrObject: KtClassOrObject) {
|
||||||
ktClassOrObject.getBody()?.let { ktClassBody ->
|
ktClassOrObject.getBody()?.let { ktClassBody ->
|
||||||
for (ktDeclaration in ktClassBody.declarations) {
|
for (ktDeclaration in ktClassBody.declarations) {
|
||||||
if (ktDeclaration is KtAnonymousInitializer) continue
|
val irMember = declarationGenerator.generateClassMemberDeclaration(ktDeclaration, irClass.descriptor)
|
||||||
|
|
||||||
val irMember = declarationGenerator.generateMemberDeclaration(ktDeclaration)
|
|
||||||
|
|
||||||
irClass.addMember(irMember)
|
irClass.addMember(irMember)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-4
@@ -32,12 +32,8 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
|||||||
when (ktDeclaration) {
|
when (ktDeclaration) {
|
||||||
is KtNamedFunction ->
|
is KtNamedFunction ->
|
||||||
generateFunctionDeclaration(ktDeclaration)
|
generateFunctionDeclaration(ktDeclaration)
|
||||||
is KtSecondaryConstructor ->
|
|
||||||
generateSecondaryConstructor(ktDeclaration)
|
|
||||||
is KtProperty ->
|
is KtProperty ->
|
||||||
generatePropertyDeclaration(ktDeclaration)
|
generatePropertyDeclaration(ktDeclaration)
|
||||||
is KtEnumEntry ->
|
|
||||||
generateEnumEntryDeclaration(ktDeclaration)
|
|
||||||
is KtClassOrObject ->
|
is KtClassOrObject ->
|
||||||
generateClassOrObjectDeclaration(ktDeclaration)
|
generateClassOrObjectDeclaration(ktDeclaration)
|
||||||
is KtTypeAlias ->
|
is KtTypeAlias ->
|
||||||
@@ -49,6 +45,18 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun generateClassMemberDeclaration(ktDeclaration: KtDeclaration, classDescriptor: ClassDescriptor): IrDeclaration =
|
||||||
|
when (ktDeclaration) {
|
||||||
|
is KtAnonymousInitializer ->
|
||||||
|
generateAnonymousInitializerDeclaration(ktDeclaration, classDescriptor)
|
||||||
|
is KtSecondaryConstructor ->
|
||||||
|
generateSecondaryConstructor(ktDeclaration)
|
||||||
|
is KtEnumEntry ->
|
||||||
|
generateEnumEntryDeclaration(ktDeclaration)
|
||||||
|
else ->
|
||||||
|
generateMemberDeclaration(ktDeclaration)
|
||||||
|
}
|
||||||
|
|
||||||
private fun generateEnumEntryDeclaration(ktEnumEntry: KtEnumEntry): IrEnumEntry =
|
private fun generateEnumEntryDeclaration(ktEnumEntry: KtEnumEntry): IrEnumEntry =
|
||||||
ClassGenerator(this).generateEnumEntry(ktEnumEntry)
|
ClassGenerator(this).generateEnumEntry(ktEnumEntry)
|
||||||
|
|
||||||
@@ -59,6 +67,13 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
|||||||
IrTypeAliasImpl(ktDeclaration.startOffset, ktDeclaration.endOffset, IrDeclarationOrigin.DEFINED,
|
IrTypeAliasImpl(ktDeclaration.startOffset, ktDeclaration.endOffset, IrDeclarationOrigin.DEFINED,
|
||||||
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration))
|
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration))
|
||||||
|
|
||||||
|
fun generateAnonymousInitializerDeclaration(ktAnonymousInitializer: KtAnonymousInitializer, classDescriptor: ClassDescriptor): IrDeclaration {
|
||||||
|
val irAnonymousInitializer = IrAnonymousInitializerImpl(ktAnonymousInitializer.startOffset, ktAnonymousInitializer.endOffset,
|
||||||
|
IrDeclarationOrigin.DEFINED, classDescriptor)
|
||||||
|
irAnonymousInitializer.body = BodyGenerator(classDescriptor, context).generateAnonymousInitializerBody(ktAnonymousInitializer)
|
||||||
|
return irAnonymousInitializer
|
||||||
|
}
|
||||||
|
|
||||||
fun generateFunctionDeclaration(ktFunction: KtNamedFunction): IrGeneralFunction {
|
fun generateFunctionDeclaration(ktFunction: KtNamedFunction): IrGeneralFunction {
|
||||||
val functionDescriptor = getOrFail(BindingContext.FUNCTION, ktFunction)
|
val functionDescriptor = getOrFail(BindingContext.FUNCTION, ktFunction)
|
||||||
val irFunction = IrFunctionImpl(ktFunction.startOffset, ktFunction.endOffset, IrDeclarationOrigin.DEFINED, functionDescriptor)
|
val irFunction = IrFunctionImpl(ktFunction.startOffset, ktFunction.endOffset, IrDeclarationOrigin.DEFINED, functionDescriptor)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ const val ARGUMENT1_SLOT = 1
|
|||||||
const val DISPATCH_RECEIVER_SLOT = -1
|
const val DISPATCH_RECEIVER_SLOT = -1
|
||||||
const val EXTENSION_RECEIVER_SLOT = -2
|
const val EXTENSION_RECEIVER_SLOT = -2
|
||||||
const val FUNCTION_BODY_SLOT = -1
|
const val FUNCTION_BODY_SLOT = -1
|
||||||
|
const val ANONYMOUS_INITIALIZER_BODY_SLOT = -1
|
||||||
const val MODULE_SLOT = 0
|
const val MODULE_SLOT = 0
|
||||||
const val INITIALIZER_SLOT = 0
|
const val INITIALIZER_SLOT = 0
|
||||||
const val IF_CONDITION_SLOT = 0
|
const val IF_CONDITION_SLOT = 0
|
||||||
|
|||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.ir.*
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||||
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
|
||||||
|
interface IrAnonymousInitializer : IrDeclaration {
|
||||||
|
override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks
|
||||||
|
|
||||||
|
override val declarationKind: IrDeclarationKind
|
||||||
|
get() = IrDeclarationKind.ANONYMOUS_INITIALIZER
|
||||||
|
|
||||||
|
var body: IrBlockBody
|
||||||
|
}
|
||||||
|
|
||||||
|
class IrAnonymousInitializerImpl(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
override val descriptor: ClassDescriptor
|
||||||
|
) : IrDeclarationBase(startOffset, endOffset, origin), IrAnonymousInitializer {
|
||||||
|
private var bodyImpl: IrBlockBody? = null
|
||||||
|
override var body: IrBlockBody
|
||||||
|
get() = bodyImpl!!
|
||||||
|
set(value) {
|
||||||
|
value.assertDetached()
|
||||||
|
bodyImpl?.detach()
|
||||||
|
bodyImpl = value
|
||||||
|
value.setTreeLocation(this, ANONYMOUS_INITIALIZER_BODY_SLOT)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getChild(slot: Int): IrElement? =
|
||||||
|
when (slot) {
|
||||||
|
ANONYMOUS_INITIALIZER_BODY_SLOT -> body
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun replaceChild(slot: Int, newChild: IrElement) {
|
||||||
|
when (slot) {
|
||||||
|
ANONYMOUS_INITIALIZER_BODY_SLOT -> body = newChild.assertCast()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||||
|
return visitor.visitAnonymousInitializer(this, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||||
|
body.accept(visitor, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,10 +29,23 @@ interface IrClass : IrDeclaration {
|
|||||||
override val descriptor: ClassDescriptor
|
override val descriptor: ClassDescriptor
|
||||||
|
|
||||||
val members: List<IrDeclaration>
|
val members: List<IrDeclaration>
|
||||||
|
|
||||||
var nestedInitializers: IrBody?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun IrClass.getInstanceInitializerMembers() =
|
||||||
|
members.filter {
|
||||||
|
when (it) {
|
||||||
|
is IrDelegate ->
|
||||||
|
true
|
||||||
|
is IrAnonymousInitializer ->
|
||||||
|
true
|
||||||
|
is IrSimpleProperty ->
|
||||||
|
it.valueInitializer != null
|
||||||
|
is IrDelegatedProperty ->
|
||||||
|
true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class IrClassImpl(
|
class IrClassImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
@@ -47,41 +60,21 @@ class IrClassImpl(
|
|||||||
members.add(member)
|
members.add(member)
|
||||||
}
|
}
|
||||||
|
|
||||||
override var nestedInitializers: IrBody? = null
|
|
||||||
set(value) {
|
|
||||||
value?.assertDetached()
|
|
||||||
field?.detach()
|
|
||||||
field = value
|
|
||||||
value?.setTreeLocation(this, NESTED_INITIALIZERS_SLOT)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getChild(slot: Int): IrElement? =
|
override fun getChild(slot: Int): IrElement? =
|
||||||
when (slot) {
|
members.getOrNull(slot)
|
||||||
NESTED_INITIALIZERS_SLOT -> nestedInitializers
|
|
||||||
else -> members.getOrNull(slot)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
override fun replaceChild(slot: Int, newChild: IrElement) {
|
override fun replaceChild(slot: Int, newChild: IrElement) {
|
||||||
when (slot) {
|
newChild.assertDetached()
|
||||||
NESTED_INITIALIZERS_SLOT ->
|
members.getOrNull(slot)?.detach() ?: throwNoSuchSlot(slot)
|
||||||
nestedInitializers = newChild.assertCast()
|
members[slot] = newChild.assertCast()
|
||||||
else -> {
|
newChild.setTreeLocation(this, slot)
|
||||||
newChild.assertDetached()
|
|
||||||
members.getOrNull(slot)?.detach() ?: throwNoSuchSlot(slot)
|
|
||||||
members[slot] = newChild.assertCast()
|
|
||||||
newChild.setTreeLocation(this, slot)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
nestedInitializers?.accept(visitor, data)
|
|
||||||
members.forEach { it.accept(visitor, data) }
|
members.forEach { it.accept(visitor, data) }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ enum class IrDeclarationKind {
|
|||||||
CLASS,
|
CLASS,
|
||||||
TYPEALIAS,
|
TYPEALIAS,
|
||||||
ENUM_ENTRY,
|
ENUM_ENTRY,
|
||||||
|
ANONYMOUS_INITIALIZER,
|
||||||
DUMMY;
|
DUMMY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -20,16 +20,16 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
|
|
||||||
interface IrNestedInitializersCall : IrExpression {
|
interface IrInstanceInitializerCall : IrExpression {
|
||||||
val classDescriptor: ClassDescriptor
|
val classDescriptor: ClassDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrNestedInitializersCallImpl(
|
class IrInstanceInitializerCallImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
override val classDescriptor: ClassDescriptor
|
override val classDescriptor: ClassDescriptor
|
||||||
) : IrTerminalExpressionBase(startOffset, endOffset, classDescriptor.builtIns.unitType), IrNestedInitializersCall {
|
) : IrTerminalExpressionBase(startOffset, endOffset, classDescriptor.builtIns.unitType), IrInstanceInitializerCall {
|
||||||
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.visitNestedInitializersCall(this, data)
|
return visitor.visitInstanceInitializerCall(this, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,15 +60,6 @@ class DumpIrTreeVisitor(out: Appendable): IrElementVisitor<Unit, String> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitClass(declaration: IrClass, data: String) {
|
|
||||||
declaration.dumpLabeledElementWith(data) {
|
|
||||||
declaration.nestedInitializers?.accept(this, "nestedInitializers")
|
|
||||||
declaration.members.forEach {
|
|
||||||
it.accept(this, "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitEnumEntry(declaration: IrEnumEntry, data: String) {
|
override fun visitEnumEntry(declaration: IrEnumEntry, data: String) {
|
||||||
declaration.dumpLabeledElementWith(data) {
|
declaration.dumpLabeledElementWith(data) {
|
||||||
declaration.initializerExpression.accept(this, "init")
|
declaration.initializerExpression.accept(this, "init")
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
|||||||
override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?): String =
|
override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?): String =
|
||||||
"ENUM_ENTRY ${declaration.descriptor.render()}"
|
"ENUM_ENTRY ${declaration.descriptor.render()}"
|
||||||
|
|
||||||
|
override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?): String =
|
||||||
|
"ANONYMOUS_INITIALIZER ${declaration.descriptor.name}"
|
||||||
|
|
||||||
override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?): String =
|
override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?): String =
|
||||||
"EXPRESSION_BODY"
|
"EXPRESSION_BODY"
|
||||||
|
|
||||||
@@ -119,8 +122,8 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
|||||||
else enumEntryDescriptor.name
|
else enumEntryDescriptor.name
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitNestedInitializersCall(expression: IrNestedInitializersCall, data: Nothing?): String =
|
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: Nothing?): String =
|
||||||
"NESTED_INITIALIZERS_CALL classDescriptor=${expression.classDescriptor.name}"
|
"INSTANCE_INITIALIZER_CALL classDescriptor=${expression.classDescriptor.name}"
|
||||||
|
|
||||||
override fun visitGetVariable(expression: IrGetVariable, data: Nothing?): String =
|
override fun visitGetVariable(expression: IrGetVariable, data: Nothing?): String =
|
||||||
"GET_VAR ${expression.descriptor.name} type=${expression.type.render()} operator=${expression.operator}"
|
"GET_VAR ${expression.descriptor.name} type=${expression.type.render()} operator=${expression.operator}"
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ interface IrElementVisitor<out R, in D> {
|
|||||||
fun visitVariable(declaration: IrVariable, data: D) = visitDeclaration(declaration, data)
|
fun visitVariable(declaration: IrVariable, data: D) = visitDeclaration(declaration, data)
|
||||||
fun visitDelegate(declaration: IrDelegate, data: D) = visitDeclaration(declaration, data)
|
fun visitDelegate(declaration: IrDelegate, data: D) = visitDeclaration(declaration, data)
|
||||||
fun visitEnumEntry(declaration: IrEnumEntry, data: D) = visitDeclaration(declaration, data)
|
fun visitEnumEntry(declaration: IrEnumEntry, data: D) = visitDeclaration(declaration, data)
|
||||||
|
fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D) = visitDeclaration(declaration, data)
|
||||||
|
|
||||||
fun visitBody(body: IrBody, data: D) = visitElement(body, data)
|
fun visitBody(body: IrBody, data: D) = visitElement(body, data)
|
||||||
fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body, data)
|
fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body, data)
|
||||||
@@ -71,7 +72,7 @@ interface IrElementVisitor<out R, in D> {
|
|||||||
fun visitCallableReference(expression: IrCallableReference, data: D) = visitDeclarationReference(expression, data)
|
fun visitCallableReference(expression: IrCallableReference, data: D) = visitDeclarationReference(expression, data)
|
||||||
fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data)
|
fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data)
|
||||||
|
|
||||||
fun visitNestedInitializersCall(expression: IrNestedInitializersCall, data: D) = visitExpression(expression, data)
|
fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, data)
|
||||||
|
|
||||||
fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) = visitExpression(expression, data)
|
fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) = visitExpression(expression, data)
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@ FILE /argumentReorderingInDelegatingConstructorCall.kt
|
|||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Base
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -23,8 +24,8 @@ FILE /argumentReorderingInDelegatingConstructorCall.kt
|
|||||||
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
||||||
x: GET_VAR tmp1_x type=kotlin.Int operator=null
|
x: GET_VAR tmp1_x type=kotlin.Int operator=null
|
||||||
y: GET_VAR tmp0_y type=kotlin.Int operator=null
|
y: GET_VAR tmp0_y type=kotlin.Int operator=null
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test1
|
||||||
CLASS CLASS Test2
|
CLASS CLASS Test2
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
CONSTRUCTOR public constructor Test2(/*0*/ xx: kotlin.Int, /*1*/ yy: kotlin.Int)
|
CONSTRUCTOR public constructor Test2(/*0*/ xx: kotlin.Int, /*1*/ yy: kotlin.Int)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=Base operator=ARGUMENTS_REORDERING_FOR_CALL
|
BLOCK type=Base operator=ARGUMENTS_REORDERING_FOR_CALL
|
||||||
@@ -36,7 +37,7 @@ FILE /argumentReorderingInDelegatingConstructorCall.kt
|
|||||||
DELEGATING_CONSTRUCTOR_CALL Base
|
DELEGATING_CONSTRUCTOR_CALL Base
|
||||||
x: GET_VAR tmp1_x type=kotlin.Int operator=null
|
x: GET_VAR tmp1_x type=kotlin.Int operator=null
|
||||||
y: GET_VAR tmp0_y type=kotlin.Int operator=null
|
y: GET_VAR tmp0_y type=kotlin.Int operator=null
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=Test2
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test2
|
||||||
CONSTRUCTOR public constructor Test2(/*0*/ xxx: kotlin.Int, /*1*/ yyy: kotlin.Int, /*2*/ a: kotlin.Any)
|
CONSTRUCTOR public constructor Test2(/*0*/ xxx: kotlin.Int, /*1*/ yyy: kotlin.Int, /*2*/ a: kotlin.Any)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=Test2 operator=ARGUMENTS_REORDERING_FOR_CALL
|
BLOCK type=Test2 operator=ARGUMENTS_REORDERING_FOR_CALL
|
||||||
|
|||||||
+3
-2
@@ -8,8 +8,7 @@ FILE /classMembers.kt
|
|||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
||||||
GET_VAR z type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR z type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD property type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final val y: kotlin.Int
|
PROPERTY public final val y: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -52,6 +51,7 @@ FILE /classMembers.kt
|
|||||||
CLASS CLASS NestedClass
|
CLASS CLASS NestedClass
|
||||||
CONSTRUCTOR public constructor NestedClass()
|
CONSTRUCTOR public constructor NestedClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=NestedClass
|
||||||
FUN public final fun function(): kotlin.Unit
|
FUN public final fun function(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
@@ -70,3 +70,4 @@ FILE /classMembers.kt
|
|||||||
CLASS OBJECT Companion
|
CLASS OBJECT Companion
|
||||||
CONSTRUCTOR private constructor Companion()
|
CONSTRUCTOR private constructor Companion()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Companion
|
||||||
|
|||||||
@@ -2,17 +2,21 @@ FILE /classes.kt
|
|||||||
CLASS CLASS TestClass
|
CLASS CLASS TestClass
|
||||||
CONSTRUCTOR public constructor TestClass()
|
CONSTRUCTOR public constructor TestClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestClass
|
||||||
CLASS INTERFACE TestInterface
|
CLASS INTERFACE TestInterface
|
||||||
CLASS OBJECT TestObject
|
CLASS OBJECT TestObject
|
||||||
CONSTRUCTOR private constructor TestObject()
|
CONSTRUCTOR private constructor TestObject()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestObject
|
||||||
CLASS ANNOTATION_CLASS TestAnnotationClass
|
CLASS ANNOTATION_CLASS TestAnnotationClass
|
||||||
CONSTRUCTOR public constructor TestAnnotationClass()
|
CONSTRUCTOR public constructor TestAnnotationClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestAnnotationClass
|
||||||
CLASS ENUM_CLASS TestEnumClass
|
CLASS ENUM_CLASS TestEnumClass
|
||||||
CONSTRUCTOR private constructor TestEnumClass()
|
CONSTRUCTOR private constructor TestEnumClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestEnumClass
|
||||||
FUN public final /*synthesized*/ fun values(): kotlin.Array<TestEnumClass>
|
FUN public final /*synthesized*/ fun values(): kotlin.Array<TestEnumClass>
|
||||||
SYNTHETIC_BODY kind=ENUM_VALUES
|
SYNTHETIC_BODY kind=ENUM_VALUES
|
||||||
FUN public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): TestEnumClass
|
FUN public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): TestEnumClass
|
||||||
|
|||||||
@@ -2,12 +2,16 @@ FILE /companionObject.kt
|
|||||||
CLASS CLASS Test1
|
CLASS CLASS Test1
|
||||||
CONSTRUCTOR public constructor Test1()
|
CONSTRUCTOR public constructor Test1()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test1
|
||||||
CLASS OBJECT Companion
|
CLASS OBJECT Companion
|
||||||
CONSTRUCTOR private constructor Companion()
|
CONSTRUCTOR private constructor Companion()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Companion
|
||||||
CLASS CLASS Test2
|
CLASS CLASS Test2
|
||||||
CONSTRUCTOR public constructor Test2()
|
CONSTRUCTOR public constructor Test2()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test2
|
||||||
CLASS OBJECT Named
|
CLASS OBJECT Named
|
||||||
CONSTRUCTOR private constructor Named()
|
CONSTRUCTOR private constructor Named()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Named
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ FILE /dataClasses.kt
|
|||||||
GET_VAR y type=kotlin.String operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.String operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
||||||
GET_VAR z type=kotlin.Any operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR z type=kotlin.Any operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test1
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
+3
-3
@@ -2,16 +2,16 @@ FILE /delegatingConstructorCallsInSecondaryConstructors.kt
|
|||||||
CLASS CLASS Base
|
CLASS CLASS Base
|
||||||
CONSTRUCTOR public constructor Base()
|
CONSTRUCTOR public constructor Base()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Base
|
||||||
CLASS CLASS Test
|
CLASS CLASS Test
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
CONSTRUCTOR public constructor Test()
|
CONSTRUCTOR public constructor Test()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Base
|
DELEGATING_CONSTRUCTOR_CALL Base
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=Test
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test
|
||||||
CONSTRUCTOR public constructor Test(/*0*/ xx: kotlin.Int)
|
CONSTRUCTOR public constructor Test(/*0*/ xx: kotlin.Int)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Base
|
DELEGATING_CONSTRUCTOR_CALL Base
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=Test
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test
|
||||||
CONSTRUCTOR public constructor Test(/*0*/ xx: kotlin.Short)
|
CONSTRUCTOR public constructor Test(/*0*/ xx: kotlin.Short)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Test
|
DELEGATING_CONSTRUCTOR_CALL Test
|
||||||
|
|||||||
+12
-4
@@ -3,6 +3,7 @@ FILE /enum.kt
|
|||||||
CONSTRUCTOR private constructor TestEnum1()
|
CONSTRUCTOR private constructor TestEnum1()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestEnum1
|
||||||
ENUM_ENTRY enum entry TEST1
|
ENUM_ENTRY enum entry TEST1
|
||||||
init: ENUM_CONSTRUCTOR_CALL TestEnum1 TEST1
|
init: ENUM_CONSTRUCTOR_CALL TestEnum1 TEST1
|
||||||
ENUM_ENTRY enum entry TEST2
|
ENUM_ENTRY enum entry TEST2
|
||||||
@@ -17,6 +18,7 @@ FILE /enum.kt
|
|||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestEnum2
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -37,12 +39,14 @@ FILE /enum.kt
|
|||||||
CONSTRUCTOR private constructor TestEnum3()
|
CONSTRUCTOR private constructor TestEnum3()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestEnum3
|
||||||
ENUM_ENTRY enum entry TEST
|
ENUM_ENTRY enum entry TEST
|
||||||
init: ENUM_CONSTRUCTOR_CALL TEST TEST
|
init: ENUM_CONSTRUCTOR_CALL TEST TEST
|
||||||
class: CLASS ENUM_ENTRY TEST
|
class: CLASS ENUM_ENTRY TEST
|
||||||
CONSTRUCTOR private constructor TEST()
|
CONSTRUCTOR private constructor TEST()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL TestEnum3 super
|
ENUM_CONSTRUCTOR_CALL TestEnum3 super
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TEST
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
@@ -58,6 +62,7 @@ FILE /enum.kt
|
|||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestEnum4
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -68,6 +73,7 @@ FILE /enum.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL TestEnum4 super
|
ENUM_CONSTRUCTOR_CALL TestEnum4 super
|
||||||
x: CONST Int type=kotlin.Int value='1'
|
x: CONST Int type=kotlin.Int value='1'
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TEST1
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
@@ -79,11 +85,13 @@ FILE /enum.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL TestEnum4 super
|
ENUM_CONSTRUCTOR_CALL TestEnum4 super
|
||||||
x: CONST Int type=kotlin.Int value='2'
|
x: CONST Int type=kotlin.Int value='2'
|
||||||
BLOCK type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TEST2
|
||||||
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
|
||||||
CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
|
|
||||||
$this: THIS enum entry TEST2 type=TestEnum4.TEST2
|
|
||||||
PROPERTY public final val z: kotlin.Int
|
PROPERTY public final val z: kotlin.Int
|
||||||
|
ANONYMOUS_INITIALIZER TEST2
|
||||||
|
BLOCK_BODY
|
||||||
|
SET_BACKING_FIELD z type=kotlin.Unit operator=null
|
||||||
|
CALL .<get-x> type=kotlin.Int operator=GET_PROPERTY
|
||||||
|
$this: THIS enum entry TEST2 type=TestEnum4.TEST2
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
class Test1 {
|
||||||
|
init {
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Test2(val x: Int) {
|
||||||
|
init {
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Test3 {
|
||||||
|
init {
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor()
|
||||||
|
}
|
||||||
|
|
||||||
|
class Test4 {
|
||||||
|
init {
|
||||||
|
println("1")
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor()
|
||||||
|
|
||||||
|
init {
|
||||||
|
println("2")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
FILE /initBlock.kt
|
||||||
|
CLASS CLASS Test1
|
||||||
|
CONSTRUCTOR public constructor Test1()
|
||||||
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test1
|
||||||
|
ANONYMOUS_INITIALIZER Test1
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
CLASS CLASS Test2
|
||||||
|
CONSTRUCTOR public constructor Test2(/*0*/ x: kotlin.Int)
|
||||||
|
BLOCK_BODY
|
||||||
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test2
|
||||||
|
PROPERTY public final val x: kotlin.Int
|
||||||
|
EXPRESSION_BODY
|
||||||
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
ANONYMOUS_INITIALIZER Test2
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
CLASS CLASS Test3
|
||||||
|
ANONYMOUS_INITIALIZER Test3
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
CONSTRUCTOR public constructor Test3()
|
||||||
|
BLOCK_BODY
|
||||||
|
DELEGATING_CONSTRUCTOR_CALL Any
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test3
|
||||||
|
CLASS CLASS Test4
|
||||||
|
ANONYMOUS_INITIALIZER Test4
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
message: CONST String type=kotlin.String value='1'
|
||||||
|
CONSTRUCTOR public constructor Test4()
|
||||||
|
BLOCK_BODY
|
||||||
|
DELEGATING_CONSTRUCTOR_CALL Any
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test4
|
||||||
|
ANONYMOUS_INITIALIZER Test4
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
message: CONST String type=kotlin.String value='2'
|
||||||
+7
-5
@@ -4,21 +4,23 @@ FILE /initVal.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitValFromParameter
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
CLASS CLASS TestInitValInClass
|
CLASS CLASS TestInitValInClass
|
||||||
CONSTRUCTOR public constructor TestInitValInClass()
|
CONSTRUCTOR public constructor TestInitValInClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitValInClass
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final val x: kotlin.Int = 0
|
PROPERTY public final val x: kotlin.Int = 0
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
CLASS CLASS TestInitValInInitBlock
|
CLASS CLASS TestInitValInInitBlock
|
||||||
CONSTRUCTOR public constructor TestInitValInInitBlock()
|
CONSTRUCTOR public constructor TestInitValInInitBlock()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitValInInitBlock
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
|
ANONYMOUS_INITIALIZER TestInitValInInitBlock
|
||||||
|
BLOCK_BODY
|
||||||
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
|
CONST Int type=kotlin.Int value='0'
|
||||||
|
|||||||
+16
-16
@@ -4,30 +4,31 @@ FILE /initVar.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarFromParameter
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
CLASS CLASS TestInitVarInClass
|
CLASS CLASS TestInitVarInClass
|
||||||
CONSTRUCTOR public constructor TestInitVarInClass()
|
CONSTRUCTOR public constructor TestInitVarInClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarInClass
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
CLASS CLASS TestInitVarInInitBlock
|
CLASS CLASS TestInitVarInInitBlock
|
||||||
CONSTRUCTOR public constructor TestInitVarInInitBlock()
|
CONSTRUCTOR public constructor TestInitVarInInitBlock()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarInInitBlock
|
||||||
CALL .<set-x> type=kotlin.Unit operator=EQ
|
|
||||||
$this: THIS public final class TestInitVarInInitBlock type=TestInitVarInInitBlock
|
|
||||||
<set-?>: CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
|
ANONYMOUS_INITIALIZER TestInitVarInInitBlock
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .<set-x> type=kotlin.Unit operator=EQ
|
||||||
|
$this: THIS public final class TestInitVarInInitBlock type=TestInitVarInInitBlock
|
||||||
|
<set-?>: CONST Int type=kotlin.Int value='0'
|
||||||
CLASS CLASS TestInitVarWithCustomSetter
|
CLASS CLASS TestInitVarWithCustomSetter
|
||||||
CONSTRUCTOR public constructor TestInitVarWithCustomSetter()
|
CONSTRUCTOR public constructor TestInitVarWithCustomSetter()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarWithCustomSetter
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
@@ -36,22 +37,21 @@ FILE /initVar.kt
|
|||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=EQ
|
SET_BACKING_FIELD x type=kotlin.Unit operator=EQ
|
||||||
GET_VAR value type=kotlin.Int operator=null
|
GET_VAR value type=kotlin.Int operator=null
|
||||||
CLASS CLASS TestInitVarWithCustomSetterWithExplicitCtor
|
CLASS CLASS TestInitVarWithCustomSetterWithExplicitCtor
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
BLOCK type=kotlin.Unit operator=null
|
|
||||||
CALL .<set-x> type=kotlin.Unit operator=EQ
|
|
||||||
$this: THIS public final class TestInitVarWithCustomSetterWithExplicitCtor type=TestInitVarWithCustomSetterWithExplicitCtor
|
|
||||||
value: CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
PROPERTY_SETTER public final fun <set-x>(/*0*/ value: kotlin.Int): kotlin.Unit
|
PROPERTY_SETTER public final fun <set-x>(/*0*/ value: kotlin.Int): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=EQ
|
SET_BACKING_FIELD x type=kotlin.Unit operator=EQ
|
||||||
GET_VAR value type=kotlin.Int operator=null
|
GET_VAR value type=kotlin.Int operator=null
|
||||||
|
ANONYMOUS_INITIALIZER TestInitVarWithCustomSetterWithExplicitCtor
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .<set-x> type=kotlin.Unit operator=EQ
|
||||||
|
$this: THIS public final class TestInitVarWithCustomSetterWithExplicitCtor type=TestInitVarWithCustomSetterWithExplicitCtor
|
||||||
|
value: CONST Int type=kotlin.Int value='0'
|
||||||
CONSTRUCTOR public constructor TestInitVarWithCustomSetterWithExplicitCtor()
|
CONSTRUCTOR public constructor TestInitVarWithCustomSetterWithExplicitCtor()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Any
|
DELEGATING_CONSTRUCTOR_CALL Any
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=TestInitVarWithCustomSetterWithExplicitCtor
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarWithCustomSetterWithExplicitCtor
|
||||||
CLASS CLASS TestInitVarWithCustomSetterInCtor
|
CLASS CLASS TestInitVarWithCustomSetterInCtor
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
PROPERTY_SETTER public final fun <set-x>(/*0*/ value: kotlin.Int): kotlin.Unit
|
PROPERTY_SETTER public final fun <set-x>(/*0*/ value: kotlin.Int): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
@@ -60,7 +60,7 @@ FILE /initVar.kt
|
|||||||
CONSTRUCTOR public constructor TestInitVarWithCustomSetterInCtor()
|
CONSTRUCTOR public constructor TestInitVarWithCustomSetterInCtor()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Any
|
DELEGATING_CONSTRUCTOR_CALL Any
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=TestInitVarWithCustomSetterInCtor
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitVarWithCustomSetterInCtor
|
||||||
CALL .<set-x> type=kotlin.Unit operator=EQ
|
CALL .<set-x> type=kotlin.Unit operator=EQ
|
||||||
$this: THIS public final class TestInitVarWithCustomSetterInCtor type=TestInitVarWithCustomSetterInCtor
|
$this: THIS public final class TestInitVarWithCustomSetterInCtor type=TestInitVarWithCustomSetterInCtor
|
||||||
value: CONST Int type=kotlin.Int value='42'
|
value: CONST Int type=kotlin.Int value='42'
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ FILE /localClasses.kt
|
|||||||
CLASS CLASS LocalClass
|
CLASS CLASS LocalClass
|
||||||
CONSTRUCTOR public constructor LocalClass()
|
CONSTRUCTOR public constructor LocalClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=LocalClass
|
||||||
FUN public final fun foo(): kotlin.Unit
|
FUN public final fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .foo type=kotlin.Unit operator=null
|
CALL .foo type=kotlin.Unit operator=null
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ FILE /objectLiteralExpressions.kt
|
|||||||
CLASS CLASS <no name provided>
|
CLASS CLASS <no name provided>
|
||||||
CONSTRUCTOR public constructor <no name provided>()
|
CONSTRUCTOR public constructor <no name provided>()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=<no name provided>
|
||||||
CALL .<init> type=test1.<no name provided> operator=OBJECT_LITERAL
|
CALL .<init> type=test1.<no name provided> operator=OBJECT_LITERAL
|
||||||
PROPERTY public val test2: IFoo
|
PROPERTY public val test2: IFoo
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
@@ -14,6 +15,7 @@ FILE /objectLiteralExpressions.kt
|
|||||||
CLASS CLASS <no name provided>
|
CLASS CLASS <no name provided>
|
||||||
CONSTRUCTOR public constructor <no name provided>()
|
CONSTRUCTOR public constructor <no name provided>()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=<no name provided>
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
@@ -22,9 +24,11 @@ FILE /objectLiteralExpressions.kt
|
|||||||
CLASS CLASS Outer
|
CLASS CLASS Outer
|
||||||
CONSTRUCTOR public constructor Outer()
|
CONSTRUCTOR public constructor Outer()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Outer
|
||||||
CLASS CLASS Inner
|
CLASS CLASS Inner
|
||||||
CONSTRUCTOR public constructor Inner()
|
CONSTRUCTOR public constructor Inner()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Inner
|
||||||
FUN public final fun test3(): Outer.Inner
|
FUN public final fun test3(): Outer.Inner
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from=test3
|
RETURN type=kotlin.Nothing from=test3
|
||||||
@@ -34,6 +38,7 @@ FILE /objectLiteralExpressions.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .<init> type=Outer.Inner operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Outer.Inner operator=SUPER_CONSTRUCTOR_CALL
|
||||||
$this: THIS public final class Outer type=Outer
|
$this: THIS public final class Outer type=Outer
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=<no name provided>
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
@@ -48,6 +53,7 @@ FILE /objectLiteralExpressions.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .<init> type=Outer.Inner operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Outer.Inner operator=SUPER_CONSTRUCTOR_CALL
|
||||||
$this: $RECEIVER of: test4 type=Outer
|
$this: $RECEIVER of: test4 type=Outer
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=<no name provided>
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .println type=kotlin.Unit operator=null
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ FILE /primaryConstructor.kt
|
|||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test1
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -17,8 +18,7 @@ FILE /primaryConstructor.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test2
|
||||||
GET_VAR x type=kotlin.Int operator=null
|
|
||||||
PROPERTY public final val y: kotlin.Int
|
PROPERTY public final val y: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
@@ -30,10 +30,12 @@ FILE /primaryConstructor.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
BLOCK type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=Test3
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
|
||||||
GET_VAR x type=kotlin.Int operator=null
|
|
||||||
PROPERTY public final val y: kotlin.Int
|
PROPERTY public final val y: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
|
ANONYMOUS_INITIALIZER Test3
|
||||||
|
BLOCK_BODY
|
||||||
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
|
GET_VAR x type=kotlin.Int operator=null
|
||||||
|
|||||||
+4
@@ -2,14 +2,17 @@ FILE /primaryConstructorWithSuperConstructorCall.kt
|
|||||||
CLASS CLASS Base
|
CLASS CLASS Base
|
||||||
CONSTRUCTOR public constructor Base()
|
CONSTRUCTOR public constructor Base()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Base
|
||||||
CLASS CLASS TestImplicitPrimaryConstructor
|
CLASS CLASS TestImplicitPrimaryConstructor
|
||||||
CONSTRUCTOR public constructor TestImplicitPrimaryConstructor()
|
CONSTRUCTOR public constructor TestImplicitPrimaryConstructor()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestImplicitPrimaryConstructor
|
||||||
CLASS CLASS TestExplicitPrimaryConstructor
|
CLASS CLASS TestExplicitPrimaryConstructor
|
||||||
CONSTRUCTOR public constructor TestExplicitPrimaryConstructor()
|
CONSTRUCTOR public constructor TestExplicitPrimaryConstructor()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestExplicitPrimaryConstructor
|
||||||
CLASS CLASS TestWithDelegatingConstructor
|
CLASS CLASS TestWithDelegatingConstructor
|
||||||
CONSTRUCTOR public constructor TestWithDelegatingConstructor(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
|
CONSTRUCTOR public constructor TestWithDelegatingConstructor(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
@@ -18,6 +21,7 @@ FILE /primaryConstructorWithSuperConstructorCall.kt
|
|||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
SET_BACKING_FIELD y type=kotlin.Unit operator=null
|
||||||
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR y type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestWithDelegatingConstructor
|
||||||
PROPERTY public final val x: kotlin.Int
|
PROPERTY public final val x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ FILE /qualifiedSuperCalls.kt
|
|||||||
CLASS CLASS CBoth
|
CLASS CLASS CBoth
|
||||||
CONSTRUCTOR public constructor CBoth()
|
CONSTRUCTOR public constructor CBoth()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=CBoth
|
||||||
FUN public open override /*2*/ fun foo(): kotlin.Unit
|
FUN public open override /*2*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .foo superQualifier=ILeft type=kotlin.Unit operator=null
|
CALL .foo superQualifier=ILeft type=kotlin.Unit operator=null
|
||||||
|
|||||||
+6
-8
@@ -2,24 +2,22 @@ FILE /secondaryConstructorWithInitializersFromClassBody.kt
|
|||||||
CLASS CLASS Base
|
CLASS CLASS Base
|
||||||
CONSTRUCTOR public constructor Base()
|
CONSTRUCTOR public constructor Base()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Base
|
||||||
CLASS CLASS TestProperty
|
CLASS CLASS TestProperty
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
|
||||||
CONST Int type=kotlin.Int value='0'
|
|
||||||
PROPERTY public final val x: kotlin.Int = 0
|
PROPERTY public final val x: kotlin.Int = 0
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
CONSTRUCTOR public constructor TestProperty()
|
CONSTRUCTOR public constructor TestProperty()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Base
|
DELEGATING_CONSTRUCTOR_CALL Base
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=TestProperty
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestProperty
|
||||||
CLASS CLASS TestInitBlock
|
CLASS CLASS TestInitBlock
|
||||||
nestedInitializers: BLOCK_BODY
|
PROPERTY public final val x: kotlin.Int
|
||||||
BLOCK type=kotlin.Unit operator=null
|
ANONYMOUS_INITIALIZER TestInitBlock
|
||||||
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
PROPERTY public final val x: kotlin.Int
|
|
||||||
CONSTRUCTOR public constructor TestInitBlock()
|
CONSTRUCTOR public constructor TestInitBlock()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Base
|
DELEGATING_CONSTRUCTOR_CALL Base
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=TestInitBlock
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestInitBlock
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
FILE /secondaryConstructors.kt
|
FILE /secondaryConstructors.kt
|
||||||
CLASS CLASS C
|
CLASS CLASS C
|
||||||
nestedInitializers: BLOCK_BODY
|
|
||||||
CONSTRUCTOR public constructor C()
|
CONSTRUCTOR public constructor C()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL C
|
DELEGATING_CONSTRUCTOR_CALL C
|
||||||
@@ -8,4 +7,4 @@ FILE /secondaryConstructors.kt
|
|||||||
CONSTRUCTOR public constructor C(/*0*/ x: kotlin.Int)
|
CONSTRUCTOR public constructor C(/*0*/ x: kotlin.Int)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
DELEGATING_CONSTRUCTOR_CALL Any
|
DELEGATING_CONSTRUCTOR_CALL Any
|
||||||
NESTED_INITIALIZERS_CALL classDescriptor=C
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,7 @@ FILE /superCalls.kt
|
|||||||
CLASS CLASS Base
|
CLASS CLASS Base
|
||||||
CONSTRUCTOR public constructor Base()
|
CONSTRUCTOR public constructor Base()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD bar type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=Base
|
||||||
CONST String type=kotlin.String value=''
|
|
||||||
FUN public open fun foo(): kotlin.Unit
|
FUN public open fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
PROPERTY public open val bar: kotlin.String = ""
|
PROPERTY public open val bar: kotlin.String = ""
|
||||||
@@ -13,6 +12,7 @@ FILE /superCalls.kt
|
|||||||
CONSTRUCTOR public constructor Derived()
|
CONSTRUCTOR public constructor Derived()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
CALL .<init> type=Base operator=SUPER_CONSTRUCTOR_CALL
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Derived
|
||||||
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
FUN public open override /*1*/ fun foo(): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL .foo superQualifier=Base type=kotlin.Unit operator=null
|
CALL .foo superQualifier=Base type=kotlin.Unit operator=null
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ FILE /delegatedProperties.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD map type=kotlin.Unit operator=null
|
SET_BACKING_FIELD map type=kotlin.Unit operator=null
|
||||||
GET_VAR map type=kotlin.collections.MutableMap<kotlin.String, kotlin.Any> operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR map type=kotlin.collections.MutableMap<kotlin.String, kotlin.Any> operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
PROPERTY public final val map: kotlin.collections.MutableMap<kotlin.String, kotlin.Any>
|
PROPERTY public final val map: kotlin.collections.MutableMap<kotlin.String, kotlin.Any>
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR map type=kotlin.collections.MutableMap<kotlin.String, kotlin.Any> operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR map type=kotlin.collections.MutableMap<kotlin.String, kotlin.Any> operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ FILE /arrayAugmentedAssignment1.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.IntArray operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.IntArray operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
PROPERTY public final val x: kotlin.IntArray
|
PROPERTY public final val x: kotlin.IntArray
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.IntArray operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.IntArray operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ FILE /assignments.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
SET_BACKING_FIELD x type=kotlin.Unit operator=null
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Ref
|
||||||
PROPERTY public final var x: kotlin.Int
|
PROPERTY public final var x: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR x type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ FILE /augmentedAssignment2.kt
|
|||||||
CLASS CLASS A
|
CLASS CLASS A
|
||||||
CONSTRUCTOR public constructor A()
|
CONSTRUCTOR public constructor A()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=A
|
||||||
FUN public operator fun A.plusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
FUN public operator fun A.plusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
FUN public operator fun A.minusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
FUN public operator fun A.minusAssign(/*0*/ s: kotlin.String): kotlin.Unit
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ FILE /chainOfSafeCalls.kt
|
|||||||
CLASS CLASS C
|
CLASS CLASS C
|
||||||
CONSTRUCTOR public constructor C()
|
CONSTRUCTOR public constructor C()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
FUN public final fun foo(): C
|
FUN public final fun foo(): C
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from=foo
|
RETURN type=kotlin.Nothing from=foo
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ FILE /forWithImplicitReceivers.kt
|
|||||||
CLASS OBJECT FiveTimes
|
CLASS OBJECT FiveTimes
|
||||||
CONSTRUCTOR private constructor FiveTimes()
|
CONSTRUCTOR private constructor FiveTimes()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=FiveTimes
|
||||||
CLASS CLASS IntCell
|
CLASS CLASS IntCell
|
||||||
CONSTRUCTOR public constructor IntCell(/*0*/ value: kotlin.Int)
|
CONSTRUCTOR public constructor IntCell(/*0*/ value: kotlin.Int)
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD value type=kotlin.Unit operator=null
|
SET_BACKING_FIELD value type=kotlin.Unit operator=null
|
||||||
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=IntCell
|
||||||
PROPERTY public final var value: kotlin.Int
|
PROPERTY public final var value: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -23,19 +23,7 @@ FILE /jvmStaticFieldReference.kt
|
|||||||
CLASS CLASS TestClass
|
CLASS CLASS TestClass
|
||||||
CONSTRUCTOR public constructor TestClass()
|
CONSTRUCTOR public constructor TestClass()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD test type=kotlin.Unit operator=null
|
INSTANCE_INITIALIZER_CALL classDescriptor=TestClass
|
||||||
WHEN type=kotlin.Int operator=WHEN
|
|
||||||
else: BLOCK type=kotlin.Int operator=null
|
|
||||||
CALL .println type=kotlin.Unit operator=null
|
|
||||||
$this: TYPE_OP operator=IMPLICIT_NOTNULL typeOperand=java.io.PrintStream
|
|
||||||
CALL .<get-out> type=java.io.PrintStream! operator=GET_PROPERTY
|
|
||||||
p0: CONST String type=kotlin.String value='TestClass/test'
|
|
||||||
CONST Int type=kotlin.Int value='42'
|
|
||||||
BLOCK type=kotlin.Unit operator=null
|
|
||||||
CALL .println type=kotlin.Unit operator=null
|
|
||||||
$this: TYPE_OP operator=IMPLICIT_NOTNULL typeOperand=java.io.PrintStream
|
|
||||||
CALL .<get-out> type=java.io.PrintStream! operator=GET_PROPERTY
|
|
||||||
p0: CONST String type=kotlin.String value='TestClass/init'
|
|
||||||
PROPERTY public final val test: kotlin.Int
|
PROPERTY public final val test: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
WHEN type=kotlin.Int operator=WHEN
|
WHEN type=kotlin.Int operator=WHEN
|
||||||
@@ -45,3 +33,9 @@ FILE /jvmStaticFieldReference.kt
|
|||||||
CALL .<get-out> type=java.io.PrintStream! operator=GET_PROPERTY
|
CALL .<get-out> type=java.io.PrintStream! operator=GET_PROPERTY
|
||||||
p0: CONST String type=kotlin.String value='TestClass/test'
|
p0: CONST String type=kotlin.String value='TestClass/test'
|
||||||
CONST Int type=kotlin.Int value='42'
|
CONST Int type=kotlin.Int value='42'
|
||||||
|
ANONYMOUS_INITIALIZER TestClass
|
||||||
|
BLOCK_BODY
|
||||||
|
CALL .println type=kotlin.Unit operator=null
|
||||||
|
$this: TYPE_OP operator=IMPLICIT_NOTNULL typeOperand=java.io.PrintStream
|
||||||
|
CALL .<get-out> type=java.io.PrintStream! operator=GET_PROPERTY
|
||||||
|
p0: CONST String type=kotlin.String value='TestClass/init'
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ FILE /safeCallWithIncrementDecrement.kt
|
|||||||
CLASS CLASS C
|
CLASS CLASS C
|
||||||
CONSTRUCTOR public constructor C()
|
CONSTRUCTOR public constructor C()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=C
|
||||||
PROPERTY public var test.C?.p: kotlin.Int
|
PROPERTY public var test.C?.p: kotlin.Int
|
||||||
PROPERTY_GETTER public fun test.C?.<get-p>(): kotlin.Int
|
PROPERTY_GETTER public fun test.C?.<get-p>(): kotlin.Int
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ FILE /safeCalls.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_BACKING_FIELD value type=kotlin.Unit operator=null
|
SET_BACKING_FIELD value type=kotlin.Unit operator=null
|
||||||
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Ref
|
||||||
PROPERTY public final var value: kotlin.Int
|
PROPERTY public final var value: kotlin.Int
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
GET_VAR value type=kotlin.Int operator=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ FILE /values.kt
|
|||||||
CONSTRUCTOR private constructor Enum()
|
CONSTRUCTOR private constructor Enum()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL Enum super
|
ENUM_CONSTRUCTOR_CALL Enum super
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Enum
|
||||||
ENUM_ENTRY enum entry A
|
ENUM_ENTRY enum entry A
|
||||||
init: ENUM_CONSTRUCTOR_CALL Enum A
|
init: ENUM_CONSTRUCTOR_CALL Enum A
|
||||||
FUN public final /*synthesized*/ fun values(): kotlin.Array<Enum>
|
FUN public final /*synthesized*/ fun values(): kotlin.Array<Enum>
|
||||||
@@ -12,15 +13,18 @@ FILE /values.kt
|
|||||||
CLASS OBJECT A
|
CLASS OBJECT A
|
||||||
CONSTRUCTOR private constructor A()
|
CONSTRUCTOR private constructor A()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=A
|
||||||
PROPERTY public val a: kotlin.Int = 0
|
PROPERTY public val a: kotlin.Int = 0
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CONST Int type=kotlin.Int value='0'
|
CONST Int type=kotlin.Int value='0'
|
||||||
CLASS CLASS Z
|
CLASS CLASS Z
|
||||||
CONSTRUCTOR public constructor Z()
|
CONSTRUCTOR public constructor Z()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Z
|
||||||
CLASS OBJECT Companion
|
CLASS OBJECT Companion
|
||||||
CONSTRUCTOR private constructor Companion()
|
CONSTRUCTOR private constructor Companion()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=Companion
|
||||||
FUN public fun test1(): Enum
|
FUN public fun test1(): Enum
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from=test1
|
RETURN type=kotlin.Nothing from=test1
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ FILE /when.kt
|
|||||||
CLASS OBJECT A
|
CLASS OBJECT A
|
||||||
CONSTRUCTOR private constructor A()
|
CONSTRUCTOR private constructor A()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=A
|
||||||
FUN public fun testWithSubject(/*0*/ x: kotlin.Any?): kotlin.String
|
FUN public fun testWithSubject(/*0*/ x: kotlin.Any?): kotlin.String
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from=testWithSubject
|
RETURN type=kotlin.Nothing from=testWithSubject
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ FILE /multipleImplicitReceivers.kt
|
|||||||
CLASS OBJECT A
|
CLASS OBJECT A
|
||||||
CONSTRUCTOR private constructor A()
|
CONSTRUCTOR private constructor A()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=A
|
||||||
CLASS OBJECT B
|
CLASS OBJECT B
|
||||||
CONSTRUCTOR private constructor B()
|
CONSTRUCTOR private constructor B()
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
|
INSTANCE_INITIALIZER_CALL classDescriptor=B
|
||||||
CLASS INTERFACE IFoo
|
CLASS INTERFACE IFoo
|
||||||
PROPERTY public open val A.foo: B
|
PROPERTY public open val A.foo: B
|
||||||
PROPERTY_GETTER public open fun A.<get-foo>(): B
|
PROPERTY_GETTER public open fun A.<get-foo>(): B
|
||||||
|
|||||||
@@ -85,6 +85,12 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("initBlock.kt")
|
||||||
|
public void testInitBlock() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/classes/initBlock.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("initVal.kt")
|
@TestMetadata("initVal.kt")
|
||||||
public void testInitVal() throws Exception {
|
public void testInitVal() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/classes/initVal.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/classes/initVal.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user