Remove useless InjectorForLazyResolveWithJavaUtil, move methods to LazyResolveTestUtil

This commit is contained in:
Alexander Udalov
2015-02-11 16:04:07 +03:00
parent 9f74d64d03
commit 29c501e813
10 changed files with 58 additions and 127 deletions
@@ -172,7 +172,7 @@ public class InjectorForLazyResolveWithJava {
this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl();
this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; this.samConversionResolver = SamConversionResolverImpl.INSTANCE$;
this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); this.javaSourceElementFactory = new JavaSourceElementFactoryImpl();
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver); this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver);
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
@@ -220,9 +220,9 @@ public class InjectorForLazyResolveWithJava {
scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider);
scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); scopeProvider.setDeclarationScopeProvider(declarationScopeProvider);
this.javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct);
this.javaClassFinder.setProject(project); javaClassFinder.setProject(project);
this.javaClassFinder.setScope(moduleContentScope); javaClassFinder.setScope(moduleContentScope);
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
traceBasedExternalSignatureResolver.setProject(project); traceBasedExternalSignatureResolver.setProject(project);
@@ -329,8 +329,4 @@ public class InjectorForLazyResolveWithJava {
return this.javaDescriptorResolver; return this.javaDescriptorResolver;
} }
public JavaClassFinderImpl getJavaClassFinder() {
return this.javaClassFinder;
}
} }
@@ -1,62 +0,0 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.di;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.context.ContextPackage;
import org.jetbrains.kotlin.context.GlobalContextImpl;
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver;
import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory;
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService;
import java.util.Collections;
public class InjectorForLazyResolveWithJavaUtil {
@NotNull
public static InjectorForLazyResolveWithJava create(@NotNull Project project, @NotNull BindingTrace trace, boolean dependOnBuiltins) {
ModuleDescriptorImpl module = TopDownAnalyzerFacadeForJVM.createJavaModule("<module>");
GlobalSearchScope moduleContentScope = GlobalSearchScope.allScope(project);
GlobalContextImpl globalContext = ContextPackage.GlobalContext();
DeclarationProviderFactory declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory(
project, globalContext.getStorageManager(), Collections.<JetFile>emptyList(), moduleContentScope
);
SingleModuleClassResolver resolver = new SingleModuleClassResolver();
InjectorForLazyResolveWithJava injector = new InjectorForLazyResolveWithJava(
project, globalContext, trace, module, declarationProviderFactory, moduleContentScope, resolver
);
resolver.setResolver(injector.getJavaDescriptorResolver());
module.addDependencyOnModule(module);
module.initialize(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
if (dependOnBuiltins) {
module.addDependencyOnModule(KotlinBuiltIns.getInstance().getBuiltInsModule());
}
module.seal();
return injector;
}
}
@@ -25,19 +25,20 @@ import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies; import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil;
import org.jetbrains.kotlin.load.java.JavaBindingContext; import org.jetbrains.kotlin.load.java.JavaBindingContext;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap; import org.jetbrains.kotlin.platform.JavaToKotlinClassMap;
import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.renderer.DescriptorRenderer;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.jvm.kotlinSignature.TypeTransformingVisitor; import org.jetbrains.kotlin.resolve.jvm.kotlinSignature.TypeTransformingVisitor;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
import java.io.IOException; import java.io.IOException;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -75,9 +76,9 @@ public abstract class AbstractSdkAnnotationsValidityTest extends UsefulTestCase
JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable); JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable);
BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
InjectorForLazyResolveWithJava injector = ModuleDescriptor module = LazyResolveTestUtil.resolve(
InjectorForLazyResolveWithJavaUtil.create(commonEnvironment.getProject(), trace, false); commonEnvironment.getProject(), trace, Collections.<JetFile>emptyList()
ModuleDescriptor module = injector.getModule(); );
AlternativeSignatureErrorFindingVisitor visitor = AlternativeSignatureErrorFindingVisitor visitor =
new AlternativeSignatureErrorFindingVisitor(trace.getBindingContext(), errors); new AlternativeSignatureErrorFindingVisitor(trace.getBindingContext(), errors);
@@ -33,15 +33,15 @@ import org.jetbrains.kotlin.codegen.GenerationUtils;
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; import org.jetbrains.kotlin.descriptors.PackageViewDescriptor;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.JetTestUtils;
import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.test.TestJdkKind;
@@ -50,6 +50,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import static org.jetbrains.kotlin.test.JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations; import static org.jetbrains.kotlin.test.JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations;
@@ -89,13 +90,13 @@ public final class LoadDescriptorUtil {
javaRoot, javaRoot,
new File("compiler/tests") // for @ExpectLoadError annotation new File("compiler/tests") // for @ExpectLoadError annotation
); );
JetCoreEnvironment jetCoreEnvironment = JetCoreEnvironment environment =
JetCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); JetCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
InjectorForLazyResolveWithJava injector =
InjectorForLazyResolveWithJavaUtil.create(jetCoreEnvironment.getProject(), trace, true);
PackageViewDescriptor packageView = injector.getModule().getPackage(TEST_PACKAGE_FQNAME); BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
ModuleDescriptor module = LazyResolveTestUtil.resolve(environment.getProject(), trace, Collections.<JetFile>emptyList());
PackageViewDescriptor packageView = module.getPackage(TEST_PACKAGE_FQNAME);
assert packageView != null; assert packageView != null;
return Pair.create(packageView, trace.getBindingContext()); return Pair.create(packageView, trace.getBindingContext());
@@ -30,10 +30,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.resolve.BindingTraceContext; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.JetTestUtils;
import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.test.TestJdkKind;
@@ -178,8 +177,7 @@ public class ResolveDescriptorsFromExternalLibraries {
} }
} }
InjectorForLazyResolveWithJava injector = ModuleDescriptor module = LazyResolveTestUtil.resolveProject(jetCoreEnvironment.getProject());
InjectorForLazyResolveWithJavaUtil.create(jetCoreEnvironment.getProject(), new BindingTraceContext(), false);
boolean hasErrors; boolean hasErrors;
try { try {
@@ -211,7 +209,7 @@ public class ResolveDescriptorsFromExternalLibraries {
String className = entryName.substring(0, entryName.length() - ".class".length()).replace("/", "."); String className = entryName.substring(0, entryName.length() - ".class".length()).replace("/", ".");
try { try {
ClassDescriptor clazz = resolveTopLevelClass(injector.getModule(), new FqName(className)); ClassDescriptor clazz = resolveTopLevelClass(module, new FqName(className));
if (clazz == null) { if (clazz == null) {
throw new IllegalStateException("class not found by name " + className + " in " + libDescription); throw new IllegalStateException("class not found by name " + className + " in " + libDescription);
} }
@@ -20,33 +20,28 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.*; import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava;
import org.jetbrains.kotlin.di.InjectorForTests; import org.jetbrains.kotlin.di.InjectorForTests;
import org.jetbrains.kotlin.load.java.structure.JavaClass;
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl;
import org.jetbrains.kotlin.name.ClassId;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResults; import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResults;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo; import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.JetTestUtils;
import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.JetType;
import org.jetbrains.kotlin.types.TypeUtils; import org.jetbrains.kotlin.types.TypeUtils;
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext; import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext;
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices;
import org.junit.Assert;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.intellij.testFramework.UsefulTestCase.assertInstanceOf; import static org.junit.Assert.assertNotNull;
public class JetExpectedResolveDataUtil { public class JetExpectedResolveDataUtil {
private JetExpectedResolveDataUtil() { private JetExpectedResolveDataUtil() {
@@ -91,7 +86,7 @@ public class JetExpectedResolveDataUtil {
nameToDeclaration.put("java::java.io.PrintStream.print(char[])", methods[6]); nameToDeclaration.put("java::java.io.PrintStream.print(char[])", methods[6]);
nameToDeclaration.put("java::java.io.PrintStream.print(Double)", methods[5]); nameToDeclaration.put("java::java.io.PrintStream.print(Double)", methods[5]);
PsiField outField = java_lang_System.findFieldByName("out", true); PsiField outField = java_lang_System.findFieldByName("out", true);
Assert.assertNotNull("'out' property wasn't found", outField); assertNotNull("'out' property wasn't found", outField);
nameToDeclaration.put("java::java.lang.System.out", outField); nameToDeclaration.put("java::java.lang.System.out", outField);
PsiClass java_lang_Number = findClass("java.lang.Number", project); PsiClass java_lang_Number = findClass("java.lang.Number", project);
nameToDeclaration.put("java::java.lang.Number", java_lang_Number); nameToDeclaration.put("java::java.lang.Number", java_lang_Number);
@@ -104,7 +99,7 @@ public class JetExpectedResolveDataUtil {
private static PsiElement findPackage(String qualifiedName, Project project) { private static PsiElement findPackage(String qualifiedName, Project project) {
JavaPsiFacade javaFacade = JavaPsiFacade.getInstance(project); JavaPsiFacade javaFacade = JavaPsiFacade.getInstance(project);
PsiPackage javaFacadePackage = javaFacade.findPackage(qualifiedName); PsiPackage javaFacadePackage = javaFacade.findPackage(qualifiedName);
Assert.assertNotNull("Package wasn't found: " + qualifiedName, javaFacadePackage); assertNotNull("Package wasn't found: " + qualifiedName, javaFacadePackage);
return javaFacadePackage; return javaFacadePackage;
} }
@@ -116,12 +111,12 @@ public class JetExpectedResolveDataUtil {
@NotNull @NotNull
private static PsiClass findClass(String qualifiedName, Project project) { private static PsiClass findClass(String qualifiedName, Project project) {
BindingTraceContext trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); ModuleDescriptor module = LazyResolveTestUtil.resolveProject(project);
InjectorForLazyResolveWithJava injector = InjectorForLazyResolveWithJavaUtil.create(project, trace, false); ClassDescriptor classDescriptor = DescriptorUtilPackage.resolveTopLevelClass(module, new FqName(qualifiedName));
JavaClass javaClass = injector.getJavaClassFinder().findClass(ClassId.topLevel(new FqName(qualifiedName))); assertNotNull("Class descriptor wasn't resolved: " + qualifiedName, classDescriptor);
Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass); PsiClass psiClass = (PsiClass) DescriptorToSourceUtils.classDescriptorToDeclaration(classDescriptor);
assertInstanceOf(javaClass, JavaClassImpl.class); assertNotNull("Class declaration wasn't found: " + classDescriptor, psiClass);
return ((JavaClassImpl) javaClass).getPsi(); return psiClass;
} }
@NotNull @NotNull
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve.lazy;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport; import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
@@ -33,6 +34,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.TopDownAnalysisParameters; import org.jetbrains.kotlin.resolve.TopDownAnalysisParameters;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -42,27 +44,31 @@ public class LazyResolveTestUtil {
private LazyResolveTestUtil() { private LazyResolveTestUtil() {
} }
public static ModuleDescriptor resolve(List<JetFile> files, JetCoreEnvironment environment) { @NotNull
return doResolve(files, environment); public static ModuleDescriptor resolveProject(@NotNull Project project) {
return resolve(project, Collections.<JetFile>emptyList());
} }
private static ModuleDescriptor doResolve(List<JetFile> files, JetCoreEnvironment environment) { @NotNull
public static ModuleDescriptor resolve(@NotNull Project project, @NotNull List<JetFile> sourceFiles) {
return resolve(project, new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(), sourceFiles);
}
@NotNull
public static ModuleDescriptor resolve(@NotNull Project project, @NotNull BindingTrace trace, @NotNull List<JetFile> sourceFiles) {
ModuleDescriptorImpl module = TopDownAnalyzerFacadeForJVM.createSealedJavaModule();
GlobalContextImpl globalContext = ContextPackage.GlobalContext(); GlobalContextImpl globalContext = ContextPackage.GlobalContext();
TopDownAnalysisParameters params = TopDownAnalysisParameters.create( TopDownAnalysisParameters params = TopDownAnalysisParameters.create(
globalContext.getStorageManager(), globalContext.getStorageManager(),
globalContext.getExceptionTracker(), globalContext.getExceptionTracker(),
Predicates.<PsiFile>alwaysTrue(), Predicates.<PsiFile>alwaysTrue(),
false, false); false, false
BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); );
ModuleDescriptorImpl sharedModule = TopDownAnalyzerFacadeForJVM.createSealedJavaModule();
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental( TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(project, sourceFiles, trace, params, module);
environment.getProject(),
files,
trace,
params, sharedModule);
return sharedModule; return module;
} }
@NotNull @NotNull
@@ -444,7 +444,7 @@ public class JetTestUtils {
} }
} }
} }
LazyResolveTestUtil.resolve(jetFiles, environment); LazyResolveTestUtil.resolve(environment.getProject(), jetFiles);
} }
public static void assertEqualsToFile(@NotNull File expectedFile, @NotNull String actual) { public static void assertEqualsToFile(@NotNull File expectedFile, @NotNull String actual) {
@@ -21,14 +21,11 @@ import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; import org.jetbrains.kotlin.descriptors.PackageViewDescriptor;
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor; import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor;
import org.jetbrains.kotlin.descriptors.impl.ReceiverParameterDescriptorImpl; import org.jetbrains.kotlin.descriptors.impl.ReceiverParameterDescriptorImpl;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava;
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil;
import org.jetbrains.kotlin.di.InjectorForTests; import org.jetbrains.kotlin.di.InjectorForTests;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.JetExpression; import org.jetbrains.kotlin.psi.JetExpression;
@@ -578,8 +575,8 @@ public class JetTypeCheckerTest extends JetLiteFixture {
private WritableScope getDeclarationsScope(String path) throws IOException { private WritableScope getDeclarationsScope(String path) throws IOException {
ModuleDescriptor moduleDescriptor = LazyResolveTestUtil.resolve( ModuleDescriptor moduleDescriptor = LazyResolveTestUtil.resolve(
Collections.singletonList(JetTestUtils.loadJetFile(getProject(), new File(path))), getProject(),
getEnvironment() Collections.singletonList(JetTestUtils.loadJetFile(getProject(), new File(path)))
); );
FqName fqName = new FqName("testData"); FqName fqName = new FqName("testData");
@@ -591,10 +588,9 @@ public class JetTypeCheckerTest extends JetLiteFixture {
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
private WritableScopeImpl addImports(JetScope scope) { private WritableScopeImpl addImports(JetScope scope) {
WritableScopeImpl writableScope = new WritableScopeImpl( WritableScopeImpl writableScope = new WritableScopeImpl(
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports"); scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports"
BindingTraceContext trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); );
InjectorForLazyResolveWithJava injector = InjectorForLazyResolveWithJavaUtil.create(getProject(), trace, true); ModuleDescriptor module = LazyResolveTestUtil.resolveProject(getProject());
ModuleDescriptor module = injector.getModule();
for (ImportPath defaultImport : module.getDefaultImports()) { for (ImportPath defaultImport : module.getDefaultImports()) {
FqName fqName = defaultImport.fqnPart(); FqName fqName = defaultImport.fqnPart();
if (defaultImport.isAllUnder()) { if (defaultImport.isAllUnder()) {
@@ -156,7 +156,7 @@ private fun generatorForLazyResolveWithJava() =
+ ".SERVICE.getInstance(project).create(moduleContentScope)") + ".SERVICE.getInstance(project).create(moduleContentScope)")
) )
publicField<JavaClassFinderImpl>() field<JavaClassFinderImpl>()
field<TraceBasedExternalSignatureResolver>() field<TraceBasedExternalSignatureResolver>()
field<LazyResolveBasedCache>() field<LazyResolveBasedCache>()
field<TraceBasedErrorReporter>() field<TraceBasedErrorReporter>()