Pass GlobalSearchScope instance to JvmPackagePartProvider
Currently behavior is unchanged because the "all project" scope is passed, however in the future this will allow to implement separate modules in the compiler properly
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.jvm.compiler
|
||||
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.util.SmartList
|
||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
@@ -23,12 +24,15 @@ import org.jetbrains.kotlin.descriptors.PackagePartProvider
|
||||
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
|
||||
import java.io.EOFException
|
||||
|
||||
class JvmPackagePartProvider(val env: KotlinCoreEnvironment) : PackagePartProvider {
|
||||
class JvmPackagePartProvider(
|
||||
private val env: KotlinCoreEnvironment,
|
||||
private val scope: GlobalSearchScope
|
||||
) : PackagePartProvider {
|
||||
private val notLoadedRoots by lazy(LazyThreadSafetyMode.NONE) {
|
||||
env.configuration.getList(JVMConfigurationKeys.CONTENT_ROOTS)
|
||||
.filterIsInstance<JvmClasspathRoot>()
|
||||
.mapNotNull { env.contentRootToVirtualFile(it) }
|
||||
.filter { it.findChild("META-INF") != null }
|
||||
.filter { it in scope && it.findChild("META-INF") != null }
|
||||
.toMutableList()
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -408,7 +408,7 @@ object KotlinToJVMBytecodeCompiler {
|
||||
environment.getSourceFiles(),
|
||||
CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(),
|
||||
environment.configuration,
|
||||
JvmPackagePartProvider(environment)
|
||||
{ scope -> JvmPackagePartProvider(environment, scope) }
|
||||
)
|
||||
|
||||
override fun reportEnvironmentErrors() {
|
||||
|
||||
@@ -54,12 +54,13 @@ class CliReplAnalyzerEngine(environment: KotlinCoreEnvironment) {
|
||||
|
||||
this.scriptDeclarationFactory = ScriptMutableDeclarationProviderFactory()
|
||||
|
||||
val moduleContentScope = ProjectScope.getAllScope(environment.project)
|
||||
val container = createContainerForTopDownSingleModuleAnalyzerForJvm(
|
||||
moduleContext,
|
||||
trace,
|
||||
scriptDeclarationFactory,
|
||||
ProjectScope.getAllScope(environment.project),
|
||||
JvmPackagePartProvider(environment)
|
||||
moduleContentScope,
|
||||
JvmPackagePartProvider(environment, moduleContentScope)
|
||||
)
|
||||
|
||||
this.resolveSession = container.get<ResolveSession>()
|
||||
|
||||
Reference in New Issue
Block a user