[FIR IDE] Add LibraryModuleSourceInfoBase and filter out light classes for sources from libraries
This commit is contained in:
@@ -117,6 +117,8 @@ interface TrackableModuleInfo : ModuleInfo {
|
|||||||
fun createModificationTracker(): ModificationTracker
|
fun createModificationTracker(): ModificationTracker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface LibraryModuleSourceInfoBase : ModuleInfo
|
||||||
|
|
||||||
interface LibraryModuleInfo : ModuleInfo {
|
interface LibraryModuleInfo : ModuleInfo {
|
||||||
override val platform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -39,5 +39,5 @@ abstract class FirModuleResolveStateConfigurator {
|
|||||||
val Project.stateConfigurator: FirModuleResolveStateConfigurator
|
val Project.stateConfigurator: FirModuleResolveStateConfigurator
|
||||||
get() = ServiceManager.getService(this, FirModuleResolveStateConfigurator::class.java)
|
get() = ServiceManager.getService(this, FirModuleResolveStateConfigurator::class.java)
|
||||||
|
|
||||||
internal fun KtElement.getModuleInfo(): ModuleInfo =
|
fun KtElement.getModuleInfo(): ModuleInfo =
|
||||||
project.stateConfigurator.getModuleInfoFor(this)
|
project.stateConfigurator.getModuleInfoFor(this)
|
||||||
+9
@@ -10,12 +10,15 @@ import com.intellij.openapi.util.Key
|
|||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.util.SmartList
|
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.KotlinAsJavaSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass
|
import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass
|
||||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||||
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
||||||
import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass
|
import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightClass
|
||||||
import org.jetbrains.kotlin.idea.asJava.classes.getOrCreateFirLightFacade
|
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.createDeclarationProvider
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.createPackageProvider
|
import org.jetbrains.kotlin.idea.fir.low.level.api.createPackageProvider
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
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<KtClassOrObject> =
|
override fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection<KtClassOrObject> =
|
||||||
fqName.toClassIdSequence().flatMap {
|
fqName.toClassIdSequence().flatMap {
|
||||||
project.createDeclarationProvider(searchScope).getClassesByClassId(it)
|
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()
|
}.toSet()
|
||||||
|
|
||||||
override fun packageExists(fqName: FqName, scope: GlobalSearchScope): Boolean =
|
override fun packageExists(fqName: FqName, scope: GlobalSearchScope): Boolean =
|
||||||
|
|||||||
Reference in New Issue
Block a user