AA: add tests for resolution to built-ins
This commit is contained in:
committed by
Ilya Kirillov
parent
c7347cfb48
commit
e50da634bc
+20
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModul
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode;
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode;
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractDecompiledPsiDeclarationProviderTest;
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderTest;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -27,7 +27,7 @@ import java.util.regex.Pattern;
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/analysis-api/testData/standalone/singleModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirStandaloneNormalAnalysisSourceModuleDecompiledPsiDeclarationProviderTestGenerated extends AbstractDecompiledPsiDeclarationProviderTest {
|
||||
public class FirStandaloneNormalAnalysisSourceModulePsiDeclarationProviderTestGenerated extends AbstractPsiDeclarationProviderTest {
|
||||
@NotNull
|
||||
@Override
|
||||
public AnalysisApiTestConfigurator getConfigurator() {
|
||||
@@ -58,6 +58,24 @@ public class FirStandaloneNormalAnalysisSourceModuleDecompiledPsiDeclarationProv
|
||||
runTest("analysis/analysis-api/testData/standalone/singleModule/capitalize_locale.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("listIterator.kt")
|
||||
public void testListIterator() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/standalone/singleModule/listIterator.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mapGetOrDefault.kt")
|
||||
public void testMapGetOrDefault() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/standalone/singleModule/mapGetOrDefault.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("mapGetOrDefault_nullable.kt")
|
||||
public void testMapGetOrDefault_nullable() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/standalone/singleModule/mapGetOrDefault_nullable.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multipleFiles.kt")
|
||||
public void testMultipleFiles() throws Exception {
|
||||
+5
-6
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.assertions
|
||||
|
||||
abstract class AbstractDecompiledPsiDeclarationProviderTest : AbstractAnalysisApiBasedSingleModuleTest() {
|
||||
abstract class AbstractPsiDeclarationProviderTest : AbstractAnalysisApiBasedSingleModuleTest() {
|
||||
override fun doTestByFileStructure(ktFiles: List<KtFile>, module: TestModule, testServices: TestServices) {
|
||||
val mainKtFile = ktFiles.singleOrNull() ?: ktFiles.firstOrNull { it.name == "main.kt" } ?: ktFiles.first()
|
||||
val caretPosition = testServices.expressionMarkerProvider.getCaretPosition(mainKtFile)
|
||||
@@ -34,7 +34,7 @@ abstract class AbstractDecompiledPsiDeclarationProviderTest : AbstractAnalysisAp
|
||||
val resolvedTo =
|
||||
analyseForTest(element) {
|
||||
val symbols = ktReferences.flatMap { it.resolveToSymbols() }
|
||||
val psiElements = symbols.mapNotNull { psiForDecompiled(it, element.project) }
|
||||
val psiElements = symbols.mapNotNull { psiForTest(it, element.project) }
|
||||
psiElements.joinToString(separator = "\n") { TestPsiElementRenderer.render(it) }
|
||||
}
|
||||
|
||||
@@ -50,13 +50,12 @@ abstract class AbstractDecompiledPsiDeclarationProviderTest : AbstractAnalysisAp
|
||||
mainKtFile.findReferenceAt(caretPosition)?.unwrapMultiReferences().orEmpty().filterIsInstance<KtReference>()
|
||||
|
||||
// Mimic [psiForUast] in FIR UAST
|
||||
private fun KtAnalysisSession.psiForDecompiled(symbol: KtSymbol, project: Project): PsiElement? {
|
||||
private fun KtAnalysisSession.psiForTest(symbol: KtSymbol, project: Project): PsiElement? {
|
||||
return when (symbol.origin) {
|
||||
KtSymbolOrigin.LIBRARY -> {
|
||||
findPsi(symbol, project)
|
||||
findPsi(symbol, project) ?: symbol.psi
|
||||
}
|
||||
// NB: This test is checking declarations from libraries (hence decompiled stub) only
|
||||
else -> null
|
||||
else -> symbol.psi
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
fun foo() {
|
||||
val li = ArrayList<String>().listIterator()
|
||||
li.<caret>add("test")
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
Resolved to:
|
||||
public abstract fun add(element: T): kotlin.Unit
|
||||
@@ -0,0 +1,3 @@
|
||||
fun box(map: MutableMap<String, String>) {
|
||||
map.get<caret>OrDefault("key", "value")
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
Resolved to:
|
||||
@kotlin.SinceKotlin @kotlin.internal.PlatformDependent public open fun getOrDefault(key: K, defaultValue: V): V { /* compiled code */ }
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
// WITH_STDLIB
|
||||
|
||||
fun box(map: MutableMap<String, String>) {
|
||||
map.get<caret>OrDefault("key", null)
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Resolved to:
|
||||
PsiMethod:getOrDefault($this$getOrDefault: PsiType:Map<? extends K, ? extends V>, key: PsiType:K, defaultValue: PsiType:V): PsiType:V
|
||||
@@ -1 +1,2 @@
|
||||
Resolved to:
|
||||
internal const val MinId = -1
|
||||
@@ -1 +1,2 @@
|
||||
Resolved to:
|
||||
annotation class MyAnno
|
||||
+2
-2
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.AbstractSy
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.AbstractSymbolByPsiTest
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.symbols.AbstractSymbolByReferenceTest
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.types.AbstractAnalysisApiSubstitutorsTest
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractDecompiledPsiDeclarationProviderTest
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider.AbstractPsiDeclarationProviderTest
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind
|
||||
@@ -140,7 +140,7 @@ private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() {
|
||||
}
|
||||
|
||||
group("standalone", filter = analysisApiModeIs(AnalysisApiMode.Standalone)) {
|
||||
test(AbstractDecompiledPsiDeclarationProviderTest::class) {
|
||||
test(AbstractPsiDeclarationProviderTest::class) {
|
||||
model("singleModule")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user