IR: drop IrTypeAlias
This commit is contained in:
@@ -385,7 +385,7 @@ class ClassGenerator(
|
||||
private fun generateMembersDeclaredInClassBody(irClass: IrClass, ktClassOrObject: KtPureClassOrObject) {
|
||||
// generate real body declarations
|
||||
ktClassOrObject.body?.let { ktClassBody ->
|
||||
ktClassBody.declarations.mapTo(irClass.declarations) { ktDeclaration ->
|
||||
ktClassBody.declarations.mapNotNullTo(irClass.declarations) { ktDeclaration ->
|
||||
declarationGenerator.generateClassMemberDeclaration(ktDeclaration, irClass)
|
||||
}
|
||||
}
|
||||
|
||||
+7
-14
@@ -16,11 +16,12 @@
|
||||
|
||||
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.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.symbols.IrSymbol
|
||||
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.startOffsetSkippingComments
|
||||
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.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
@@ -41,7 +40,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
|
||||
fun KotlinType.toIrType() = typeTranslator.translateType(this)
|
||||
|
||||
fun generateMemberDeclaration(ktDeclaration: KtDeclaration): IrDeclaration =
|
||||
fun generateMemberDeclaration(ktDeclaration: KtDeclaration): IrDeclaration? =
|
||||
when (ktDeclaration) {
|
||||
is KtNamedFunction ->
|
||||
FunctionGenerator(this).generateFunctionDeclaration(ktDeclaration)
|
||||
@@ -50,7 +49,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
is KtClassOrObject ->
|
||||
generateClassOrObjectDeclaration(ktDeclaration)
|
||||
is KtTypeAlias ->
|
||||
generateTypeAliasDeclaration(ktDeclaration)
|
||||
null
|
||||
else ->
|
||||
IrErrorDeclarationImpl(
|
||||
ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset,
|
||||
@@ -62,7 +61,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
return generateClassOrObjectDeclaration(syntheticDeclaration)
|
||||
}
|
||||
|
||||
fun generateClassMemberDeclaration(ktDeclaration: KtDeclaration, irClass: IrClass): IrDeclaration =
|
||||
fun generateClassMemberDeclaration(ktDeclaration: KtDeclaration, irClass: IrClass): IrDeclaration? =
|
||||
when (ktDeclaration) {
|
||||
is KtAnonymousInitializer ->
|
||||
AnonymousInitializerGenerator(this).generateAnonymousInitializerDeclaration(ktDeclaration, irClass)
|
||||
@@ -80,12 +79,6 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
fun generateClassOrObjectDeclaration(ktClassOrObject: KtPureClassOrObject): IrClass =
|
||||
ClassGenerator(this).generateClass(ktClassOrObject)
|
||||
|
||||
private fun generateTypeAliasDeclaration(ktDeclaration: KtTypeAlias): IrDeclaration =
|
||||
IrTypeAliasImpl(
|
||||
ktDeclaration.startOffsetSkippingComments, ktDeclaration.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
getOrFail(BindingContext.TYPE_ALIAS, ktDeclaration)
|
||||
)
|
||||
|
||||
|
||||
fun generateGlobalTypeParametersDeclarations(
|
||||
irTypeParametersOwner: IrTypeParametersContainer,
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.util.IrDeserializer
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.findPackageFragmentForFile
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
class ModuleGenerator(override val context: GeneratorContext) : Generator {
|
||||
|
||||
@@ -66,7 +67,7 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator {
|
||||
}
|
||||
|
||||
for (ktDeclaration in ktFile.declarations) {
|
||||
irFile.declarations.add(irDeclarationGenerator.generateMemberDeclaration(ktDeclaration))
|
||||
irFile.declarations.addIfNotNull(irDeclarationGenerator.generateMemberDeclaration(ktDeclaration))
|
||||
}
|
||||
|
||||
return irFile
|
||||
|
||||
+4
-4
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.assertCast
|
||||
import org.jetbrains.kotlin.ir.builders.Scope
|
||||
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.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
@@ -472,9 +471,10 @@ class StatementGenerator(
|
||||
LocalClassGenerator(this).generateLocalClass(classOrObject)
|
||||
|
||||
override fun visitTypeAlias(typeAlias: KtTypeAlias, data: Nothing?): IrStatement =
|
||||
IrTypeAliasImpl(
|
||||
typeAlias.startOffsetSkippingComments, typeAlias.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
getOrFail(BindingContext.TYPE_ALIAS, typeAlias)
|
||||
IrBlockImpl(
|
||||
// Compile local type aliases to empty blocks
|
||||
typeAlias.startOffsetSkippingComments, typeAlias.endOffset,
|
||||
context.irBuiltIns.unitType
|
||||
)
|
||||
|
||||
override fun visitClassLiteralExpression(expression: KtClassLiteralExpression, data: Nothing?): IrStatement =
|
||||
|
||||
Reference in New Issue
Block a user