FIR: add type alias descriptors
This commit is contained in:
+1
-2
@@ -17,5 +17,4 @@ class ConeClassDescriptorImpl(
|
||||
override val fqName: ClassId,
|
||||
override val superTypes: List<ConeKotlinType>,
|
||||
override val nestedClassifiers: List<ConeClassifierDescriptor>
|
||||
) : ConeClassDescriptor, AbstractFirBasedDescriptor<FirResolvedClass>() {
|
||||
}
|
||||
) : ConeClassDescriptor, AbstractFirBasedDescriptor<FirResolvedClass>()
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeAlias
|
||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class ConeTypeAliasDescriptorImpl(
|
||||
override val typeParameters: List<ConeTypeParameterDescriptor>,
|
||||
override val fqName: ClassId,
|
||||
override val expandedType: ConeKotlinType
|
||||
) : ConeTypeAliasDescriptor, AbstractFirBasedDescriptor<FirResolvedTypeAlias>()
|
||||
+24
-4
@@ -7,11 +7,9 @@ package org.jetbrains.kotlin.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedClass
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedClassImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedTypeAliasImpl
|
||||
import org.jetbrains.kotlin.fir.descriptors.ConeClassifierDescriptor
|
||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
||||
@@ -66,4 +64,26 @@ class FirClassifierResolveTransformer : FirTransformer<Nothing?>() {
|
||||
override fun transformResolvedClass(resolvedClass: FirResolvedClass, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
||||
return resolvedClass.compose()
|
||||
}
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
||||
typeAlias.transformChildren(this, data)
|
||||
val expandedType = (typeAlias.expandedType as FirResolvedType).type
|
||||
val typeParameters =
|
||||
typeAlias.typeParameters.filterIsInstance<FirDescriptorOwner<*>>().mapNotNull { it.descriptor as? ConeTypeParameterDescriptor }
|
||||
|
||||
val descriptor = ConeTypeAliasDescriptorImpl(
|
||||
typeParameters,
|
||||
ClassId(packageFqName, className.child(typeAlias.name), false),
|
||||
expandedType
|
||||
)
|
||||
|
||||
return FirResolvedTypeAliasImpl(typeAlias, descriptor).compose()
|
||||
}
|
||||
|
||||
override fun transformResolvedTypeAlias(
|
||||
resolvedTypeAlias: FirResolvedTypeAlias,
|
||||
data: Nothing?
|
||||
): CompositeTransformResult<FirDeclaration> {
|
||||
return resolvedTypeAlias.compose()
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -143,7 +143,7 @@ class FirTypeResolveTransformer(val superTypesOnly: Boolean = false) : FirTransf
|
||||
classifier.superTypes.any { it.accept(this, data) }
|
||||
}
|
||||
}
|
||||
is FirTypeAlias -> classifier.abbreviatedType.accept(this, data)
|
||||
is FirTypeAlias -> classifier.expandedType.accept(this, data)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ class FirQualifierResolverImpl(val session: FirSession) : FirQualifierResolver {
|
||||
ConeAbbreviatedTypeImpl(
|
||||
abbreviationFqName = fqName,
|
||||
typeArguments = parts.toTypeProjections(),
|
||||
directExpansion = (this.abbreviatedType as FirResolvedType).type
|
||||
directExpansion = (this.expandedType as FirResolvedType).type
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user