[AA] Show symbol origins in REx tests.

This is in preparation for adding a separate KtSymbolOrigin for
resolve extension symbols.

^KT-59351
This commit is contained in:
Justin Paupore
2023-06-07 22:00:11 -07:00
committed by Ilya Kirillov
parent 734b87b97e
commit f01b824751
11 changed files with 21 additions and 11 deletions
@@ -67,7 +67,7 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() {
analyseForTest(ktReferences.first().element) {
val symbols = ktReferences.flatMap { it.resolveToSymbols() }
checkReferenceResultForValidity(ktReferences, mainModule, testServices, symbols)
renderResolvedTo(symbols, renderingOptions)
renderResolvedTo(symbols, renderingOptions) { getAdditionalSymbolInfo(it) }
}
if (Directives.UNRESOLVED_REFERENCE in mainModule.directives) {
@@ -78,6 +78,8 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() {
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
open fun KtAnalysisSession.getAdditionalSymbolInfo(symbol: KtSymbol): String? = null
private fun findReferencesAtCaret(mainKtFile: KtFile, caretPosition: Int): List<KtReference> =
mainKtFile.findReferenceAt(caretPosition)?.unwrapMultiReferences().orEmpty().filterIsInstance<KtReference>()
@@ -6,6 +6,8 @@
package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.references
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.resolve.extensions.KtResolveExtensionTestSupport
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
abstract class AbstractReferenceResolveWithResolveExtensionTest : AbstractReferenceResolveTest() {
@@ -13,4 +15,7 @@ abstract class AbstractReferenceResolveWithResolveExtensionTest : AbstractRefere
super.configureTest(builder)
KtResolveExtensionTestSupport.configure(builder)
}
override fun KtAnalysisSession.getAdditionalSymbolInfo(symbol: KtSymbol): String? =
"origin = ${symbol.origin}"
}
@@ -18,15 +18,17 @@ object TestReferenceResolveResultRenderer {
fun KtAnalysisSession.renderResolvedTo(
symbols: List<KtSymbol>,
renderer: KtDeclarationRenderer = KtDeclarationRendererForDebug.WITH_QUALIFIED_NAMES,
additionalInfo: KtAnalysisSession.(KtSymbol) -> String? = { null }
) =
symbols.map { renderResolveResult(it, renderer) }
symbols.map { renderResolveResult(it, renderer, additionalInfo) }
.sorted()
.withIndex()
.joinToString(separator = "\n") { "${it.index}: ${it.value}" }
private fun KtAnalysisSession.renderResolveResult(
symbol: KtSymbol,
renderer: KtDeclarationRenderer
renderer: KtDeclarationRenderer,
additionalInfo: KtAnalysisSession.(KtSymbol) -> String?
): String {
return buildString {
symbolContainerFqName(symbol)?.let { fqName ->
@@ -41,6 +43,7 @@ object TestReferenceResolveResultRenderer {
}
else -> error("Unexpected symbol ${symbol::class}")
}
additionalInfo(symbol)?.let { append(" [$it]") }
}
}