Analysis API: introduce Project Structure

This commit is contained in:
Ilya Kirillov
2021-09-16 00:21:28 +02:00
parent c9348b3512
commit 678b931ba3
49 changed files with 952 additions and 391 deletions
@@ -10,6 +10,7 @@ dependencies {
implementation(project(":compiler:light-classes"))
implementation(project(":analysis:analysis-api-providers"))
implementation(project(":analysis:analysis-api"))
implementation(project(":analysis:project-structure"))
implementation(intellijCoreDep()) { includeJars("intellij-core", rootProject = rootProject) }
}
@@ -8,11 +8,12 @@ package org.jetbrains.kotlin.light.classes.symbol
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiClass
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
import org.jetbrains.kotlin.analysis.project.structure.KtNotUnderContentRootModule
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
import org.jetbrains.kotlin.analysis.providers.createPackageProvider
import org.jetbrains.kotlin.analysis.providers.getModuleInfo
import org.jetbrains.kotlin.analyzer.LibraryModuleSourceInfoBase
import org.jetbrains.kotlin.analyzer.NonSourceModuleInfoBase
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClass
@@ -68,15 +69,15 @@ class IDEKotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupp
project.createDeclarationProvider(searchScope).getClassesByClassId(it)
}.filter {
//TODO Do not return LC came from LibrarySources
when (it.getModuleInfo()) {
is LibraryModuleSourceInfoBase -> it.containingKtFile.isCompiled
is NonSourceModuleInfoBase -> false
when (it.getKtModule(project)) {
is KtLibrarySourceModule -> false
is KtNotUnderContentRootModule -> false
else -> true
}
}.toSet()
override fun packageExists(fqName: FqName, scope: GlobalSearchScope): Boolean =
project.createPackageProvider(scope).isPackageExists(fqName)
project.createPackageProvider(scope).doKotlinPackageExists(fqName)
override fun getSubPackages(fqn: FqName, scope: GlobalSearchScope): Collection<FqName> =
project.createPackageProvider(scope)