001    /*
002     * Copyright 2010-2014 JetBrains s.r.o.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.jetbrains.jet.di;
018    
019    import com.intellij.openapi.project.Project;
020    import org.jetbrains.jet.context.GlobalContext;
021    import org.jetbrains.jet.storage.StorageManager;
022    import org.jetbrains.jet.lang.resolve.BindingTrace;
023    import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
024    import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
025    import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
026    import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer;
027    import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
028    import org.jetbrains.jet.lang.resolve.BodyResolver;
029    import org.jetbrains.jet.lang.resolve.AnnotationResolver;
030    import org.jetbrains.jet.lang.resolve.calls.CallResolver;
031    import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
032    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
033    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents;
034    import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils;
035    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
036    import org.jetbrains.jet.lang.types.expressions.ForLoopConventionsChecker;
037    import org.jetbrains.jet.lang.reflect.ReflectionTypes;
038    import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
039    import org.jetbrains.jet.lang.resolve.DescriptorResolver;
040    import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
041    import org.jetbrains.jet.lang.resolve.TypeResolver;
042    import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
043    import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
044    import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
045    import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
046    import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
047    import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
048    import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
049    import org.jetbrains.jet.lang.resolve.DeclarationResolver;
050    import org.jetbrains.jet.lang.resolve.ImportsResolver;
051    import org.jetbrains.jet.lang.psi.JetImportsFactory;
052    import org.jetbrains.jet.lang.resolve.OverloadResolver;
053    import org.jetbrains.jet.lang.resolve.OverrideResolver;
054    import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
055    import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
056    import org.jetbrains.annotations.NotNull;
057    import javax.annotation.PreDestroy;
058    
059    /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
060    @SuppressWarnings("ALL")
061    public class InjectorForTopDownAnalyzerForJs {
062        
063        private final Project project;
064        private final GlobalContext globalContext;
065        private final StorageManager storageManager;
066        private final BindingTrace bindingTrace;
067        private final ModuleDescriptor moduleDescriptor;
068        private final PlatformToKotlinClassMap platformToKotlinClassMap;
069        private final TopDownAnalyzer topDownAnalyzer;
070        private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
071        private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
072        private final BodyResolver bodyResolver;
073        private final AnnotationResolver annotationResolver;
074        private final CallResolver callResolver;
075        private final ArgumentTypeResolver argumentTypeResolver;
076        private final ExpressionTypingServices expressionTypingServices;
077        private final ExpressionTypingComponents expressionTypingComponents;
078        private final ControlStructureTypingUtils controlStructureTypingUtils;
079        private final ExpressionTypingUtils expressionTypingUtils;
080        private final ForLoopConventionsChecker forLoopConventionsChecker;
081        private final ReflectionTypes reflectionTypes;
082        private final CallExpressionResolver callExpressionResolver;
083        private final DescriptorResolver descriptorResolver;
084        private final DelegatedPropertyResolver delegatedPropertyResolver;
085        private final TypeResolver typeResolver;
086        private final QualifiedExpressionResolver qualifiedExpressionResolver;
087        private final CallResolverExtensionProvider callResolverExtensionProvider;
088        private final CandidateResolver candidateResolver;
089        private final ControlFlowAnalyzer controlFlowAnalyzer;
090        private final DeclarationsChecker declarationsChecker;
091        private final FunctionAnalyzerExtension functionAnalyzerExtension;
092        private final ScriptBodyResolver scriptBodyResolver;
093        private final DeclarationResolver declarationResolver;
094        private final ImportsResolver importsResolver;
095        private final JetImportsFactory jetImportsFactory;
096        private final OverloadResolver overloadResolver;
097        private final OverrideResolver overrideResolver;
098        private final TypeHierarchyResolver typeHierarchyResolver;
099        private final ScriptHeaderResolver scriptHeaderResolver;
100        
101        public InjectorForTopDownAnalyzerForJs(
102            @NotNull Project project,
103            @NotNull GlobalContext globalContext,
104            @NotNull BindingTrace bindingTrace,
105            @NotNull ModuleDescriptor moduleDescriptor
106        ) {
107            this.project = project;
108            this.globalContext = globalContext;
109            this.storageManager = globalContext.getStorageManager();
110            this.bindingTrace = bindingTrace;
111            this.moduleDescriptor = moduleDescriptor;
112            this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
113            this.topDownAnalyzer = new TopDownAnalyzer();
114            this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
115            this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
116            this.bodyResolver = new BodyResolver();
117            this.annotationResolver = new AnnotationResolver();
118            this.callResolver = new CallResolver();
119            this.argumentTypeResolver = new ArgumentTypeResolver();
120            this.expressionTypingComponents = new ExpressionTypingComponents();
121            this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents);
122            this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices);
123            this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver);
124            this.forLoopConventionsChecker = new ForLoopConventionsChecker();
125            this.reflectionTypes = new ReflectionTypes(getModuleDescriptor());
126            this.callExpressionResolver = new CallExpressionResolver();
127            this.descriptorResolver = new DescriptorResolver();
128            this.delegatedPropertyResolver = new DelegatedPropertyResolver();
129            this.typeResolver = new TypeResolver();
130            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
131            this.callResolverExtensionProvider = new CallResolverExtensionProvider();
132            this.candidateResolver = new CandidateResolver();
133            this.controlFlowAnalyzer = new ControlFlowAnalyzer();
134            this.declarationsChecker = new DeclarationsChecker();
135            this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
136            this.scriptBodyResolver = new ScriptBodyResolver();
137            this.declarationResolver = new DeclarationResolver();
138            this.importsResolver = new ImportsResolver();
139            this.jetImportsFactory = new JetImportsFactory();
140            this.overloadResolver = new OverloadResolver();
141            this.overrideResolver = new OverrideResolver();
142            this.typeHierarchyResolver = new TypeHierarchyResolver();
143            this.scriptHeaderResolver = new ScriptHeaderResolver();
144    
145            this.topDownAnalyzer.setBodyResolver(bodyResolver);
146            this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
147            this.topDownAnalyzer.setLazyTopDownAnalyzer(lazyTopDownAnalyzer);
148            this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor);
149            this.topDownAnalyzer.setOverloadResolver(overloadResolver);
150            this.topDownAnalyzer.setOverrideResolver(overrideResolver);
151            this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
152            this.topDownAnalyzer.setProject(project);
153            this.topDownAnalyzer.setTrace(bindingTrace);
154            this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
155    
156            this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver);
157            this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver);
158            this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor);
159            this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver);
160            this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
161            this.lazyTopDownAnalyzer.setTrace(bindingTrace);
162    
163            bodyResolver.setAnnotationResolver(annotationResolver);
164            bodyResolver.setCallResolver(callResolver);
165            bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
166            bodyResolver.setDeclarationsChecker(declarationsChecker);
167            bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
168            bodyResolver.setExpressionTypingServices(expressionTypingServices);
169            bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
170            bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
171            bodyResolver.setTrace(bindingTrace);
172    
173            annotationResolver.setCallResolver(callResolver);
174            annotationResolver.setStorageManager(storageManager);
175            annotationResolver.setTypeResolver(typeResolver);
176    
177            callResolver.setArgumentTypeResolver(argumentTypeResolver);
178            callResolver.setCandidateResolver(candidateResolver);
179            callResolver.setExpressionTypingServices(expressionTypingServices);
180            callResolver.setTypeResolver(typeResolver);
181    
182            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
183            argumentTypeResolver.setTypeResolver(typeResolver);
184    
185            expressionTypingServices.setAnnotationResolver(annotationResolver);
186            expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
187            expressionTypingServices.setCallResolver(callResolver);
188            expressionTypingServices.setDescriptorResolver(descriptorResolver);
189            expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
190            expressionTypingServices.setProject(project);
191            expressionTypingServices.setTypeResolver(typeResolver);
192    
193            expressionTypingComponents.setCallResolver(callResolver);
194            expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils);
195            expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
196            expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
197            expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
198            expressionTypingComponents.setGlobalContext(globalContext);
199            expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
200            expressionTypingComponents.setReflectionTypes(reflectionTypes);
201    
202            forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
203            forLoopConventionsChecker.setExpressionTypingUtils(expressionTypingUtils);
204            forLoopConventionsChecker.setProject(project);
205    
206            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
207    
208            descriptorResolver.setAnnotationResolver(annotationResolver);
209            descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
210            descriptorResolver.setExpressionTypingServices(expressionTypingServices);
211            descriptorResolver.setStorageManager(storageManager);
212            descriptorResolver.setTypeResolver(typeResolver);
213    
214            delegatedPropertyResolver.setCallResolver(callResolver);
215            delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
216    
217            typeResolver.setAnnotationResolver(annotationResolver);
218            typeResolver.setModuleDescriptor(moduleDescriptor);
219            typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
220    
221            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
222    
223            controlFlowAnalyzer.setTrace(bindingTrace);
224    
225            declarationsChecker.setDescriptorResolver(descriptorResolver);
226            declarationsChecker.setTrace(bindingTrace);
227    
228            functionAnalyzerExtension.setTrace(bindingTrace);
229    
230            scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
231    
232            declarationResolver.setAnnotationResolver(annotationResolver);
233            declarationResolver.setDescriptorResolver(descriptorResolver);
234            declarationResolver.setImportsResolver(importsResolver);
235            declarationResolver.setTrace(bindingTrace);
236    
237            importsResolver.setImportsFactory(jetImportsFactory);
238            importsResolver.setModuleDescriptor(moduleDescriptor);
239            importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
240            importsResolver.setTrace(bindingTrace);
241    
242            jetImportsFactory.setProject(project);
243    
244            overloadResolver.setTrace(bindingTrace);
245    
246            overrideResolver.setTrace(bindingTrace);
247    
248            typeHierarchyResolver.setDescriptorResolver(descriptorResolver);
249            typeHierarchyResolver.setImportsResolver(importsResolver);
250            typeHierarchyResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
251            typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
252            typeHierarchyResolver.setTrace(bindingTrace);
253    
254            scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
255            scriptHeaderResolver.setTrace(bindingTrace);
256    
257        }
258        
259        @PreDestroy
260        public void destroy() {
261        }
262        
263        public ModuleDescriptor getModuleDescriptor() {
264            return this.moduleDescriptor;
265        }
266        
267        public TopDownAnalyzer getTopDownAnalyzer() {
268            return this.topDownAnalyzer;
269        }
270        
271        public LazyTopDownAnalyzer getLazyTopDownAnalyzer() {
272            return this.lazyTopDownAnalyzer;
273        }
274        
275    }