[FIR] Fix setting file in supertypes resolution

^KT-49652 Fixed
This commit is contained in:
Dmitriy Novozhilov
2021-11-15 16:29:24 +03:00
committed by TeamCityServer
parent e11ffc75e4
commit 499b97d51e
7 changed files with 96 additions and 2 deletions
@@ -211,7 +211,7 @@ open class FirSupertypeResolverVisitor(
private val scopeForLocalClass: PersistentList<FirScope>? = null,
private val localClassesNavigationInfo: LocalClassesNavigationInfo? = null,
private val firProviderInterceptor: FirProviderInterceptor? = null,
private val useSiteFile: FirFile? = null,
private var useSiteFile: FirFile? = null,
containingDeclarations: List<FirDeclaration> = emptyList(),
) : FirDefaultVisitor<Unit, Any?>() {
private val supertypeGenerationExtensions = session.extensionService.supertypeGenerators
@@ -225,6 +225,16 @@ open class FirSupertypeResolverVisitor(
}
}
private inline fun <R> withFile(file: FirFile, block: () -> R): R {
val oldFile = useSiteFile
try {
useSiteFile = file
return block()
} finally {
useSiteFile = oldFile
}
}
private fun getFirClassifierContainerFileIfAny(symbol: FirClassLikeSymbol<*>): FirFile? =
if (firProviderInterceptor != null) firProviderInterceptor.getFirClassifierContainerFileIfAny(symbol)
else session.firProvider.getFirClassifierContainerFileIfAny(symbol.classId)
@@ -454,7 +464,9 @@ open class FirSupertypeResolverVisitor(
}
override fun visitFile(file: FirFile, data: Any?) {
visitDeclarationContent(file, null)
withFile(file) {
visitDeclarationContent(file, null)
}
}
}