KT-65152 [AA] Add extra test for package resolution
Make sure that, when ambiguous, both the package and the callable/class/property are resolved from KDoc reference. Do a slight refactoring of `KDocReferenceResolver` This behavior is also true for K1
This commit is contained in:
committed by
Space Team
parent
f402daba98
commit
c0d54f9bbf
+6
@@ -1623,6 +1623,12 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte
|
||||
public void testLongPackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("packageVsTopLevelDeclarations.kt")
|
||||
public void testPackageVsTopLevelDeclarations() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
|
||||
+9
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
||||
import kotlin.reflect.KClass
|
||||
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
internal object KDocReferenceResolver {
|
||||
|
||||
@@ -84,7 +85,7 @@ internal object KDocReferenceResolver {
|
||||
context(KtAnalysisSession)
|
||||
private fun resolveKdocFqName(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
||||
getExtensionReceiverSymbolByThisQualifier(fqName, contextElement).ifNotEmpty { return this }
|
||||
(getSymbolsFromScopes(fqName, contextElement) + listOfNotNull(getPackageSymbolIfPackageExists(fqName))).ifNotEmpty { return this }
|
||||
getSymbolsFromExistingScopes(fqName, contextElement).ifNotEmpty { return this }
|
||||
getNonImportedSymbolsByFullyQualifiedName(fqName).ifNotEmpty { return this }
|
||||
AdditionalKDocResolutionProvider.resolveKdocFqName(fqName, contextElement).ifNotEmpty { return this }
|
||||
return emptyList()
|
||||
@@ -102,6 +103,13 @@ internal object KDocReferenceResolver {
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
private fun getSymbolsFromExistingScopes(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> =
|
||||
buildList {
|
||||
addAll(getSymbolsFromScopes(fqName, contextElement))
|
||||
addIfNotNull(getPackageSymbolIfPackageExists(fqName))
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
private fun getSymbolsFromScopes(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
||||
getSymbolsFromParentMemberScopes(fqName, contextElement).ifNotEmpty { return this }
|
||||
|
||||
+6
@@ -1623,6 +1623,12 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex
|
||||
public void testLongPackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("packageVsTopLevelDeclarations.kt")
|
||||
public void testPackageVsTopLevelDeclarations() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
|
||||
+6
@@ -1507,6 +1507,12 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate
|
||||
public void testLongPackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("packageVsTopLevelDeclarations.kt")
|
||||
public void testPackageVsTopLevelDeclarations() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
|
||||
+6
@@ -1623,6 +1623,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten
|
||||
public void testLongPackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("packageVsTopLevelDeclarations.kt")
|
||||
public void testPackageVsTopLevelDeclarations() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
|
||||
+6
@@ -1623,6 +1623,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate
|
||||
public void testLongPackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("packageVsTopLevelDeclarations.kt")
|
||||
public void testPackageVsTopLevelDeclarations() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
interface foo
|
||||
|
||||
fun foo() {}
|
||||
|
||||
/**
|
||||
* [<caret_1>foo]
|
||||
*
|
||||
* [<caret_2>foo.foo]
|
||||
* [foo.<caret_3>foo]
|
||||
*/
|
||||
fun usage() {}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
Caret 1 resolved to:
|
||||
0: (in foo) fun foo()
|
||||
1: (in foo) interface foo
|
||||
2: package foo
|
||||
|
||||
Caret 2 resolved to:
|
||||
0: package foo
|
||||
|
||||
Caret 3 resolved to:
|
||||
0: (in foo) fun foo()
|
||||
1: (in foo) interface foo
|
||||
Reference in New Issue
Block a user