AA: one representative lib module from compiler configuration

Split lib modules, which will be useful for reusable lib modules (if
there are multiple source modules that depend on same lib modules), are
not quite necessary for a project structure built from compiler
configuration. Those rather trigger OOM if lib modules' scopes are not
disjoint.
This commit is contained in:
Jinseong Jeon
2022-09-09 01:04:21 -07:00
committed by Ilya Kirillov
parent e5b75dcd72
commit 5721b3b73c
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.analysis.project.structure.impl package org.jetbrains.kotlin.analysis.project.structure.impl
import com.google.common.io.Files.getFileExtension import com.google.common.io.Files.getFileExtension
import com.google.common.io.Files.getNameWithoutExtension
import com.intellij.ide.highlighter.JavaFileType import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.StandardFileSystems
@@ -158,33 +157,15 @@ internal fun buildKtModuleProviderByCompilerConfiguration(
val moduleName = compilerConfig.get(CommonConfigurationKeys.MODULE_NAME) ?: "<no module name provided>" val moduleName = compilerConfig.get(CommonConfigurationKeys.MODULE_NAME) ?: "<no module name provided>"
val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots
val (directories, jars) = libraryRoots.partition { it.isDirectory } addRegularDependency(
directories.forEach { buildKtLibraryModule {
// E.g., project/app/build/intermediates/javac/debug/classes contentScope = ProjectScope.getLibrariesScope(project)
val root = it.toPath() this.platform = platform
addRegularDependency( this.project = project
buildKtLibraryModule { binaryRoots = libraryRoots.map { it.toPath() }
contentScope = ProjectScope.getLibrariesScope(project) libraryName = "Library for $moduleName"
this.platform = platform }
this.project = project )
binaryRoots = listOf(root)
libraryName = "$moduleName-${root.toString().replace("/", "-")}"
}
)
}
jars.forEach {
// E.g., project/libs/libA/a.jar
val root = it.toPath()
addRegularDependency(
buildKtLibraryModule {
contentScope = ProjectScope.getLibrariesScope(project)
this.platform = platform
this.project = project
binaryRoots = listOf(root)
libraryName = getNameWithoutExtension(root.toString())
}
)
}
compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome -> compilerConfig.get(JVMConfigurationKeys.JDK_HOME)?.let { jdkHome ->
val vfm = VirtualFileManager.getInstance() val vfm = VirtualFileManager.getInstance()
val jdkHomePath = jdkHome.toPath() val jdkHomePath = jdkHome.toPath()