IR: IrTypeAlias: isActual
This commit is contained in:
@@ -16,5 +16,6 @@ interface IrTypeAlias :
|
|||||||
IrTypeParametersContainer {
|
IrTypeParametersContainer {
|
||||||
|
|
||||||
override val descriptor: TypeAliasDescriptor
|
override val descriptor: TypeAliasDescriptor
|
||||||
|
val isActual: Boolean
|
||||||
val expandedType: IrType
|
val expandedType: IrType
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,7 @@ class IrTypeAliasImpl(
|
|||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val visibility: Visibility,
|
override val visibility: Visibility,
|
||||||
override val expandedType: IrType,
|
override val expandedType: IrType,
|
||||||
|
override val isActual: Boolean,
|
||||||
origin: IrDeclarationOrigin
|
origin: IrDeclarationOrigin
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase(startOffset, endOffset, origin),
|
IrDeclarationBase(startOffset, endOffset, origin),
|
||||||
@@ -65,6 +66,7 @@ class IrTypeAliasImpl(
|
|||||||
symbol.descriptor.name,
|
symbol.descriptor.name,
|
||||||
symbol.descriptor.visibility,
|
symbol.descriptor.visibility,
|
||||||
expandedType,
|
expandedType,
|
||||||
|
symbol.descriptor.isActual,
|
||||||
origin
|
origin
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-7
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.lazy
|
package org.jetbrains.kotlin.ir.declarations.lazy
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
@@ -25,6 +24,9 @@ class IrLazyTypeAlias(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrTypeAliasSymbol,
|
override val symbol: IrTypeAliasSymbol,
|
||||||
|
override val name: Name,
|
||||||
|
override val visibility: Visibility,
|
||||||
|
override val isActual: Boolean,
|
||||||
stubGenerator: DeclarationStubGenerator,
|
stubGenerator: DeclarationStubGenerator,
|
||||||
typeTranslator: TypeTranslator
|
typeTranslator: TypeTranslator
|
||||||
) :
|
) :
|
||||||
@@ -38,12 +40,6 @@ class IrLazyTypeAlias(
|
|||||||
override val descriptor: TypeAliasDescriptor
|
override val descriptor: TypeAliasDescriptor
|
||||||
get() = symbol.descriptor
|
get() = symbol.descriptor
|
||||||
|
|
||||||
override val name: Name
|
|
||||||
get() = descriptor.name
|
|
||||||
|
|
||||||
override val visibility: Visibility
|
|
||||||
get() = descriptor.visibility
|
|
||||||
|
|
||||||
override val typeParameters: MutableList<IrTypeParameter> by lazy {
|
override val typeParameters: MutableList<IrTypeParameter> by lazy {
|
||||||
descriptor.declaredTypeParameters.mapTo(arrayListOf()) {
|
descriptor.declaredTypeParameters.mapTo(arrayListOf()) {
|
||||||
stubGenerator.generateOrGetTypeParameterStub(it)
|
stubGenerator.generateOrGetTypeParameterStub(it)
|
||||||
|
|||||||
@@ -251,7 +251,11 @@ class DeclarationStubGenerator(
|
|||||||
}
|
}
|
||||||
val origin = computeOrigin(descriptor)
|
val origin = computeOrigin(descriptor)
|
||||||
return symbolTable.declareTypeAlias(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),
|
symbolRenamer.getTypeAliasName(declaration.symbol),
|
||||||
declaration.visibility,
|
declaration.visibility,
|
||||||
declaration.expandedType.remapType(),
|
declaration.expandedType.remapType(),
|
||||||
|
declaration.isActual,
|
||||||
mapDeclarationOrigin(declaration.origin)
|
mapDeclarationOrigin(declaration.origin)
|
||||||
).apply {
|
).apply {
|
||||||
transformAnnotations(declaration)
|
transformAnnotations(declaration)
|
||||||
|
|||||||
@@ -498,9 +498,15 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
|
|||||||
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
|
override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): String =
|
||||||
declaration.run {
|
declaration.run {
|
||||||
"TYPEALIAS ${declaration.renderOriginIfNonTrivial()}" +
|
"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() =
|
private fun IrLocalDelegatedProperty.renderLocalDelegatedPropertyFlags() =
|
||||||
if (isVar) "var" else "val"
|
if (isVar) "var" else "val"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user