FIR: replace resolve phase in FirFile properly

This commit is contained in:
Mikhail Glukhikh
2019-12-04 15:12:09 +03:00
parent 1539ee30ff
commit 26ee02ed02
6 changed files with 13 additions and 4 deletions
@@ -32,6 +32,13 @@ abstract class FirAbstractPhaseTransformer<D>(
return phasedFir(session, requiredPhase)
}
override fun transformFile(file: FirFile, data: D): CompositeTransformResult<FirFile> {
file.replaceResolvePhase(transformerPhase)
@Suppress("UNCHECKED_CAST")
return super.transformFile(file, data) as CompositeTransformResult<FirFile>
}
override fun transformDeclaration(declaration: FirDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
declaration.replaceResolvePhase(transformerPhase)
@@ -33,6 +33,7 @@ class FirImportResolveTransformer() : FirAbstractTreeTransformer<Nothing?>(phase
}
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
file.replaceResolvePhase(transformerPhase)
session = file.session
symbolProvider = FirSymbolProvider.getInstance(file.session)
return file.also { it.transformChildren(this, null) }.compose()
@@ -26,7 +26,7 @@ class FirStatusResolveTransformer : FirAbstractTreeTransformer<FirDeclarationSta
override fun transformFile(file: FirFile, data: FirDeclarationStatus?): CompositeTransformResult<FirFile> {
session = file.session
return transformElement(file, data)
return super.transformFile(file, data)
}
override fun transformDeclarationStatus(
@@ -52,6 +52,8 @@ private class FirApplySupertypesTransformer(
}
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
file.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
return (file.transformChildren(this, null) as FirFile).compose()
}
@@ -30,7 +30,7 @@ class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes(
return withScopeCleanup {
towerScope.addImportingScopes(file, session, scopeSession)
typeResolverTransformer = FirSpecificTypeResolverTransformer(towerScope, session)
transformElement(file, data)
super.transformFile(file, data)
}
}
@@ -41,8 +41,7 @@ open class FirBodyResolveTransformer(
components.file = file
return withScopeCleanup(components.topLevelScopes) {
components.topLevelScopes.addImportingScopes(file, session, components.scopeSession)
@Suppress("UNCHECKED_CAST")
super.transformFile(file, data) as CompositeTransformResult<FirFile>
super.transformFile(file, data)
}
}