[Analysis API FIR] fix member scope for enum entries without body

This commit is contained in:
Ilya Kirillov
2022-06-24 13:53:01 +02:00
committed by teamcity
parent 47beef16f3
commit 89ff1f0c0b
11 changed files with 375 additions and 5 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.SymbolByFqName
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.SymbolsData
import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.services.TestServices
@@ -18,7 +19,7 @@ abstract class AbstractMemberScopeByFqNameTest : AbstractSymbolByFqNameTest() {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath)
val symbols = with(symbolData) { toSymbols() }
val classSymbol = symbols.singleOrNull() as? KtClassOrObjectSymbol
val classSymbol = symbols.singleOrNull() as? KtSymbolWithMembers
?: error("Should be a single class symbol, but $symbols found")
return SymbolsData(classSymbol.getMemberScope().getAllSymbols().toList())
}
@@ -90,13 +90,17 @@ abstract class AbstractSymbolTest : AbstractAnalysisApiSingleFileTest() {
data: SymbolPointersData,
testServices: TestServices,
) {
val actual = data.pointers.joinToString(separator = "\n\n") { it.rendered }
val actual = data.pointers.renderDeclarations()
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
val actualPretty = data.pointersForPrettyRendering.joinToString(separator = "\n\n") { it.rendered }
val actualPretty = data.pointersForPrettyRendering.renderDeclarations()
testServices.assertions.assertEqualsToTestDataFileSibling(actualPretty, extension = ".pretty.txt")
}
private fun List<PointerWithRenderedSymbol>.renderDeclarations(): String =
if (isEmpty()) "NO_SYMBOLS"
else joinToString(separator = "\n\n") { it.rendered }
private fun restoreSymbolsInOtherReadActionAndCompareResults(
ktFile: KtFile,
pointersWithRendered: List<PointerWithRenderedSymbol>,