FIR: load parents of Java inner classes first, as before

This commit is contained in:
pyos
2021-09-09 17:24:51 +02:00
committed by TeamCityServer
parent cac0cf6a50
commit 8ff79e002e
8 changed files with 63 additions and 23 deletions
@@ -185,13 +185,27 @@ abstract class AbstractFirDeserializedSymbolsProvider(
return packagePartsCache.getValue(packageFqName)
}
protected open fun shouldLoadParentsFirst(classId: ClassId): Boolean = false
protected open fun getClass(
classId: ClassId,
parentContext: FirDeserializationContext? = null
): FirRegularClassSymbol? {
if (parentContext == null && shouldLoadParentsFirst(classId)) {
return getClassAfterLoadingParents(classId)
}
return classCache.getValue(classId, parentContext)
}
private fun getClassAfterLoadingParents(classId: ClassId): FirRegularClassSymbol? {
classId.outerClassId?.let { parentClassId ->
val alreadyLoaded = classCache.getValueIfComputed(classId)
if (alreadyLoaded != null) return alreadyLoaded
getClassAfterLoadingParents(parentClassId)
}
return classCache.getValue(classId, null)
}
private fun getTypeAlias(
classId: ClassId,
): FirTypeAliasSymbol? {