Refactoring: use injector for creating lazy resolve session

This commit is contained in:
Nikolay Krasko
2014-01-22 14:52:37 +04:00
parent b8ddb658fb
commit f526129ca4
7 changed files with 157 additions and 124 deletions
@@ -29,7 +29,6 @@ import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
@@ -39,7 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.resolver.*;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
@@ -52,7 +51,7 @@ import java.util.Arrays;
import java.util.List;
// NOTE: After making changes, you need to re-generate the injectors.
// To do that, you can run either this class
// To do that, you can run main in this class.
public class GenerateInjectors {
private GenerateInjectors() {
@@ -86,19 +85,18 @@ public class GenerateInjectors {
private static DependencyInjectorGenerator generateInjectorForLazyResolve() throws IOException {
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
generator.addParameter(Project.class);
generator.addParameter(ResolveSession.class);
generator.addParameter(ModuleDescriptor.class);
generator.addPublicField(DescriptorResolver.class);
generator.addPublicField(ExpressionTypingServices.class);
generator.addPublicField(TypeResolver.class);
generator.addPublicField(ScopeProvider.class);
generator.addPublicField(AnnotationResolver.class);
generator.addPublicField(QualifiedExpressionResolver.class);
generator.addPublicField(JetImportsFactory.class);
generator.addParameter(LockBasedStorageManagerWithExceptionTracking.class);
generator.addParameter(ModuleDescriptorImpl.class);
generator.addParameter(DeclarationProviderFactory.class);
generator.addParameter(BindingTrace.class);
generator.addPublicField(ResolveSession.class);
generator.addField(CallResolverExtensionProvider.class);
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
generator.addField(false, StorageManager.class, null, new GivenExpression("resolveSession.getStorageManager()"));
generator.configure("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", GenerateInjectors.class);
return generator;
}