[analysis] introduce KtBuiltinsModule and remove hacks related to the stdlib module search

This commit is contained in:
Ilya Kirillov
2022-07-18 23:07:06 +02:00
parent dc4527462f
commit dd00062559
29 changed files with 152 additions and 187 deletions
@@ -10,14 +10,11 @@ import com.intellij.psi.PsiFileSystemItem
import com.intellij.psi.PsiJavaFile
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory.findJvmRootsForJavaFiles
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.platform.TargetPlatform
data class KtModuleProjectStructure(
val mainModules: List<KtModuleWithFiles>,
val binaryModules: Iterable<KtBinaryModule>,
val stdlibFor: (TargetPlatform) -> KtLibraryModule,
) {
fun allKtModules(): List<KtModule> = buildList {
mainModules.mapTo(this) { it.ktModule }
@@ -23,8 +23,4 @@ class KtStaticModuleProvider(
override fun getKtBinaryModules(): Collection<KtBinaryModule> {
return projectStructure.allKtModules().filterIsInstance<KtBinaryModule>()
}
override fun getStdlibWithBuiltinsModule(platform: TargetPlatform): KtLibraryModule {
return projectStructure.stdlibFor(platform)
}
}
@@ -16,7 +16,6 @@ import kotlin.contracts.contract
public class KtLibraryModuleBuilder : KtBinaryModuleBuilder() {
public lateinit var libraryName: String
public var librarySources: KtLibrarySourceModule? = null
public var isBuiltinsContainingStdlib: Boolean = false
override fun build(): KtLibraryModule {
return KtLibraryModuleImpl(
@@ -29,7 +28,6 @@ public class KtLibraryModuleBuilder : KtBinaryModuleBuilder() {
binaryRoots,
libraryName,
librarySources,
isBuiltinsContainingStdlib,
)
}
}
@@ -24,7 +24,6 @@ internal class KtLibraryModuleImpl(
private val binaryRoots: Collection<Path>,
override val libraryName: String,
override val librarySources: KtLibrarySourceModule?,
internal val isBuiltinsContainingStdlib: Boolean,
) : KtLibraryModule, KtModuleWithPlatform {
override val analyzerServices: PlatformDependentAnalyzerServices = super.analyzerServices
@@ -38,12 +38,6 @@ internal class KtModuleProviderImpl(
return binaryModules
}
override fun getStdlibWithBuiltinsModule(platform: TargetPlatform): KtLibraryModule? {
return binaryModules
.filterIsInstance<KtLibraryModuleImpl>()
.firstOrNull { it.isBuiltinsContainingStdlib && it.platform == platform }
}
internal fun allSourceFiles(): List<PsiFileSystemItem> = buildList {
val files = mainModules.mapNotNull { (it as? KtSourceModuleImpl)?.sourceRoots }.flatten()
addAll(files)
@@ -130,9 +130,6 @@ internal fun buildKtModuleProviderByCompilerConfiguration(
this.project = project
binaryRoots = listOf(root)
libraryName = getNameWithoutExtension(root.toString())
isBuiltinsContainingStdlib =
libraryName.startsWith("kotlin-stdlib") &&
!libraryName.contains("common") && !libraryName.contains("jdk")
}
)
}