[FIR] Get rid of JavaSymbolProvider.getJavaTopLevelClasses
This commit is contained in:
+14
-7
@@ -146,16 +146,14 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
||||
val symbolProvider = session.firSymbolProvider as FirCompositeSymbolProvider
|
||||
val javaProvider = symbolProvider.providers.filterIsInstance<JavaSymbolProvider>().first()
|
||||
|
||||
val topLevelJavaClasses = topPsiClasses.map { it.classId(FqName.ROOT) }
|
||||
|
||||
fun processClassWithChildren(psiClass: PsiClass, parentFqName: FqName) {
|
||||
val psiFile = psiClass.containingFile
|
||||
val packageStatement = psiFile.children.filterIsInstance<PsiPackageStatement>().firstOrNull()
|
||||
val packageName = packageStatement?.packageName
|
||||
val fqName = parentFqName.child(Name.identifier(psiClass.name!!))
|
||||
val classId = ClassId(packageName?.let { FqName(it) } ?: FqName.ROOT, fqName, false)
|
||||
val classId = psiClass.classId(parentFqName)
|
||||
javaProvider.getClassLikeSymbolByFqName(classId)
|
||||
?: throw AssertionError(classId.asString())
|
||||
psiClass.innerClasses.forEach {
|
||||
processClassWithChildren(psiClass = it, parentFqName = fqName)
|
||||
processClassWithChildren(psiClass = it, parentFqName = classId.relativeClassName)
|
||||
}
|
||||
}
|
||||
for (psiClass in topPsiClasses) {
|
||||
@@ -163,7 +161,8 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
||||
}
|
||||
|
||||
val processedJavaClasses = mutableSetOf<FirJavaClass>()
|
||||
for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) {
|
||||
for (javaClassId in topLevelJavaClasses.sortedBy { it.shortClassName }) {
|
||||
val javaClass = javaProvider.getClassLikeSymbolByFqName(javaClassId)?.fir ?: continue
|
||||
if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue
|
||||
renderJavaClass(renderer, javaClass, session)
|
||||
processedJavaClasses += javaClass
|
||||
@@ -174,6 +173,14 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
||||
KotlinTestUtils.assertEqualsToFile(expectedFile, javaFirDump)
|
||||
}
|
||||
|
||||
private fun PsiClass.classId(parentFqName: FqName): ClassId {
|
||||
val psiFile = this.containingFile
|
||||
val packageStatement = psiFile.children.filterIsInstance<PsiPackageStatement>().firstOrNull()
|
||||
val packageName = packageStatement?.packageName
|
||||
val fqName = parentFqName.child(Name.identifier(this.name!!))
|
||||
return ClassId(packageName?.let { FqName(it) } ?: FqName.ROOT, fqName, false)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val FOREIGN_ANNOTATIONS_SOURCES_PATH = "third-party/annotations"
|
||||
}
|
||||
|
||||
@@ -413,14 +413,6 @@ class JavaSymbolProvider(
|
||||
}
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun getJavaTopLevelClasses(): List<FirRegularClass> {
|
||||
return classCache.values
|
||||
.filterIsInstance<FirRegularClassSymbol>()
|
||||
.filter { it.classId.relativeClassName.parent().isRoot }
|
||||
.map { it.fir }
|
||||
}
|
||||
|
||||
private val knownClassNamesInPackage = mutableMapOf<FqName, Set<String>?>()
|
||||
|
||||
private fun hasTopLevelClassOf(classId: ClassId): Boolean {
|
||||
|
||||
+21
-19
@@ -19,11 +19,8 @@ import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.registerExtensions
|
||||
import org.jetbrains.kotlin.fir.java.*
|
||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllTransformerBasedResolveProcessors
|
||||
@@ -140,22 +137,27 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
|
||||
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
|
||||
}
|
||||
|
||||
val processedJavaClasses = mutableSetOf<FirJavaClass>()
|
||||
val javaFirDump = StringBuilder().also { builder ->
|
||||
val renderer = FirRenderer(builder)
|
||||
for (session in sessions) {
|
||||
val symbolProvider = session.firSymbolProvider as FirCompositeSymbolProvider
|
||||
val javaProvider = symbolProvider.providers.filterIsInstance<JavaSymbolProvider>().first()
|
||||
for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) {
|
||||
if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue
|
||||
renderJavaClass(renderer, javaClass, session)
|
||||
processedJavaClasses += javaClass
|
||||
}
|
||||
}
|
||||
}.toString()
|
||||
if (javaFirDump.isNotEmpty()) {
|
||||
KotlinTestUtils.assertEqualsToFile(File("$dirPath/extraDump.java.txt"), javaFirDump)
|
||||
}
|
||||
/*
|
||||
* This code is commented due to deleted JavaSymbolProvider.getJavaTopLevelClasses() method
|
||||
* There is no replace for this code because of there are no tests for this test runner, so
|
||||
* it is questionable, do we need java class check (or that test runner at all)
|
||||
*/
|
||||
// val processedJavaClasses = mutableSetOf<FirJavaClass>()
|
||||
// val javaFirDump = StringBuilder().also { builder ->
|
||||
// val renderer = FirRenderer(builder)
|
||||
// for (session in sessions) {
|
||||
// val symbolProvider = session.firSymbolProvider as FirCompositeSymbolProvider
|
||||
// val javaProvider = symbolProvider.providers.filterIsInstance<JavaSymbolProvider>().first()
|
||||
// for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) {
|
||||
// if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue
|
||||
// renderJavaClass(renderer, javaClass, session)
|
||||
// processedJavaClasses += javaClass
|
||||
// }
|
||||
// }
|
||||
// }.toString()
|
||||
// if (javaFirDump.isNotEmpty()) {
|
||||
// KotlinTestUtils.assertEqualsToFile(File("$dirPath/extraDump.java.txt"), javaFirDump)
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user