IR: drop IrTypeAlias

This commit is contained in:
Dmitry Petrov
2019-03-14 15:27:55 +03:00
parent e49eae528c
commit b42aa39033
24 changed files with 98 additions and 236 deletions
@@ -18,161 +18,158 @@ import org.jetbrains.kotlin.utils.Printer
class RenderIrElementWithDescriptorsVisitor : IrElementVisitor<String, Nothing?> { class RenderIrElementWithDescriptorsVisitor : IrElementVisitor<String, Nothing?> {
override fun visitElement(element: IrElement, data: Nothing?): String = override fun visitElement(element: IrElement, data: Nothing?): String =
"? ${element.javaClass.simpleName}" "? ${element.javaClass.simpleName}"
override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): String = override fun visitDeclaration(declaration: IrDeclaration, data: Nothing?): String =
"? ${declaration.javaClass.simpleName} ${declaration.descriptor.ref()}" "? ${declaration.javaClass.simpleName} ${declaration.descriptor.ref()}"
override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String = override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?): String =
"MODULE_FRAGMENT ${declaration.descriptor}" "MODULE_FRAGMENT ${declaration.descriptor}"
override fun visitFile(declaration: IrFile, data: Nothing?): String = override fun visitFile(declaration: IrFile, data: Nothing?): String =
"FILE ${declaration.path}" "FILE ${declaration.path}"
override fun visitFunction(declaration: IrFunction, data: Nothing?): String = override fun visitFunction(declaration: IrFunction, data: Nothing?): String =
"FUN ${declaration.descriptor}" "FUN ${declaration.descriptor}"
override fun visitConstructor(declaration: IrConstructor, data: Nothing?): String = override fun visitConstructor(declaration: IrConstructor, data: Nothing?): String =
"CONSTRUCTOR ${declaration.descriptor}" "CONSTRUCTOR ${declaration.descriptor}"
override fun visitProperty(declaration: IrProperty, data: Nothing?): String = override fun visitProperty(declaration: IrProperty, data: Nothing?): String =
"PROPERTY ${declaration.descriptor}" "PROPERTY ${declaration.descriptor}"
override fun visitField(declaration: IrField, data: Nothing?): String = override fun visitField(declaration: IrField, data: Nothing?): String =
"FIELD ${declaration.descriptor}" "FIELD ${declaration.descriptor}"
override fun visitClass(declaration: IrClass, data: Nothing?): String = override fun visitClass(declaration: IrClass, data: Nothing?): String =
"CLASS ${declaration.descriptor}" "CLASS ${declaration.descriptor}"
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
"TYPEALIAS ${declaration.descriptor} type=${declaration.descriptor.underlyingType.render()}"
override fun visitVariable(declaration: IrVariable, data: Nothing?): String = override fun visitVariable(declaration: IrVariable, data: Nothing?): String =
"VAR ${declaration.descriptor}" "VAR ${declaration.descriptor}"
override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?): String = override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?): String =
"ENUM_ENTRY ${declaration.descriptor}" "ENUM_ENTRY ${declaration.descriptor}"
override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?): String = override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?): String =
"ANONYMOUS_INITIALIZER ${declaration.descriptor}" "ANONYMOUS_INITIALIZER ${declaration.descriptor}"
override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?): String = override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?): String =
"LOCAL_DELEGATED_PROPERTY ${declaration.descriptor}" "LOCAL_DELEGATED_PROPERTY ${declaration.descriptor}"
override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?): String = override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?): String =
"EXPRESSION_BODY" "EXPRESSION_BODY"
override fun visitBlockBody(body: IrBlockBody, data: Nothing?): String = override fun visitBlockBody(body: IrBlockBody, data: Nothing?): String =
"BLOCK_BODY" "BLOCK_BODY"
override fun visitSyntheticBody(body: IrSyntheticBody, data: Nothing?): String = override fun visitSyntheticBody(body: IrSyntheticBody, data: Nothing?): String =
"SYNTHETIC_BODY kind=${body.kind}" "SYNTHETIC_BODY kind=${body.kind}"
override fun visitExpression(expression: IrExpression, data: Nothing?): String = override fun visitExpression(expression: IrExpression, data: Nothing?): String =
"? ${expression.javaClass.simpleName} type=${expression.type.render()}" "? ${expression.javaClass.simpleName} type=${expression.type.render()}"
override fun <T> visitConst(expression: IrConst<T>, data: Nothing?): String = override fun <T> visitConst(expression: IrConst<T>, data: Nothing?): String =
"CONST ${expression.kind} type=${expression.type.render()} value='${expression.value}'" "CONST ${expression.kind} type=${expression.type.render()} value='${expression.value}'"
override fun visitVararg(expression: IrVararg, data: Nothing?): String = override fun visitVararg(expression: IrVararg, data: Nothing?): String =
"VARARG type=${expression.type} varargElementType=${expression.varargElementType}" "VARARG type=${expression.type} varargElementType=${expression.varargElementType}"
override fun visitSpreadElement(spread: IrSpreadElement, data: Nothing?): String = override fun visitSpreadElement(spread: IrSpreadElement, data: Nothing?): String =
"SPREAD_ELEMENT" "SPREAD_ELEMENT"
override fun visitBlock(expression: IrBlock, data: Nothing?): String = override fun visitBlock(expression: IrBlock, data: Nothing?): String =
"BLOCK type=${expression.type.render()} origin=${expression.origin}" "BLOCK type=${expression.type.render()} origin=${expression.origin}"
override fun visitComposite(expression: IrComposite, data: Nothing?): String = override fun visitComposite(expression: IrComposite, data: Nothing?): String =
"COMPOSITE type=${expression.type.render()} origin=${expression.origin}" "COMPOSITE type=${expression.type.render()} origin=${expression.origin}"
override fun visitReturn(expression: IrReturn, data: Nothing?): String = override fun visitReturn(expression: IrReturn, data: Nothing?): String =
"RETURN type=${expression.type.render()} from='${expression.returnTarget}'" "RETURN type=${expression.type.render()} from='${expression.returnTarget}'"
override fun visitCall(expression: IrCall, data: Nothing?): String = override fun visitCall(expression: IrCall, data: Nothing?): String =
"CALL '${expression.descriptor}' ${expression.renderSuperQualifier()}" + "CALL '${expression.descriptor}' ${expression.renderSuperQualifier()}" +
"type=${expression.type.render()} origin=${expression.origin}" "type=${expression.type.render()} origin=${expression.origin}"
private fun IrCall.renderSuperQualifier(): String = private fun IrCall.renderSuperQualifier(): String =
superQualifier?.let { "superQualifier=${it.name} " } ?: "" superQualifier?.let { "superQualifier=${it.name} " } ?: ""
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?): String = override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?): String =
"DELEGATING_CONSTRUCTOR_CALL '${expression.descriptor}'" "DELEGATING_CONSTRUCTOR_CALL '${expression.descriptor}'"
override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: Nothing?): String = override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: Nothing?): String =
"ENUM_CONSTRUCTOR_CALL '${expression.descriptor}'" "ENUM_CONSTRUCTOR_CALL '${expression.descriptor}'"
override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: Nothing?): String = override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: Nothing?): String =
"INSTANCE_INITIALIZER_CALL classDescriptor='${expression.classDescriptor}'" "INSTANCE_INITIALIZER_CALL classDescriptor='${expression.classDescriptor}'"
override fun visitGetValue(expression: IrGetValue, data: Nothing?): String = override fun visitGetValue(expression: IrGetValue, data: Nothing?): String =
"GET_VAR '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}" "GET_VAR '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}"
override fun visitSetVariable(expression: IrSetVariable, data: Nothing?): String = override fun visitSetVariable(expression: IrSetVariable, data: Nothing?): String =
"SET_VAR '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}" "SET_VAR '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}"
override fun visitGetField(expression: IrGetField, data: Nothing?): String = override fun visitGetField(expression: IrGetField, data: Nothing?): String =
"GET_FIELD '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}" "GET_FIELD '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}"
override fun visitSetField(expression: IrSetField, data: Nothing?): String = override fun visitSetField(expression: IrSetField, data: Nothing?): String =
"SET_FIELD '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}" "SET_FIELD '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}"
override fun visitGetObjectValue(expression: IrGetObjectValue, data: Nothing?): String = override fun visitGetObjectValue(expression: IrGetObjectValue, data: Nothing?): String =
"GET_OBJECT '${expression.descriptor}' type=${expression.type.render()}" "GET_OBJECT '${expression.descriptor}' type=${expression.type.render()}"
override fun visitGetEnumValue(expression: IrGetEnumValue, data: Nothing?): String = override fun visitGetEnumValue(expression: IrGetEnumValue, data: Nothing?): String =
"GET_ENUM '${expression.descriptor}' type=${expression.type.render()}" "GET_ENUM '${expression.descriptor}' type=${expression.type.render()}"
override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): String = override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): String =
"STRING_CONCATENATION type=${expression.type.render()}" "STRING_CONCATENATION type=${expression.type.render()}"
override fun visitTypeOperator(expression: IrTypeOperatorCall, data: Nothing?): String = override fun visitTypeOperator(expression: IrTypeOperatorCall, data: Nothing?): String =
"TYPE_OP origin=${expression.operator} typeOperand=${expression.typeOperand.render()}" "TYPE_OP origin=${expression.operator} typeOperand=${expression.typeOperand.render()}"
override fun visitWhen(expression: IrWhen, data: Nothing?): String = override fun visitWhen(expression: IrWhen, data: Nothing?): String =
"WHEN type=${expression.type.render()} origin=${expression.origin}" "WHEN type=${expression.type.render()} origin=${expression.origin}"
override fun visitBranch(branch: IrBranch, data: Nothing?): String = override fun visitBranch(branch: IrBranch, data: Nothing?): String =
"BRANCH" "BRANCH"
override fun visitWhileLoop(loop: IrWhileLoop, data: Nothing?): String = override fun visitWhileLoop(loop: IrWhileLoop, data: Nothing?): String =
"WHILE label=${loop.label} origin=${loop.origin}" "WHILE label=${loop.label} origin=${loop.origin}"
override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: Nothing?): String = override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: Nothing?): String =
"DO_WHILE label=${loop.label} origin=${loop.origin}" "DO_WHILE label=${loop.label} origin=${loop.origin}"
override fun visitBreak(jump: IrBreak, data: Nothing?): String = override fun visitBreak(jump: IrBreak, data: Nothing?): String =
"BREAK label=${jump.label} loop.label=${jump.loop.label}" "BREAK label=${jump.label} loop.label=${jump.loop.label}"
override fun visitContinue(jump: IrContinue, data: Nothing?): String = override fun visitContinue(jump: IrContinue, data: Nothing?): String =
"CONTINUE label=${jump.label} loop.label=${jump.loop.label}" "CONTINUE label=${jump.label} loop.label=${jump.loop.label}"
override fun visitThrow(expression: IrThrow, data: Nothing?): String = override fun visitThrow(expression: IrThrow, data: Nothing?): String =
"THROW type=${expression.type.render()}" "THROW type=${expression.type.render()}"
override fun visitCallableReference(expression: IrCallableReference, data: Nothing?): String = override fun visitCallableReference(expression: IrCallableReference, data: Nothing?): String =
"CALLABLE_REFERENCE '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}" "CALLABLE_REFERENCE '${expression.descriptor}' type=${expression.type.render()} origin=${expression.origin}"
override fun visitClassReference(expression: IrClassReference, data: Nothing?): String = override fun visitClassReference(expression: IrClassReference, data: Nothing?): String =
"CLASS_REFERENCE '${expression.descriptor}' type=${expression.type.render()}" "CLASS_REFERENCE '${expression.descriptor}' type=${expression.type.render()}"
override fun visitGetClass(expression: IrGetClass, data: Nothing?): String = override fun visitGetClass(expression: IrGetClass, data: Nothing?): String =
"GET_CLASS type=${expression.type.render()}" "GET_CLASS type=${expression.type.render()}"
override fun visitTry(aTry: IrTry, data: Nothing?): String = override fun visitTry(aTry: IrTry, data: Nothing?): String =
"TRY type=${aTry.type.render()}" "TRY type=${aTry.type.render()}"
override fun visitCatch(aCatch: IrCatch, data: Nothing?): String = override fun visitCatch(aCatch: IrCatch, data: Nothing?): String =
"CATCH parameter=${aCatch.parameter.ref()}" "CATCH parameter=${aCatch.parameter.ref()}"
override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?): String = override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?): String =
"ERROR_DECL ${declaration.descriptor.javaClass.simpleName} ${declaration.descriptor.ref()}" "ERROR_DECL ${declaration.descriptor.javaClass.simpleName} ${declaration.descriptor.ref()}"
override fun visitErrorExpression(expression: IrErrorExpression, data: Nothing?): String = override fun visitErrorExpression(expression: IrErrorExpression, data: Nothing?): String =
"ERROR_EXPR '${expression.description}' type=${expression.type.render()}" "ERROR_EXPR '${expression.description}' type=${expression.type.render()}"
override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?): String = override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?): String =
"ERROR_CALL '${expression.description}' type=${expression.type.render()}" "ERROR_CALL '${expression.description}' type=${expression.type.render()}"
companion object { companion object {
val DECLARATION_RENDERER = DescriptorRenderer.withOptions { val DECLARATION_RENDERER = DescriptorRenderer.withOptions {
@@ -187,26 +184,26 @@ class RenderIrElementWithDescriptorsVisitor : IrElementVisitor<String, Nothing?>
val REFERENCE_RENDERER = DescriptorRenderer.ONLY_NAMES_WITH_SHORT_TYPES val REFERENCE_RENDERER = DescriptorRenderer.ONLY_NAMES_WITH_SHORT_TYPES
internal fun IrDeclaration.name(): String = internal fun IrDeclaration.name(): String =
descriptor.let { it.name.toString() } descriptor.let { it.name.toString() }
internal fun IrDeclaration.renderDeclared(): String = internal fun IrDeclaration.renderDeclared(): String =
DECLARATION_RENDERER.render(this.descriptor) DECLARATION_RENDERER.render(this.descriptor)
internal fun DeclarationDescriptor.ref(): String = internal fun DeclarationDescriptor.ref(): String =
if (this is ReceiverParameterDescriptor) if (this is ReceiverParameterDescriptor)
"<receiver: ${containingDeclaration.ref()}>" "<receiver: ${containingDeclaration.ref()}>"
else else
REFERENCE_RENDERER.render(this) REFERENCE_RENDERER.render(this)
internal fun KotlinType.render(): String = internal fun KotlinType.render(): String =
DECLARATION_RENDERER.renderType(this) DECLARATION_RENDERER.renderType(this)
internal fun IrDeclaration.renderOrigin(): String = internal fun IrDeclaration.renderOrigin(): String =
if (origin != IrDeclarationOrigin.DEFINED) origin.toString() + " " else "" if (origin != IrDeclarationOrigin.DEFINED) origin.toString() + " " else ""
} }
} }
class DumpIrTreeWithDescriptorsVisitor(out: Appendable): IrElementVisitor<Unit, String> { class DumpIrTreeWithDescriptorsVisitor(out: Appendable) : IrElementVisitor<Unit, String> {
val printer = Printer(out, " ") val printer = Printer(out, " ")
val elementRenderer = RenderIrElementWithDescriptorsVisitor() val elementRenderer = RenderIrElementWithDescriptorsVisitor()
@@ -367,5 +364,5 @@ class DumpIrTreeWithDescriptorsVisitor(out: Appendable): IrElementVisitor<Unit,
} }
private fun String.withLabel(label: String) = private fun String.withLabel(label: String) =
if (label.isEmpty()) this else "$label: $this" if (label.isEmpty()) this else "$label: $this"
} }
@@ -839,8 +839,6 @@ open class IrModuleSerializer(
return proto.build() return proto.build()
} }
private fun serializeIrTypeAlias(typeAlias: IrTypeAlias) = KotlinIr.IrTypeAlias.newBuilder().build()
private fun serializeIrValueParameter(parameter: IrValueParameter): KotlinIr.IrValueParameter { private fun serializeIrValueParameter(parameter: IrValueParameter): KotlinIr.IrValueParameter {
val proto = KotlinIr.IrValueParameter.newBuilder() val proto = KotlinIr.IrValueParameter.newBuilder()
.setSymbol(serializeIrSymbol(parameter.symbol)) .setSymbol(serializeIrSymbol(parameter.symbol))
@@ -1057,28 +1055,26 @@ open class IrModuleSerializer(
val declarator = KotlinIr.IrDeclarator.newBuilder() val declarator = KotlinIr.IrDeclarator.newBuilder()
when (declaration) { when (declaration) {
is IrTypeAlias is IrAnonymousInitializer ->
-> declarator.irTypeAlias = serializeIrTypeAlias(declaration) declarator.irAnonymousInit = serializeIrAnonymousInit(declaration)
is IrAnonymousInitializer is IrConstructor ->
-> declarator.irAnonymousInit = serializeIrAnonymousInit(declaration) declarator.irConstructor = serializeIrConstructor(declaration)
is IrConstructor is IrField ->
-> declarator.irConstructor = serializeIrConstructor(declaration) declarator.irField = serializeIrField(declaration)
is IrField is IrSimpleFunction ->
-> declarator.irField = serializeIrField(declaration) declarator.irFunction = serializeIrFunction(declaration)
is IrSimpleFunction is IrTypeParameter ->
-> declarator.irFunction = serializeIrFunction(declaration) declarator.irTypeParameter = serializeIrTypeParameter(declaration)
is IrTypeParameter is IrVariable ->
-> declarator.irTypeParameter = serializeIrTypeParameter(declaration) declarator.irVariable = serializeIrVariable(declaration)
is IrVariable is IrValueParameter ->
-> declarator.irVariable = serializeIrVariable(declaration) declarator.irValueParameter = serializeIrValueParameter(declaration)
is IrValueParameter is IrClass ->
-> declarator.irValueParameter = serializeIrValueParameter(declaration) declarator.irClass = serializeIrClass(declaration)
is IrClass is IrEnumEntry ->
-> declarator.irClass = serializeIrClass(declaration) declarator.irEnumEntry = serializeIrEnumEntry(declaration)
is IrEnumEntry is IrProperty ->
-> declarator.irEnumEntry = serializeIrEnumEntry(declaration) declarator.irProperty = serializeIrProperty(declaration)
is IrProperty
-> declarator.irProperty = serializeIrProperty(declaration)
else else
-> TODO("Declaration serialization not supported yet: $declaration") -> TODO("Declaration serialization not supported yet: $declaration")
} }
@@ -1114,7 +1110,7 @@ open class IrModuleSerializer(
.setAnnotations(serializeAnnotations(file.annotations)) .setAnnotations(serializeAnnotations(file.annotations))
file.declarations.forEach { file.declarations.forEach {
if (it is IrTypeAlias || (it.descriptor.isExpectMember && !it.descriptor.isSerializableExpectClass)) { if (it.descriptor.isExpectMember && !it.descriptor.isSerializableExpectClass) {
writer.skipDeclaration() writer.skipDeclaration()
return@forEach return@forEach
} }
@@ -7,18 +7,11 @@ package org.jetbrains.kotlin.ir.backend.js.transformers.irToJs
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.backend.js.utils.TODO import org.jetbrains.kotlin.ir.backend.js.utils.TODO
import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.js.backend.ast.JsEmpty
import org.jetbrains.kotlin.js.backend.ast.JsNode import org.jetbrains.kotlin.js.backend.ast.JsNode
interface BaseIrElementToJsNodeTransformer<out R : JsNode, in D> : IrElementVisitor<R, D> { interface BaseIrElementToJsNodeTransformer<out R : JsNode, in D> : IrElementVisitor<R, D> {
override fun visitElement(element: IrElement, data: D): R { override fun visitElement(element: IrElement, data: D): R {
TODO(element) TODO(element)
} }
override fun visitTypeAlias(declaration: IrTypeAlias, data: D): R {
@Suppress("UNCHECKED_CAST")
return JsEmpty as R
}
} }
@@ -200,9 +200,6 @@ open class ClassCodegen protected constructor(
is IrAnonymousInitializer -> { is IrAnonymousInitializer -> {
// skip // skip
} }
is IrTypeAlias -> {
// skip
}
is IrClass -> { is IrClass -> {
// Nested classes are generated separately // Nested classes are generated separately
} }
@@ -563,10 +563,6 @@ class ExpressionCodegen(
return none() return none()
} }
override fun visitTypeAlias(declaration: IrTypeAlias, data: BlockInfo): StackValue {
return none()
}
override fun visitVararg(expression: IrVararg, data: BlockInfo): StackValue { override fun visitVararg(expression: IrVararg, data: BlockInfo): StackValue {
expression.markLineNumber(startOffset = true) expression.markLineNumber(startOffset = true)
val outType = expression.type val outType = expression.type
@@ -385,7 +385,7 @@ class ClassGenerator(
private fun generateMembersDeclaredInClassBody(irClass: IrClass, ktClassOrObject: KtPureClassOrObject) { private fun generateMembersDeclaredInClassBody(irClass: IrClass, ktClassOrObject: KtPureClassOrObject) {
// generate real body declarations // generate real body declarations
ktClassOrObject.body?.let { ktClassBody -> ktClassOrObject.body?.let { ktClassBody ->
ktClassBody.declarations.mapTo(irClass.declarations) { ktDeclaration -> ktClassBody.declarations.mapNotNullTo(irClass.declarations) { ktDeclaration ->
declarationGenerator.generateClassMemberDeclaration(ktDeclaration, irClass) declarationGenerator.generateClassMemberDeclaration(ktDeclaration, irClass)
} }
} }
@@ -16,11 +16,12 @@
package org.jetbrains.kotlin.psi2ir.generators package org.jetbrains.kotlin.psi2ir.generators
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrErrorDeclarationImpl import org.jetbrains.kotlin.ir.declarations.impl.IrErrorDeclarationImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrPropertyImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrTypeAliasImpl
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.util.withScope import org.jetbrains.kotlin.ir.util.withScope
@@ -28,8 +29,6 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments
import org.jetbrains.kotlin.psi2ir.endOffsetOrUndefined import org.jetbrains.kotlin.psi2ir.endOffsetOrUndefined
import org.jetbrains.kotlin.psi2ir.pureEndOffsetOrUndefined
import org.jetbrains.kotlin.psi2ir.pureStartOffsetOrUndefined
import org.jetbrains.kotlin.psi2ir.startOffsetOrUndefined import org.jetbrains.kotlin.psi2ir.startOffsetOrUndefined
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
@@ -41,7 +40,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
fun KotlinType.toIrType() = typeTranslator.translateType(this) fun KotlinType.toIrType() = typeTranslator.translateType(this)
fun generateMemberDeclaration(ktDeclaration: KtDeclaration): IrDeclaration = fun generateMemberDeclaration(ktDeclaration: KtDeclaration): IrDeclaration? =
when (ktDeclaration) { when (ktDeclaration) {
is KtNamedFunction -> is KtNamedFunction ->
FunctionGenerator(this).generateFunctionDeclaration(ktDeclaration) FunctionGenerator(this).generateFunctionDeclaration(ktDeclaration)
@@ -50,7 +49,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
is KtClassOrObject -> is KtClassOrObject ->
generateClassOrObjectDeclaration(ktDeclaration) generateClassOrObjectDeclaration(ktDeclaration)
is KtTypeAlias -> is KtTypeAlias ->
generateTypeAliasDeclaration(ktDeclaration) null
else -> else ->
IrErrorDeclarationImpl( IrErrorDeclarationImpl(
ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset, ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset,
@@ -62,7 +61,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
return generateClassOrObjectDeclaration(syntheticDeclaration) return generateClassOrObjectDeclaration(syntheticDeclaration)
} }
fun generateClassMemberDeclaration(ktDeclaration: KtDeclaration, irClass: IrClass): IrDeclaration = fun generateClassMemberDeclaration(ktDeclaration: KtDeclaration, irClass: IrClass): IrDeclaration? =
when (ktDeclaration) { when (ktDeclaration) {
is KtAnonymousInitializer -> is KtAnonymousInitializer ->
AnonymousInitializerGenerator(this).generateAnonymousInitializerDeclaration(ktDeclaration, irClass) AnonymousInitializerGenerator(this).generateAnonymousInitializerDeclaration(ktDeclaration, irClass)
@@ -80,12 +79,6 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
fun generateClassOrObjectDeclaration(ktClassOrObject: KtPureClassOrObject): IrClass = fun generateClassOrObjectDeclaration(ktClassOrObject: KtPureClassOrObject): IrClass =
ClassGenerator(this).generateClass(ktClassOrObject) ClassGenerator(this).generateClass(ktClassOrObject)
private fun generateTypeAliasDeclaration(ktDeclaration: KtTypeAlias): IrDeclaration =
IrTypeAliasImpl(
ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset, IrDeclarationOrigin.DEFINED,
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration)
)
fun generateGlobalTypeParametersDeclarations( fun generateGlobalTypeParametersDeclarations(
irTypeParametersOwner: IrTypeParametersContainer, irTypeParametersOwner: IrTypeParametersContainer,
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.util.IrDeserializer
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.lazy.descriptors.findPackageFragmentForFile import org.jetbrains.kotlin.resolve.lazy.descriptors.findPackageFragmentForFile
import org.jetbrains.kotlin.utils.addIfNotNull
class ModuleGenerator(override val context: GeneratorContext) : Generator { class ModuleGenerator(override val context: GeneratorContext) : Generator {
@@ -66,7 +67,7 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator {
} }
for (ktDeclaration in ktFile.declarations) { for (ktDeclaration in ktFile.declarations) {
irFile.declarations.add(irDeclarationGenerator.generateMemberDeclaration(ktDeclaration)) irFile.declarations.addIfNotNull(irDeclarationGenerator.generateMemberDeclaration(ktDeclaration))
} }
return irFile return irFile
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.assertCast import org.jetbrains.kotlin.ir.assertCast
import org.jetbrains.kotlin.ir.builders.Scope import org.jetbrains.kotlin.ir.builders.Scope
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.impl.IrTypeAliasImpl
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.expressions.impl.*
import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol
@@ -472,9 +471,10 @@ class StatementGenerator(
LocalClassGenerator(this).generateLocalClass(classOrObject) LocalClassGenerator(this).generateLocalClass(classOrObject)
override fun visitTypeAlias(typeAlias: KtTypeAlias, data: Nothing?): IrStatement = override fun visitTypeAlias(typeAlias: KtTypeAlias, data: Nothing?): IrStatement =
IrTypeAliasImpl( IrBlockImpl(
typeAlias.startOffsetSkippingComments, typeAlias.endOffset, IrDeclarationOrigin.DEFINED, // Compile local type aliases to empty blocks
getOrFail(BindingContext.TYPE_ALIAS, typeAlias) typeAlias.startOffsetSkippingComments, typeAlias.endOffset,
context.irBuiltIns.unitType
) )
override fun visitClassLiteralExpression(expression: KtClassLiteralExpression, data: Nothing?): IrStatement = override fun visitClassLiteralExpression(expression: KtClassLiteralExpression, data: Nothing?): IrStatement =
@@ -1,24 +0,0 @@
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
interface IrTypeAlias : IrDeclaration {
override val descriptor: TypeAliasDescriptor
}
@@ -1,45 +0,0 @@
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrTypeAliasImpl(
startOffset: Int,
endOffset: Int,
origin: IrDeclarationOrigin,
override val descriptor: TypeAliasDescriptor
) :
IrDeclarationBase(startOffset, endOffset, origin),
IrTypeAlias {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitTypeAlias(this, data)
}
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
// no children
}
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
// no children
}
}
@@ -141,15 +141,6 @@ open class DeepCopyIrTreeWithSymbols(
declaration.transformDeclarationsTo(this) declaration.transformDeclarationsTo(this)
} }
override fun visitTypeAlias(declaration: IrTypeAlias): IrTypeAlias =
IrTypeAliasImpl(
declaration.startOffset, declaration.endOffset,
mapDeclarationOrigin(declaration.origin),
declaration.descriptor
).apply {
transformAnnotations(declaration)
}
override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction = override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction =
IrFunctionImpl( IrFunctionImpl(
declaration.startOffset, declaration.endOffset, declaration.startOffset, declaration.endOffset,
@@ -226,10 +226,6 @@ class RenderIrElementVisitor(
"inline".takeIf { isInline } "inline".takeIf { isInline }
) )
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
"TYPEALIAS ${declaration.renderOriginIfNonTrivial()}${declaration.descriptor.ref()} " +
"type=${DECLARATION_RENDERER.renderType(declaration.descriptor.underlyingType)}"
override fun visitVariable(declaration: IrVariable, data: Nothing?): String = override fun visitVariable(declaration: IrVariable, data: Nothing?): String =
"VAR ${declaration.renderOriginIfNonTrivial()}" + "VAR ${declaration.renderOriginIfNonTrivial()}" +
"name:${declaration.name} type:${declaration.type.render()} flags:${declaration.renderVariableFlags()}" "name:${declaration.name} type:${declaration.type.render()} flags:${declaration.renderVariableFlags()}"
@@ -38,7 +38,6 @@ interface IrElementTransformer<in D> : IrElementVisitor<IrElement, D> {
declaration.also { it.transformChildren(this, data) } declaration.also { it.transformChildren(this, data) }
override fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data) override fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
override fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data)
override fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) override fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
override fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) override fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
override fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data) override fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data)
@@ -49,9 +49,6 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
open fun visitClass(declaration: IrClass) = visitDeclaration(declaration) open fun visitClass(declaration: IrClass) = visitDeclaration(declaration)
final override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration) final override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration)
open fun visitTypeAlias(declaration: IrTypeAlias) = visitDeclaration(declaration)
final override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?) = visitTypeAlias(declaration)
open fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration) open fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration)
final override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration) final override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration)
@@ -29,7 +29,6 @@ interface IrElementVisitor<out R, in D> {
fun visitDeclaration(declaration: IrDeclaration, data: D) = visitElement(declaration, data) fun visitDeclaration(declaration: IrDeclaration, data: D) = visitElement(declaration, data)
fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data) fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data)
fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data) fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data)
@@ -43,9 +43,6 @@ interface IrElementVisitorVoid : IrElementVisitor<Unit, Nothing?> {
fun visitClass(declaration: IrClass) = visitDeclaration(declaration) fun visitClass(declaration: IrClass) = visitDeclaration(declaration)
override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration) override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration)
fun visitTypeAlias(declaration: IrTypeAlias) = visitDeclaration(declaration)
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?) = visitTypeAlias(declaration)
fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration) fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration)
override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration) override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration)
@@ -31,8 +31,6 @@ FILE fqName:<root> fileName:/delegatingConstructorCallToTypeAliasConstructor.kt
overridden: overridden:
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias CT = Cell<T> type=Cell<T>
TYPEALIAS typealias CStr = Cell<String> type=Cell<kotlin.String>
CLASS CLASS name:C1 modality:FINAL visibility:public flags:[] superTypes:[<root>.Cell<kotlin.String>] CLASS CLASS name:C1 modality:FINAL visibility:public flags:[] superTypes:[<root>.Cell<kotlin.String>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C1 flags:[] $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C1 flags:[]
CONSTRUCTOR visibility:public <> () returnType:<root>.C1 flags:[primary] CONSTRUCTOR visibility:public <> () returnType:<root>.C1 flags:[primary]
@@ -31,7 +31,3 @@ FILE fqName:<root> fileName:/typeAliasesWithAnnotations.kt
overridden: overridden:
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias TestTypeAlias = String type=kotlin.String
annotations:
CALL 'CONSTRUCTOR visibility:public <> (x:kotlin.String) returnType:<root>.TestAnn flags:[primary]' type=<root>.TestAnn origin=null
x: CONST String type=kotlin.String value="TestTypeAlias"
+1 -11
View File
@@ -1,23 +1,13 @@
FILE fqName:<root> fileName:/typeAlias.kt FILE fqName:<root> fileName:/typeAlias.kt
TYPEALIAS typealias Test1 = String type=kotlin.String
FUN name:foo visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[] FUN name:foo visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[]
BLOCK_BODY BLOCK_BODY
TYPEALIAS typealias TestLocal = String type=kotlin.String BLOCK type=kotlin.Unit origin=null
annotations:
CALL 'CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:public <> (names:kotlin.Array<out kotlin.String>) returnType:kotlin.Suppress flags:[primary]' type=kotlin.Suppress origin=null
names: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
CONST String type=kotlin.String value="TOPLEVEL_TYPEALIASES_ONLY"
CLASS CLASS name:C modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any] CLASS CLASS name:C modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C flags:[] $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C flags:[]
CONSTRUCTOR visibility:public <> () returnType:<root>.C flags:[primary] CONSTRUCTOR visibility:public <> () returnType:<root>.C flags:[primary]
BLOCK_BODY BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:public <> () returnType:kotlin.Any flags:[primary]' DELEGATING_CONSTRUCTOR_CALL 'CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:public <> () returnType:kotlin.Any flags:[primary]'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]' INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]'
TYPEALIAS typealias TestNested = String type=kotlin.String
annotations:
CALL 'CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:public <> (names:kotlin.Array<out kotlin.String>) returnType:kotlin.Suppress flags:[primary]' type=kotlin.Suppress origin=null
names: VARARG type=kotlin.Array<out kotlin.String> varargElementType=kotlin.String
CONST String type=kotlin.String value="TOPLEVEL_TYPEALIASES_ONLY"
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:[] FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:[]
overridden: overridden:
FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:[] FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:[]
-1
View File
@@ -80,7 +80,6 @@ FILE fqName:<root> fileName:/kt16905.kt
overridden: overridden:
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias OI = Outer.Inner type=Outer.Inner
FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Outer.Inner flags:[] FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Outer.Inner flags:[]
BLOCK_BODY BLOCK_BODY
RETURN type=kotlin.Nothing from='FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Outer.Inner flags:[]' RETURN type=kotlin.Nothing from='FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Outer.Inner flags:[]'
@@ -31,7 +31,6 @@ FILE fqName:<root> fileName:/specializedTypeAliasConstructorCall.kt
overridden: overridden:
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias IntAlias = Cell<Int> type=Cell<kotlin.Int>
FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Cell<kotlin.Int> flags:[] FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Cell<kotlin.Int> flags:[]
BLOCK_BODY BLOCK_BODY
RETURN type=kotlin.Nothing from='FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Cell<kotlin.Int> flags:[]' RETURN type=kotlin.Nothing from='FUN name:test visibility:public modality:FINAL <> () returnType:<root>.Cell<kotlin.Int> flags:[]'
@@ -40,7 +40,6 @@ FILE fqName:<root> fileName:/integerCoercionToT.kt
overridden: overridden:
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias CInt32Var = CInt32VarX<Int> type=CInt32VarX<kotlin.Int>
PROPERTY name:value visibility:public modality:FINAL flags:[var] PROPERTY name:value visibility:public modality:FINAL flags:[var]
FUN name:<get-value> visibility:public modality:FINAL <T_INT> ($receiver:<root>.CInt32VarX<<root>.<get-value>.T_INT>) returnType:<root>.<get-value>.T_INT flags:[] FUN name:<get-value> visibility:public modality:FINAL <T_INT> ($receiver:<root>.CInt32VarX<<root>.<get-value>.T_INT>) returnType:<root>.<get-value>.T_INT flags:[]
correspondingProperty: PROPERTY name:value visibility:public modality:FINAL flags:[var] correspondingProperty: PROPERTY name:value visibility:public modality:FINAL flags:[var]
@@ -31,8 +31,6 @@ FILE fqName:<root> fileName:/typeAliasCtorForGenericClass.kt
overridden: overridden:
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[] FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:[]
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[] $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
TYPEALIAS typealias B = A<X> type=A<X>
TYPEALIAS typealias B2 = A<A<T>> type=A<A<T>>
FUN name:bar visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[] FUN name:bar visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[]
BLOCK_BODY BLOCK_BODY
VAR name:b type:<root>.A<kotlin.Int> flags:[val] VAR name:b type:<root>.A<kotlin.Int> flags:[val]