[FIR] Support resolve of local typealiases

This commit is contained in:
Dmitriy Novozhilov
2021-04-01 14:10:47 +03:00
committed by TeamCityServer
parent 3cb17ac2f0
commit 66668b2294
19 changed files with 62 additions and 43 deletions
@@ -42,5 +42,7 @@ abstract class FirTypeAlias : FirPureAbstractElement(), FirClassLikeDeclaration<
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirTypeAlias
abstract fun <D> transformExpandedTypeRef(transformer: FirTransformer<D>, data: D): FirTypeAlias
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeAlias
}
@@ -51,7 +51,7 @@ internal class FirTypeAliasImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirTypeAliasImpl {
transformStatus(transformer, data)
transformTypeParameters(transformer, data)
expandedTypeRef = expandedTypeRef.transformSingle(transformer, data)
transformExpandedTypeRef(transformer, data)
transformAnnotations(transformer, data)
return this
}
@@ -66,6 +66,11 @@ internal class FirTypeAliasImpl(
return this
}
override fun <D> transformExpandedTypeRef(transformer: FirTransformer<D>, data: D): FirTypeAliasImpl {
expandedTypeRef = expandedTypeRef.transformSingle(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeAliasImpl {
annotations.transformInplace(transformer, data)
return this
@@ -92,7 +92,7 @@ inline val FirProperty.allowsToHaveFakeOverride: Boolean
inline val FirPropertyAccessor.allowsToHaveFakeOverride: Boolean
get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake
inline val FirRegularClass.isLocal get() = symbol.classId.isLocal
inline val FirClassLikeDeclaration<*>.isLocal get() = symbol.classId.isLocal
inline val FirSimpleFunction.isLocal get() = status.visibility == Visibilities.Local
fun FirRegularClassBuilder.addDeclaration(declaration: FirDeclaration) {
@@ -271,7 +271,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
parentArg(classLikeDeclaration, "F", typeAlias)
+name
+symbol("FirTypeAliasSymbol")
+field("expandedTypeRef", typeRef, withReplace = true)
+field("expandedTypeRef", typeRef, withReplace = true).withTransform()
+annotations
}