KTIJ-25960 [Analysis API] Resolve static declarations in KDoc

^KTIJ-25960 Fixed
This commit is contained in:
Roman Golyshev
2023-06-23 14:33:03 +02:00
committed by Space Team
parent 4d91229d79
commit b4c9a2616e
16 changed files with 348 additions and 3 deletions
@@ -168,7 +168,13 @@ internal object KDocReferenceResolver {
.fold(scope) { currentScope, fqNamePart ->
currentScope
.getClassifierSymbols(fqNamePart)
.mapNotNull { (it as? KtSymbolWithMembers)?.getDeclaredMemberScope() }
.filterIsInstance<KtSymbolWithMembers>()
.flatMap {
listOf(
it.getDeclaredMemberScope(),
it.getStaticMemberScope(),
)
}
.toList()
.asCompositeScope()
}
@@ -185,7 +191,7 @@ internal object KDocReferenceResolver {
}
context(KtAnalysisSession)
private fun getNonImportedSymbolsByFullyQualifiedName(fqName: FqName): List<KtSymbol> = buildList {
private fun getNonImportedSymbolsByFullyQualifiedName(fqName: FqName): Collection<KtSymbol> = buildSet {
generateNameInterpretations(fqName).forEach { interpretation ->
collectSymbolsByFqNameInterpretation(interpretation)
}
@@ -229,7 +235,13 @@ internal object KDocReferenceResolver {
else -> {
getClassOrObjectSymbolByClassId(classId)
?.getDeclaredMemberScope()
?.let {
listOf(
it.getDeclaredMemberScope(),
it.getStaticMemberScope(),
)
}
?.asCompositeScope()
?.getCallableSymbols(callableId.callableName)
?.let(::addAll)
}
@@ -1271,6 +1271,52 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations")
@TestDataPath("$PROJECT_ROOT")
public class JavaDeclarations {
@Test
public void testAllFilesPresentInJavaDeclarations() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("StaticFieldQualified.kt")
public void testStaticFieldQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFieldQualified.kt");
}
@Test
@TestMetadata("StaticFunctionFromBaseClass.kt")
public void testStaticFunctionFromBaseClass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFromBaseClass.kt");
}
@Test
@TestMetadata("StaticFunctionFullyQualified.kt")
public void testStaticFunctionFullyQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFullyQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualified.kt")
public void testStaticFunctionQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithJavaSubclass.kt")
public void testStaticFunctionQualifiedWithJavaSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithJavaSubclass.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithKotlinSubclass.kt")
public void testStaticFunctionQualifiedWithKotlinSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithKotlinSubclass.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/localContext")
@TestDataPath("$PROJECT_ROOT")
@@ -1155,6 +1155,52 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations")
@TestDataPath("$PROJECT_ROOT")
public class JavaDeclarations {
@Test
public void testAllFilesPresentInJavaDeclarations() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations"), Pattern.compile("^([^.]+)\\.kt$"), null, true, "withErrors");
}
@Test
@TestMetadata("StaticFieldQualified.kt")
public void testStaticFieldQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFieldQualified.kt");
}
@Test
@TestMetadata("StaticFunctionFromBaseClass.kt")
public void testStaticFunctionFromBaseClass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFromBaseClass.kt");
}
@Test
@TestMetadata("StaticFunctionFullyQualified.kt")
public void testStaticFunctionFullyQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFullyQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualified.kt")
public void testStaticFunctionQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithJavaSubclass.kt")
public void testStaticFunctionQualifiedWithJavaSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithJavaSubclass.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithKotlinSubclass.kt")
public void testStaticFunctionQualifiedWithKotlinSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithKotlinSubclass.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/localContext")
@TestDataPath("$PROJECT_ROOT")
@@ -1271,6 +1271,52 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations")
@TestDataPath("$PROJECT_ROOT")
public class JavaDeclarations {
@Test
public void testAllFilesPresentInJavaDeclarations() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("StaticFieldQualified.kt")
public void testStaticFieldQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFieldQualified.kt");
}
@Test
@TestMetadata("StaticFunctionFromBaseClass.kt")
public void testStaticFunctionFromBaseClass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFromBaseClass.kt");
}
@Test
@TestMetadata("StaticFunctionFullyQualified.kt")
public void testStaticFunctionFullyQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionFullyQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualified.kt")
public void testStaticFunctionQualified() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualified.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithJavaSubclass.kt")
public void testStaticFunctionQualifiedWithJavaSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithJavaSubclass.kt");
}
@Test
@TestMetadata("StaticFunctionQualifiedWithKotlinSubclass.kt")
public void testStaticFunctionQualifiedWithKotlinSubclass() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kDoc/javaDeclarations/StaticFunctionQualifiedWithKotlinSubclass.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kDoc/localContext")
@TestDataPath("$PROJECT_ROOT")