IR: IrTypeAlias: isActual

This commit is contained in:
Dmitry Petrov
2019-07-24 16:13:14 +03:00
parent 2b43b09444
commit b3525b077c
6 changed files with 19 additions and 9 deletions
@@ -16,5 +16,6 @@ interface IrTypeAlias :
IrTypeParametersContainer {
override val descriptor: TypeAliasDescriptor
val isActual: Boolean
val expandedType: IrType
}
@@ -26,6 +26,7 @@ class IrTypeAliasImpl(
override val name: Name,
override val visibility: Visibility,
override val expandedType: IrType,
override val isActual: Boolean,
origin: IrDeclarationOrigin
) :
IrDeclarationBase(startOffset, endOffset, origin),
@@ -65,6 +66,7 @@ class IrTypeAliasImpl(
symbol.descriptor.name,
symbol.descriptor.visibility,
expandedType,
symbol.descriptor.isActual,
origin
)
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.ir.declarations.lazy
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
@@ -25,6 +24,9 @@ class IrLazyTypeAlias(
endOffset: Int,
origin: IrDeclarationOrigin,
override val symbol: IrTypeAliasSymbol,
override val name: Name,
override val visibility: Visibility,
override val isActual: Boolean,
stubGenerator: DeclarationStubGenerator,
typeTranslator: TypeTranslator
) :
@@ -38,12 +40,6 @@ class IrLazyTypeAlias(
override val descriptor: TypeAliasDescriptor
get() = symbol.descriptor
override val name: Name
get() = descriptor.name
override val visibility: Visibility
get() = descriptor.visibility
override val typeParameters: MutableList<IrTypeParameter> by lazy {
descriptor.declaredTypeParameters.mapTo(arrayListOf()) {
stubGenerator.generateOrGetTypeParameterStub(it)
@@ -251,7 +251,11 @@ class DeclarationStubGenerator(
}
val origin = computeOrigin(descriptor)
return symbolTable.declareTypeAlias(descriptor) {
IrLazyTypeAlias(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, this, typeTranslator)
IrLazyTypeAlias(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
it, it.descriptor.name, it.descriptor.visibility, it.descriptor.isActual,
this, typeTranslator
)
}
}
}
@@ -341,6 +341,7 @@ open class DeepCopyIrTreeWithSymbols(
symbolRenamer.getTypeAliasName(declaration.symbol),
declaration.visibility,
declaration.expandedType.remapType(),
declaration.isActual,
mapDeclarationOrigin(declaration.origin)
).apply {
transformAnnotations(declaration)
@@ -498,9 +498,15 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
declaration.run {
"TYPEALIAS ${declaration.renderOriginIfNonTrivial()}" +
"name:$name visibility:$visibility expandedType:${expandedType.render()}"
"name:$name visibility:$visibility expandedType:${expandedType.render()}" +
renderTypeAliasFlags()
}
private fun IrTypeAlias.renderTypeAliasFlags(): String =
renderFlagsList(
"actual".takeIf { isActual }
)
private fun IrLocalDelegatedProperty.renderLocalDelegatedPropertyFlags() =
if (isVar) "var" else "val"