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 {
|
public void testLongPackage() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
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
|
@Nested
|
||||||
|
|||||||
+9
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.psi.*
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
|
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
|
||||||
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
|
|
||||||
internal object KDocReferenceResolver {
|
internal object KDocReferenceResolver {
|
||||||
|
|
||||||
@@ -84,7 +85,7 @@ internal object KDocReferenceResolver {
|
|||||||
context(KtAnalysisSession)
|
context(KtAnalysisSession)
|
||||||
private fun resolveKdocFqName(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
private fun resolveKdocFqName(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
||||||
getExtensionReceiverSymbolByThisQualifier(fqName, contextElement).ifNotEmpty { return this }
|
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 }
|
getNonImportedSymbolsByFullyQualifiedName(fqName).ifNotEmpty { return this }
|
||||||
AdditionalKDocResolutionProvider.resolveKdocFqName(fqName, contextElement).ifNotEmpty { return this }
|
AdditionalKDocResolutionProvider.resolveKdocFqName(fqName, contextElement).ifNotEmpty { return this }
|
||||||
return emptyList()
|
return emptyList()
|
||||||
@@ -102,6 +103,13 @@ internal object KDocReferenceResolver {
|
|||||||
return emptyList()
|
return emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context(KtAnalysisSession)
|
||||||
|
private fun getSymbolsFromExistingScopes(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> =
|
||||||
|
buildList {
|
||||||
|
addAll(getSymbolsFromScopes(fqName, contextElement))
|
||||||
|
addIfNotNull(getPackageSymbolIfPackageExists(fqName))
|
||||||
|
}
|
||||||
|
|
||||||
context(KtAnalysisSession)
|
context(KtAnalysisSession)
|
||||||
private fun getSymbolsFromScopes(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
private fun getSymbolsFromScopes(fqName: FqName, contextElement: KtElement): Collection<KtSymbol> {
|
||||||
getSymbolsFromParentMemberScopes(fqName, contextElement).ifNotEmpty { return this }
|
getSymbolsFromParentMemberScopes(fqName, contextElement).ifNotEmpty { return this }
|
||||||
|
|||||||
+6
@@ -1623,6 +1623,12 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex
|
|||||||
public void testLongPackage() throws Exception {
|
public void testLongPackage() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
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
|
@Nested
|
||||||
|
|||||||
+6
@@ -1507,6 +1507,12 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate
|
|||||||
public void testLongPackage() throws Exception {
|
public void testLongPackage() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
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
|
@Nested
|
||||||
|
|||||||
+6
@@ -1623,6 +1623,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten
|
|||||||
public void testLongPackage() throws Exception {
|
public void testLongPackage() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
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
|
@Nested
|
||||||
|
|||||||
+6
@@ -1623,6 +1623,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate
|
|||||||
public void testLongPackage() throws Exception {
|
public void testLongPackage() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.kt");
|
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
|
@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