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:
@@ -39,10 +39,11 @@ object GenerationUtils {
|
||||
|
||||
@JvmStatic
|
||||
fun compileFiles(files: List<KtFile>, environment: KotlinCoreEnvironment?): GenerationState {
|
||||
val packagePartProvider = if (environment == null) PackagePartProvider.Empty else JvmPackagePartProvider(environment)
|
||||
val configuration = environment?.configuration ?: KotlinTestUtils.newConfiguration()
|
||||
|
||||
val analysisResult = JvmResolveUtil.analyzeAndCheckForErrors(files.first().project, files, configuration, packagePartProvider)
|
||||
val analysisResult = JvmResolveUtil.analyzeAndCheckForErrors(files.first().project, files, configuration) { scope ->
|
||||
if (environment == null) PackagePartProvider.Empty else JvmPackagePartProvider(environment, scope)
|
||||
}
|
||||
analysisResult.throwIfError()
|
||||
|
||||
val state = GenerationState(
|
||||
|
||||
@@ -18,7 +18,9 @@ package org.jetbrains.kotlin.jvm.compiler;
|
||||
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import junit.framework.ComparisonFailure;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
|
||||
@@ -29,10 +31,7 @@ import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.config.ContentRootsKt;
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.psi.KtFile;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
@@ -155,12 +154,17 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
||||
JvmContentRootsKt.addJavaSourceRoot(configuration, new File("compiler/testData/loadJava/include"));
|
||||
JvmContentRootsKt.addJavaSourceRoot(configuration, tmpdir);
|
||||
|
||||
KotlinCoreEnvironment environment =
|
||||
final KotlinCoreEnvironment environment =
|
||||
KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
|
||||
|
||||
AnalysisResult result = TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
|
||||
environment.getProject(), environment.getSourceFiles(), new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(),
|
||||
configuration, new JvmPackagePartProvider(environment)
|
||||
configuration, new Function1<GlobalSearchScope, PackagePartProvider>() {
|
||||
@Override
|
||||
public PackagePartProvider invoke(GlobalSearchScope scope) {
|
||||
return new JvmPackagePartProvider(environment, scope);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
PackageViewDescriptor packageView = result.getModuleDescriptor().getPackage(TEST_PACKAGE_FQNAME);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.resolve.lazy
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
|
||||
@@ -34,14 +35,16 @@ object JvmResolveUtil {
|
||||
|
||||
@JvmStatic
|
||||
fun analyzeAndCheckForErrors(files: Collection<KtFile>, environment: KotlinCoreEnvironment): AnalysisResult =
|
||||
analyzeAndCheckForErrors(environment.project, files, environment.configuration, JvmPackagePartProvider(environment))
|
||||
analyzeAndCheckForErrors(environment.project, files, environment.configuration) { scope ->
|
||||
JvmPackagePartProvider(environment, scope)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun analyzeAndCheckForErrors(
|
||||
project: Project,
|
||||
files: Collection<KtFile>,
|
||||
configuration: CompilerConfiguration,
|
||||
packagePartProvider: PackagePartProvider
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider
|
||||
): AnalysisResult {
|
||||
for (file in files) {
|
||||
AnalyzingUtils.checkForSyntacticErrors(file)
|
||||
@@ -62,16 +65,18 @@ object JvmResolveUtil {
|
||||
|
||||
@JvmStatic
|
||||
fun analyze(files: Collection<KtFile>, environment: KotlinCoreEnvironment): AnalysisResult =
|
||||
analyze(environment.project, files, environment.configuration, JvmPackagePartProvider(environment))
|
||||
analyze(environment.project, files, environment.configuration) { scope ->
|
||||
JvmPackagePartProvider(environment, scope)
|
||||
}
|
||||
|
||||
private fun analyze(
|
||||
project: Project,
|
||||
files: Collection<KtFile>,
|
||||
configuration: CompilerConfiguration,
|
||||
packagePartProvider: PackagePartProvider
|
||||
packagePartProviderFactory: (GlobalSearchScope) -> PackagePartProvider
|
||||
): AnalysisResult {
|
||||
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
|
||||
project, files, CliLightClassGenerationSupport.CliBindingTrace(), configuration, packagePartProvider
|
||||
project, files, CliLightClassGenerationSupport.CliBindingTrace(), configuration, packagePartProviderFactory
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user