diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index 9602653bc60..eb055c34193 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -117,6 +117,8 @@ interface TrackableModuleInfo : ModuleInfo { fun createModificationTracker(): ModificationTracker } +interface LibraryModuleSourceInfoBase : ModuleInfo + interface LibraryModuleInfo : ModuleInfo { override val platform: TargetPlatform diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt index 7556c6b67c6..312e15a479f 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirModuleResolveStateConfigurator.kt @@ -39,5 +39,5 @@ abstract class FirModuleResolveStateConfigurator { val Project.stateConfigurator: FirModuleResolveStateConfigurator get() = ServiceManager.getService(this, FirModuleResolveStateConfigurator::class.java) -internal fun KtElement.getModuleInfo(): ModuleInfo = +fun KtElement.getModuleInfo(): ModuleInfo = project.stateConfigurator.getModuleInfoFor(this) \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt index e7c4f764966..0f775e8cba7 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/IDEKotlinAsJavaFirSupport.kt @@ -10,12 +10,15 @@ import com.intellij.openapi.util.Key import com.intellij.psi.PsiClass import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.SmartList +import org.jetbrains.kotlin.analyzer.LibraryModuleInfo +import org.jetbrains.kotlin.analyzer.LibraryModuleSourceInfoBase import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightFacade +import org.jetbrains.kotlin.idea.fir.low.level.api.api.getModuleInfo import org.jetbrains.kotlin.idea.fir.low.level.api.createDeclarationProvider import org.jetbrains.kotlin.idea.fir.low.level.api.createPackageProvider import org.jetbrains.kotlin.name.ClassId @@ -66,6 +69,12 @@ class IDEKotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupp override fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection = fqName.toClassIdSequence().flatMap { project.createDeclarationProvider(searchScope).getClassesByClassId(it) + }.filter { + //TODO Do not return LC came from LibrarySources + when (it.getModuleInfo()) { + is LibraryModuleSourceInfoBase -> it.containingKtFile.isCompiled + else -> true + } }.toSet() override fun packageExists(fqName: FqName, scope: GlobalSearchScope): Boolean =