From d2b9b487c73626539e680691c3c3d908687b3694 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 6 Nov 2023 21:50:25 +0100 Subject: [PATCH] [Analysis API] add test for resolution into declarations with the `kotlin.` package ^KT-63223 --- ...ourceModuleReferenceResolveTestGenerated.java | 12 ++++++++++++ ...ourceModuleReferenceResolveTestGenerated.java | 12 ++++++++++++ ...ourceModuleReferenceResolveTestGenerated.java | 12 ++++++++++++ ...ourceModuleReferenceResolveTestGenerated.java | 12 ++++++++++++ ...ourceModuleReferenceResolveTestGenerated.java | 12 ++++++++++++ .../kotlinPackage/kotlinPackageAllowed.kt | 13 +++++++++++++ .../kotlinPackage/kotlinPackageAllowed.txt | 2 ++ .../kotlinPackage/kotlinPackageNotAllowed.kt | 16 ++++++++++++++++ .../services/libraries/CompilerExecutor.kt | 6 +++++- 9 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt create mode 100644 analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.txt create mode 100644 analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index dced2a1c26b..35a01777dc2 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -2073,6 +2073,18 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("kotlinPackageAllowed.kt") + public void testKotlinPackageAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt"); + } + + @Test + @TestMetadata("kotlinPackageNotAllowed.kt") + public void testKotlinPackageNotAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt"); + } + @Test @TestMetadata("kotlinxPackage.kt") public void testKotlinxPackage() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java index 24b593caa7c..e217f9fd0cf 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -2073,6 +2073,18 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("kotlinPackageAllowed.kt") + public void testKotlinPackageAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt"); + } + + @Test + @TestMetadata("kotlinPackageNotAllowed.kt") + public void testKotlinPackageNotAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt"); + } + @Test @TestMetadata("kotlinxPackage.kt") public void testKotlinxPackage() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java index 8208091c044..02c24621ed7 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java @@ -1917,6 +1917,18 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true, "withErrors"); } + @Test + @TestMetadata("kotlinPackageAllowed.kt") + public void testKotlinPackageAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt"); + } + + @Test + @TestMetadata("kotlinPackageNotAllowed.kt") + public void testKotlinPackageNotAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt"); + } + @Test @TestMetadata("kotlinxPackage.kt") public void testKotlinxPackage() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index abf17e693ce..8a0498daee2 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -2073,6 +2073,18 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("kotlinPackageAllowed.kt") + public void testKotlinPackageAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt"); + } + + @Test + @TestMetadata("kotlinPackageNotAllowed.kt") + public void testKotlinPackageNotAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt"); + } + @Test @TestMetadata("kotlinxPackage.kt") public void testKotlinxPackage() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 753ed08e4af..068c6f3ce32 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -2073,6 +2073,18 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/kotlinPackage"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("kotlinPackageAllowed.kt") + public void testKotlinPackageAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt"); + } + + @Test + @TestMetadata("kotlinPackageNotAllowed.kt") + public void testKotlinPackageNotAllowed() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt"); + } + @Test @TestMetadata("kotlinxPackage.kt") public void testKotlinxPackage() throws Exception { diff --git a/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt new file mode 100644 index 00000000000..2a52e93e4cf --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.kt @@ -0,0 +1,13 @@ +// ALLOW_KOTLIN_PACKAGE +// FILE: a.kt +package kotlin.pckg + +fun foo() { + bar() +} + +// FILE: b.kt +package kotlin.pckg + +fun bar() { +} diff --git a/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.txt b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.txt new file mode 100644 index 00000000000..0a04f6ff846 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageAllowed.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in kotlin.pckg) fun bar() diff --git a/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt new file mode 100644 index 00000000000..a4b4d965d0b --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/kotlinPackage/kotlinPackageNotAllowed.kt @@ -0,0 +1,16 @@ +// FE1.0 can resolve to `kotlin` package when it's not allowed +// IGNORE_FE10 +// UNRESOLVED_REFERENCE +// COMPILATION_ERRORS +// FILE: a.kt +package kotlin.pckg + +fun foo() { + bar() +} + +// FILE: b.kt +package kotlin.pckg + +fun bar() { +} diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/libraries/CompilerExecutor.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/libraries/CompilerExecutor.kt index 03acb0b2dcd..0f0f5303c46 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/libraries/CompilerExecutor.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/libraries/CompilerExecutor.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.analysis.test.framework.services.libraries import org.jetbrains.kotlin.analysis.test.framework.utils.SkipTestException import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.cliArgument +import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.test.MockLibraryUtil import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives @@ -59,6 +59,10 @@ object CompilerExecutor { add("-XXLanguage:$it") } + if (LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE in module.directives) { + add(CommonCompilerArguments::allowKotlinPackage.cliArgument) + } + module.directives[JvmEnvironmentConfigurationDirectives.JVM_TARGET].firstOrNull()?.let { jvmTarget -> addAll(listOf(K2JVMCompilerArguments::jvmTarget.cliArgument, jvmTarget.description))