[Analysis API] fix resolution to declarations inside kotlin*. packages

`kotlin*.` packages should be always allowed.
`kotlin.` packages should be allowed if `AnalysisFlags.allowKotlinPackage` is `true`

^KT-63223 fixed
This commit is contained in:
Ilya Kirillov
2023-11-06 21:32:54 +01:00
committed by Space Team
parent d22218e4e4
commit c54d83dcad
10 changed files with 118 additions and 1 deletions
@@ -2064,6 +2064,22 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("kotlinxPackage.kt")
public void testKotlinxPackage() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinxPackage.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -378,6 +378,16 @@ public class FirIdeDependentAnalysisScriptSourceModuleReferenceResolveTestGenera
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^(.+)\\.kts$"), null, true);
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -2064,6 +2064,22 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("kotlinxPackage.kt")
public void testKotlinxPackage() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinxPackage.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -1908,6 +1908,22 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true, "withErrors");
}
@Test
@TestMetadata("kotlinxPackage.kt")
public void testKotlinxPackage() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinxPackage.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -378,6 +378,16 @@ public class FirIdeNormalAnalysisScriptSourceModuleReferenceResolveTestGenerated
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^(.+)\\.kts$"), null, true);
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -2064,6 +2064,22 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("kotlinxPackage.kt")
public void testKotlinxPackage() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinxPackage.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -2064,6 +2064,22 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/kotlinPackage")
@TestDataPath("$PROJECT_ROOT")
public class KotlinPackage {
@Test
public void testAllFilesPresentInKotlinPackage() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
}
@Test
@TestMetadata("kotlinxPackage.kt")
public void testKotlinxPackage() throws Exception {
runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinxPackage.kt");
}
}
@Nested
@TestMetadata("analysis/analysis-api/testData/referenceResolve/nestedTypes")
@TestDataPath("$PROJECT_ROOT")
@@ -0,0 +1,12 @@
// FILE: a.kt
package kotlinx.pckg
fun foo() {
b<caret>ar()
}
// FILE: b.kt
package kotlinx.pckg
fun bar() {
}
@@ -0,0 +1,2 @@
Resolved to:
0: (in kotlinx.pckg) fun bar()
@@ -53,4 +53,7 @@ internal open class LLFirKotlinSymbolNamesProvider(
}
private fun FqName.isKotlinPackage(): Boolean = startsWith(StandardNames.BUILT_INS_PACKAGE_NAME)
private fun String.isKotlinPackage(): Boolean = startsWith(StandardNames.BUILT_INS_PACKAGE_NAME.asString())
private fun String.isKotlinPackage(): Boolean = startsWith(KOTLIN_PACKAGE_PREFIX)
private const val KOTLIN_PACKAGE_PREFIX = "kotlin."