Fragment providers added on higher level.

This commit is contained in:
Evgeny Gerashchenko
2013-11-28 18:23:01 +04:00
parent 3f790f5f0c
commit 73114d7e9c
24 changed files with 122 additions and 65 deletions
@@ -103,6 +103,9 @@ public class ReplInterpreter {
true,
Collections.<AnalyzerScriptParameter>emptyList());
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider());
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
module.addFragmentProvider(injector.getJavaPackageFragmentProvider());
List<URL> classpath = Lists.newArrayList();
@@ -285,9 +288,6 @@ public class ReplInterpreter {
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider());
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
// Import a scope that contains all top-level namespaces that come from dependencies
// This makes the namespaces visible at all, does not import themselves
scope.importScope(module.getPackage(FqName.ROOT).getMemberScope());
@@ -0,0 +1,30 @@
/*
* Copyright 2010-2013 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.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.BindingTrace;
public class InjectorForJavaDescriptorResolverUtil {
@NotNull
public static InjectorForJavaDescriptorResolver create(@NotNull Project project, @NotNull BindingTrace bindingTrace) {
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, bindingTrace);
injector.getModule().addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
return injector;
}
}
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationRe
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
@@ -63,12 +64,11 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolv
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
import org.jetbrains.annotations.NotNull;
@@ -99,6 +99,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final NamespaceFactoryImpl namespaceFactory;
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
private final VirtualFileFinder virtualFileFinder;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
@@ -124,12 +125,11 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final JavaTypeTransformer javaTypeTransformer;
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
private final JavaMemberResolver javaMemberResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaTypeParameterResolver javaTypeParameterResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaMemberResolver javaMemberResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaPropertyResolver javaPropertyResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
@@ -161,6 +161,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.namespaceFactory = new NamespaceFactoryImpl();
this.javaPackageFragmentProvider = new JavaPackageFragmentProvider();
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
this.declarationResolver = new DeclarationResolver();
this.annotationResolver = new AnnotationResolver();
@@ -186,12 +187,11 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.javaTypeTransformer = new JavaTypeTransformer();
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
this.javaPackageFragmentProvider = new JavaPackageFragmentProvider();
this.javaMemberResolver = new JavaMemberResolver();
this.javaConstructorResolver = new JavaConstructorResolver();
this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaFunctionResolver = new JavaFunctionResolver();
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
this.javaValueParameterResolver = new JavaValueParameterResolver();
this.javaMemberResolver = new JavaMemberResolver();
this.javaConstructorResolver = new JavaConstructorResolver();
this.javaPropertyResolver = new JavaPropertyResolver();
this.javaSupertypeResolver = new JavaSupertypeResolver();
@@ -251,6 +251,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
namespaceFactory.setPackageFragmentProvider(mutablePackageFragmentProvider);
namespaceFactory.setTrace(bindingTrace);
this.javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
this.javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
this.javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
this.javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
this.javaPackageFragmentProvider.setModule(moduleDescriptor);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
@@ -352,26 +359,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
javaPackageFragmentProvider.setModule(moduleDescriptor);
javaMemberResolver.setClassResolver(javaClassResolver);
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
@@ -383,6 +370,19 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
javaMemberResolver.setClassResolver(javaClassResolver);
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
@@ -440,4 +440,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
return this.moduleDescriptor;
}
public JavaPackageFragmentProvider getJavaPackageFragmentProvider() {
return this.javaPackageFragmentProvider;
}
}
@@ -26,6 +26,7 @@ import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
@@ -83,7 +84,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
@Override
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
BindingTraceContext javaResolverTrace = new BindingTraceContext();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace);
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(fileProject, javaResolverTrace);
return createLazyResolveSession(fileProject, files, javaResolverTrace, injector, true);
}
@@ -106,11 +107,8 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
}
});
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
ModuleDescriptorImpl module = injector.getModule();
module.addFragmentProvider(javaDescriptorResolver.getPackageFragmentProvider());
if (addBuiltIns) {
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
}
@@ -198,6 +196,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
try {
module.addFragmentProvider(injector.getJavaPackageFragmentProvider());
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
@@ -120,8 +120,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
this.trace = storageManager.createSafeTrace(delegationTrace);
this.injector = new InjectorForLazyResolve(project, this, rootDescriptor);
this.module = rootDescriptor;
PackageMemberDeclarationProvider provider = declarationProviderFactory.getPackageMemberDeclarationProvider(FqName.ROOT);
assert provider != null : "No declaration provider for root package in " + rootDescriptor;
this.packages = storageManager.createMemoizedFunctionWithNullableValues(new MemoizedFunctionToNullable<FqName, LazyPackageDescriptor>() {
@Nullable
@@ -133,8 +131,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
this.declarationProviderFactory = declarationProviderFactory;
rootDescriptor.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
this.packageFragmentProvider = new PackageFragmentProvider() {
@NotNull
@Override
@@ -23,6 +23,7 @@ import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
@@ -64,7 +65,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
PackageFragmentDescriptor testPackage = DescriptorUtils.getExactlyOnePackageFragment(
moduleDescriptor, FqName.topLevel(TEST_PACKAGE_NAME));
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(getProject(), new BindingTraceContext());
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), new BindingTraceContext());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
PackageFragmentDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, testPackage);
@@ -144,17 +144,20 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
// we need the same binding trace for resolve from Java and Kotlin
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
BindingTrace trace = support.getTrace();
ModuleDescriptorImpl module = support.getModule();
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
environment.getProject(),
new TopDownAnalysisParameters(
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
trace,
support.getModule());
module);
module.addFragmentProvider(injectorForAnalyzer.getJavaPackageFragmentProvider());
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
PackageViewDescriptor packageView = support.getModule().getPackage(TEST_PACKAGE_FQNAME);
PackageViewDescriptor packageView = module.getPackage(TEST_PACKAGE_FQNAME);
assert packageView != null : "Test namespace not found";
checkJavaPackage(expectedFile, packageView, trace.getBindingContext(), DONT_INCLUDE_METHODS_OF_OBJECT);
@@ -36,6 +36,7 @@ import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies;
import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -95,7 +96,8 @@ public class JdkAnnotationsValidityTest extends UsefulTestCase {
JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable);
BindingTrace trace = new BindingTraceContext();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(commonEnvironment.getProject(), trace);
InjectorForJavaDescriptorResolver injector =
InjectorForJavaDescriptorResolverUtil.create(commonEnvironment.getProject(), trace);
BindingContext bindingContext = trace.getBindingContext();
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
@@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.GenerationUtils;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
@@ -85,7 +86,7 @@ public final class LoadDescriptorUtil {
);
JetCoreEnvironment jetCoreEnvironment = JetCoreEnvironment.createForTests(disposable, configuration);
BindingTraceContext trace = new BindingTraceContext();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(jetCoreEnvironment.getProject(), trace);
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(jetCoreEnvironment.getProject(), trace);
PackageViewDescriptor packageView = injector.getModule().getPackage(TEST_PACKAGE_FQNAME);
assert packageView != null;
@@ -33,6 +33,7 @@ import org.jetbrains.jet.TimeUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
@@ -157,7 +158,7 @@ public class ResolveDescriptorsFromExternalLibraries {
}
}
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(
jetCoreEnvironment.getProject(), new BindingTraceContext());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
@@ -25,13 +25,13 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import java.io.File;
@@ -48,13 +48,11 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
}
protected void doTest(@NotNull String testFile) throws IOException {
InjectorForTopDownAnalyzer injectorForTopDownAnalyzer = LazyResolveTestUtil.getEagerInjectorForTopDownAnalyzer(getEnvironment());
JetFile psiFile = JetPsiFactory.createFile(getProject(), FileUtil.loadFile(new File(testFile), true));
Collection<JetFile> files = Lists.newArrayList(psiFile);
final ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
lazyModule.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule,
new FileBasedDeclarationProviderFactory(storageManager, files));
@@ -25,6 +25,7 @@ import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
@@ -63,7 +64,11 @@ public class LazyResolveTestUtil {
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
BindingTrace sharedTrace = support.getTrace();
ModuleDescriptorImpl sharedModule = support.getModule();
return new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
InjectorForTopDownAnalyzerForJvm injector =
new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
sharedModule.addFragmentProvider(injector.getJavaPackageFragmentProvider());
return injector;
}
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
@@ -78,7 +83,7 @@ public class LazyResolveTestUtil {
Project project = environment.getProject();
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(project);
BindingTrace sharedTrace = support.getTrace();
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, sharedTrace);
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, sharedTrace);
support.setModule(injector.getModule());
return AnalyzerFacadeForJVM.createLazyResolveSession(project, files, sharedTrace, injector, addBuiltIns);
@@ -22,6 +22,7 @@ import junit.framework.Assert;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
@@ -115,7 +116,7 @@ public class JetExpectedResolveDataUtil {
@NotNull
private static PsiClass findClass(String qualifiedName, Project project) {
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, new BindingTraceContext());
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, new BindingTraceContext());
JavaClass javaClass = injector.getJavaClassFinder().findClass(new FqName(qualifiedName));
Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass);
assertInstanceOf(javaClass, JavaClassImpl.class);
@@ -26,6 +26,7 @@ import org.jetbrains.jet.JetTestCaseBuilder;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
import org.jetbrains.jet.di.InjectorForTests;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
@@ -585,7 +586,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
private WritableScopeImpl addImports(JetScope scope) {
WritableScopeImpl writableScope = new WritableScopeImpl(
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports");
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(getProject(), new BindingTraceContext());
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), new BindingTraceContext());
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
ModuleDescriptor module = javaDescriptorResolver.getPackageFragmentProvider().getModule();
for (ImportPath defaultImport : module.getDefaultImports()) {