[AA LC] Approximate anonymous type to single supertype if possible

^KT-55780 Fixed
^KT-55778 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-09-20 18:17:45 +03:00
committed by Space Team
parent 935b4f2feb
commit 3a536bb32f
8 changed files with 137 additions and 15 deletions
@@ -14,11 +14,11 @@ import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerPro
import org.jetbrains.kotlin.analysis.test.framework.utils.executeOnPooledThreadInReadAction
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtPsiUtil
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
abstract class AbstractAnalysisApiPsiTypeProviderTest : AbstractAnalysisApiBasedTest() {
override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
@@ -26,9 +26,14 @@ abstract class AbstractAnalysisApiPsiTypeProviderTest : AbstractAnalysisApiBased
val ktFiles = testServices.ktModuleProvider.getModuleFiles(module).filterIsInstance<KtFile>()
testServices.expressionMarkerProvider.getElementsOfTypeAtCarets<KtDeclaration>(ktFiles)
}.single()
val containingClass = getContainingKtLightClass(declaration, ktFile)
val psiContext = containingClass.findLightDeclarationContext(declaration)
?: error("Can't find psi context for $declaration")
val psiContext = if (KtPsiUtil.isLocal(declaration)) {
declaration
} else {
val containingClass = getContainingKtLightClass(declaration, ktFile)
containingClass.findLightDeclarationContext(declaration) ?: error("Can't find psi context for $declaration")
}
val actual = buildString {
executeOnPooledThreadInReadAction {
analyze(declaration) {
@@ -38,6 +43,7 @@ abstract class AbstractAnalysisApiPsiTypeProviderTest : AbstractAnalysisApiBased
}
}
}
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
}
}