FIR: replace resolve phase in FirFile properly
This commit is contained in:
+7
@@ -32,6 +32,13 @@ abstract class FirAbstractPhaseTransformer<D>(
|
|||||||
return phasedFir(session, requiredPhase)
|
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> {
|
override fun transformDeclaration(declaration: FirDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
declaration.replaceResolvePhase(transformerPhase)
|
declaration.replaceResolvePhase(transformerPhase)
|
||||||
|
|
||||||
|
|||||||
+1
@@ -33,6 +33,7 @@ class FirImportResolveTransformer() : FirAbstractTreeTransformer<Nothing?>(phase
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
||||||
|
file.replaceResolvePhase(transformerPhase)
|
||||||
session = file.session
|
session = file.session
|
||||||
symbolProvider = FirSymbolProvider.getInstance(file.session)
|
symbolProvider = FirSymbolProvider.getInstance(file.session)
|
||||||
return file.also { it.transformChildren(this, null) }.compose()
|
return file.also { it.transformChildren(this, null) }.compose()
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ class FirStatusResolveTransformer : FirAbstractTreeTransformer<FirDeclarationSta
|
|||||||
|
|
||||||
override fun transformFile(file: FirFile, data: FirDeclarationStatus?): CompositeTransformResult<FirFile> {
|
override fun transformFile(file: FirFile, data: FirDeclarationStatus?): CompositeTransformResult<FirFile> {
|
||||||
session = file.session
|
session = file.session
|
||||||
return transformElement(file, data)
|
return super.transformFile(file, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformDeclarationStatus(
|
override fun transformDeclarationStatus(
|
||||||
|
|||||||
+2
@@ -52,6 +52,8 @@ private class FirApplySupertypesTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
||||||
|
file.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
|
||||||
|
|
||||||
return (file.transformChildren(this, null) as FirFile).compose()
|
return (file.transformChildren(this, null) as FirFile).compose()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes(
|
|||||||
return withScopeCleanup {
|
return withScopeCleanup {
|
||||||
towerScope.addImportingScopes(file, session, scopeSession)
|
towerScope.addImportingScopes(file, session, scopeSession)
|
||||||
typeResolverTransformer = FirSpecificTypeResolverTransformer(towerScope, session)
|
typeResolverTransformer = FirSpecificTypeResolverTransformer(towerScope, session)
|
||||||
transformElement(file, data)
|
super.transformFile(file, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -41,8 +41,7 @@ open class FirBodyResolveTransformer(
|
|||||||
components.file = file
|
components.file = file
|
||||||
return withScopeCleanup(components.topLevelScopes) {
|
return withScopeCleanup(components.topLevelScopes) {
|
||||||
components.topLevelScopes.addImportingScopes(file, session, components.scopeSession)
|
components.topLevelScopes.addImportingScopes(file, session, components.scopeSession)
|
||||||
@Suppress("UNCHECKED_CAST")
|
super.transformFile(file, data)
|
||||||
super.transformFile(file, data) as CompositeTransformResult<FirFile>
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user