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 1ae7a934934..0aef68252cd 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 @@ -2057,6 +2057,12 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte runTest("analysis/analysis-api/testData/referenceResolve/withErrors/AnnotationParameter.kt"); } + @Test + @TestMetadata("BuiltInImportsNoRuntime.kt") + public void testBuiltInImportsNoRuntime() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt"); + } + @Test @TestMetadata("ByReturnExpression.kt") public void testByReturnExpression() 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 b7b65a9ed1e..0d564ee9548 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 @@ -2057,6 +2057,12 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex runTest("analysis/analysis-api/testData/referenceResolve/withErrors/AnnotationParameter.kt"); } + @Test + @TestMetadata("BuiltInImportsNoRuntime.kt") + public void testBuiltInImportsNoRuntime() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt"); + } + @Test @TestMetadata("ByReturnExpression.kt") public void testByReturnExpression() 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 adcfefb5154..3550b28db88 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 @@ -2057,6 +2057,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten runTest("analysis/analysis-api/testData/referenceResolve/withErrors/AnnotationParameter.kt"); } + @Test + @TestMetadata("BuiltInImportsNoRuntime.kt") + public void testBuiltInImportsNoRuntime() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt"); + } + @Test @TestMetadata("ByReturnExpression.kt") public void testByReturnExpression() throws Exception { diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt index 60936ddab7d..4ee7f47dca0 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt @@ -30,9 +30,6 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() { override fun configureTest(builder: TestConfigurationBuilder) { super.configureTest(builder) with(builder) { - defaultDirectives { - +ConfigurationDirectives.WITH_STDLIB - } useDirectives(Directives) forTestsMatching("analysis/analysis-api/testData/referenceResolve/kDoc/*") { defaultDirectives { @@ -40,6 +37,12 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() { +AnalysisApiTestDirectives.IGNORE_FE10 } } + forTestsMatching("analysis/analysis-api/testData/referenceResolve/kDoc/qualified/stdlib/*") { + defaultDirectives { + +ConfigurationDirectives.WITH_STDLIB + } + } + } } diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt index b8281889d1e..22d6f1843ef 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt @@ -27,7 +27,9 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisA import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFileClassProvider +import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.NO_RUNTIME import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.moduleStructure object AnalysisApiBaseTestServiceRegistrar: AnalysisApiTestServiceRegistrar() { override fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices) {} @@ -78,7 +80,8 @@ object AnalysisApiBaseTestServiceRegistrar: AnalysisApiTestServiceRegistrar() { KotlinDeclarationProviderFactory::class.java, KotlinStaticDeclarationProviderFactory( project, allKtFiles, - additionalRoots = roots + additionalRoots = roots, + skipBuiltins = testServices.moduleStructure.allDirectives.contains(NO_RUNTIME), ) ) } finally { diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticDeclarationProvider.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticDeclarationProvider.kt index d3ff716822b..451c4f0ebbb 100644 --- a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticDeclarationProvider.kt +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticDeclarationProvider.kt @@ -127,6 +127,7 @@ public class KotlinStaticDeclarationProviderFactory( files: Collection, private val jarFileSystem: CoreJarFileSystem = CoreJarFileSystem(), additionalRoots: List = emptyList(), + skipBuiltins: Boolean = false, ) : KotlinDeclarationProviderFactory() { private val index = KotlinStaticDeclarationIndex() @@ -299,9 +300,11 @@ public class KotlinStaticDeclarationProviderFactory( } val builtins = mutableSetOf() - loadBuiltIns().forEach { stub -> - processStub(stub) - builtins.add(stub.psi.virtualFile.name) + if (!skipBuiltins) { + loadBuiltIns().forEach { stub -> + processStub(stub) + builtins.add(stub.psi.virtualFile.name) + } } val binaryClassCache = ClsKotlinBinaryClassCache.getInstance() 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 1495814ebe0..7b2dce20b03 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 @@ -2057,6 +2057,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate runTest("analysis/analysis-api/testData/referenceResolve/withErrors/AnnotationParameter.kt"); } + @Test + @TestMetadata("BuiltInImportsNoRuntime.kt") + public void testBuiltInImportsNoRuntime() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt"); + } + @Test @TestMetadata("ByReturnExpression.kt") public void testByReturnExpression() throws Exception { diff --git a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/suspendFunctionValueParameterNoStdlib.txt b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/suspendFunctionValueParameterNoStdlib.txt index 9cc8d64b973..a8f329423ab 100644 --- a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/suspendFunctionValueParameterNoStdlib.txt +++ b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forDeclaration/suspendFunctionValueParameterNoStdlib.txt @@ -1,2 +1,2 @@ -KtType: suspend (kotlin.Int) -> kotlin.Unit -PsiType: PsiType:Function2, ? extends Object> +KtType: suspend (Int) -> Unit +PsiType: null diff --git a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFile.kt b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFile.kt index fed1c031c64..10099693d8f 100644 --- a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFile.kt +++ b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFile.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB @file:kotlin.jvm.JvmName("Name") package foo diff --git a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFileWithUnresolvedReference.kt b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFileWithUnresolvedReference.kt index 78d06c80f32..dc9fec820e3 100644 --- a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFileWithUnresolvedReference.kt +++ b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFileWithUnresolvedReference.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB @file:kotlin.jvm.JvmName23("Name") package foo diff --git a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunction.kt b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunction.kt index f9b363d759c..75ea22eb32e 100644 --- a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunction.kt +++ b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunction.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB package foo @kotlin.jvm.JvmName("Name") diff --git a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunctionWithUnresolvedReference.kt b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunctionWithUnresolvedReference.kt index b2b0a2c2213..87ea92a4441 100644 --- a/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunctionWithUnresolvedReference.kt +++ b/analysis/analysis-api/testData/referenceResolve/PackageFromAnnotationOnFunctionWithUnresolvedReference.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB package foo @kotlin.jvm.JvmName2("Name") diff --git a/analysis/analysis-api/testData/referenceResolve/arrayAccess/get.kt b/analysis/analysis-api/testData/referenceResolve/arrayAccess/get.kt index 7cb3d4b828f..d67949bce61 100644 --- a/analysis/analysis-api/testData/referenceResolve/arrayAccess/get.kt +++ b/analysis/analysis-api/testData/referenceResolve/arrayAccess/get.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB fun a () { val list = mutableListOf(1) println(list[0]) diff --git a/analysis/analysis-api/testData/referenceResolve/arrayAccess/set.kt b/analysis/analysis-api/testData/referenceResolve/arrayAccess/set.kt index 4785068eca6..544fd976f0f 100644 --- a/analysis/analysis-api/testData/referenceResolve/arrayAccess/set.kt +++ b/analysis/analysis-api/testData/referenceResolve/arrayAccess/set.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB fun a () { val list = mutableListOf(1) list[0] = 1 diff --git a/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedFile.kt b/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedFile.kt index df2ed343ed6..1231cbe3dc5 100644 --- a/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedFile.kt +++ b/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedFile.kt @@ -1,2 +1,3 @@ +// WITH_STDLIB // COMPILATION_ERRORS @kotlin.jvm.JvmName("") diff --git a/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedPackageFile.kt b/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedPackageFile.kt index 08e8c8c94ef..216abfa16d9 100644 --- a/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedPackageFile.kt +++ b/analysis/analysis-api/testData/referenceResolve/danglingAnnotations/DanglingAnnotationsResolvedPackageFile.kt @@ -1,2 +1,3 @@ +// WITH_STDLIB // COMPILATION_ERRORS @kotlin.jvm.JvmName("") diff --git a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/lazy.kt b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/lazy.kt index 8e06bfd4eaa..f681c142ea3 100644 --- a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/lazy.kt +++ b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/lazy.kt @@ -1 +1,2 @@ +// WITH_STDLIB val x: Int by lazy {1} diff --git a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.kt b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.kt index 4d1262fa5e1..0eaed81d0b3 100644 --- a/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.kt +++ b/analysis/analysis-api/testData/referenceResolve/delegatedPropertyAccessors/inStandardLibrary/notNull.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB import kotlin.properties.Delegates var x: Int by Delegates.notNull() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/forLoopIn/inBuiltIns/extension.kt b/analysis/analysis-api/testData/referenceResolve/forLoopIn/inBuiltIns/extension.kt index 4008b73e3ea..482f1786902 100644 --- a/analysis/analysis-api/testData/referenceResolve/forLoopIn/inBuiltIns/extension.kt +++ b/analysis/analysis-api/testData/referenceResolve/forLoopIn/inBuiltIns/extension.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB fun main(it: Iterator) { for (i in it.iterator()) {} } \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/forLoopIn/inLibrary/extension.kt b/analysis/analysis-api/testData/referenceResolve/forLoopIn/inLibrary/extension.kt index 535b9f8c433..82409665e58 100644 --- a/analysis/analysis-api/testData/referenceResolve/forLoopIn/inLibrary/extension.kt +++ b/analysis/analysis-api/testData/referenceResolve/forLoopIn/inLibrary/extension.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB fun main() { for (i in "") {} } \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/inImport/kotlinClass.kt b/analysis/analysis-api/testData/referenceResolve/inImport/kotlinClass.kt index 1b6d8985a7a..2dc045fa163 100644 --- a/analysis/analysis-api/testData/referenceResolve/inImport/kotlinClass.kt +++ b/analysis/analysis-api/testData/referenceResolve/inImport/kotlinClass.kt @@ -1 +1,2 @@ +// WITH_STDLIB import kotlin.collections.MutableList \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/inImport/kotlinTopLevelFunction.kt b/analysis/analysis-api/testData/referenceResolve/inImport/kotlinTopLevelFunction.kt index d6762f8bb72..ca050d16933 100644 --- a/analysis/analysis-api/testData/referenceResolve/inImport/kotlinTopLevelFunction.kt +++ b/analysis/analysis-api/testData/referenceResolve/inImport/kotlinTopLevelFunction.kt @@ -1 +1,2 @@ +// WITH_STDLIB import kotlin.collections.mutableListOf diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/imports/TypeAliasedImport.kt b/analysis/analysis-api/testData/referenceResolve/kDoc/imports/TypeAliasedImport.kt index 3d953eb3e14..940ef676c16 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/imports/TypeAliasedImport.kt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/imports/TypeAliasedImport.kt @@ -1,3 +1,4 @@ +// WITH_STDLIB import kotlin.collections.listOf as lst /** diff --git a/analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt b/analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt new file mode 100644 index 00000000000..6f421584221 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/withErrors/BuiltInImportsNoRuntime.kt @@ -0,0 +1,4 @@ +// NO_RUNTIME +// UNRESOLVED_REFERENCE +// IGNORE_FE10 +val (x) \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultSimpleImportingScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultSimpleImportingScope.kt index 0bffd149807..96ceebdb0ce 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultSimpleImportingScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultSimpleImportingScope.kt @@ -21,7 +21,7 @@ class FirDefaultSimpleImportingScope( ) : FirAbstractSimpleImportingScope(session, scopeSession) { private fun FirImport.resolve(importResolveTransformer: FirImportResolveTransformer) = - importResolveTransformer.transformImport(this, null) as FirResolvedImport + importResolveTransformer.transformImport(this, null) as? FirResolvedImport override val simpleImports = run { val importResolveTransformer = FirImportResolveTransformer(session) @@ -34,6 +34,6 @@ class FirDefaultSimpleImportingScope( importedFqName = it.fqName isAllUnder = false }.resolve(importResolveTransformer) - }?.groupBy { it.importedName!! } ?: emptyMap() + }?.filterNotNull()?.groupBy { it.importedName!! } ?: emptyMap() } }