[FIR] Fix setting file in supertypes resolution
^KT-49652 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
e11ffc75e4
commit
499b97d51e
+14
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user