001    /*
002     * Copyright 2010-2013 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 org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
020    import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
021    import org.jetbrains.jet.lang.resolve.BodyResolver;
022    import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
023    import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
024    import org.jetbrains.jet.lang.resolve.DescriptorResolver;
025    import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
026    import com.intellij.openapi.project.Project;
027    import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
028    import org.jetbrains.jet.lang.resolve.BindingTrace;
029    import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
030    import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
031    import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
032    import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
033    import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
034    import org.jetbrains.jet.lang.resolve.DeclarationResolver;
035    import org.jetbrains.jet.lang.resolve.AnnotationResolver;
036    import org.jetbrains.jet.lang.resolve.calls.CallResolver;
037    import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
038    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
039    import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
040    import org.jetbrains.jet.lang.resolve.TypeResolver;
041    import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
042    import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
043    import org.jetbrains.jet.lang.resolve.ImportsResolver;
044    import org.jetbrains.jet.lang.psi.JetImportsFactory;
045    import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
046    import org.jetbrains.jet.lang.resolve.OverloadResolver;
047    import org.jetbrains.jet.lang.resolve.OverrideResolver;
048    import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
049    import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
050    import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
051    import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
052    import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
053    import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
054    import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
055    import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver;
056    import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassObjectResolver;
057    import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
058    import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
059    import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
060    import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver;
061    import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
062    import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
063    import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
064    import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
065    import org.jetbrains.annotations.NotNull;
066    import javax.annotation.PreDestroy;
067    
068    /* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
069    public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
070        
071        private final TopDownAnalyzer topDownAnalyzer;
072        private final TopDownAnalysisContext topDownAnalysisContext;
073        private final BodyResolver bodyResolver;
074        private final ControlFlowAnalyzer controlFlowAnalyzer;
075        private final DeclarationsChecker declarationsChecker;
076        private final DescriptorResolver descriptorResolver;
077        private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
078        private final Project project;
079        private final TopDownAnalysisParameters topDownAnalysisParameters;
080        private final BindingTrace bindingTrace;
081        private final ModuleDescriptorImpl moduleDescriptor;
082        private final JavaBridgeConfiguration javaBridgeConfiguration;
083        private final JavaDescriptorResolver javaDescriptorResolver;
084        private final PsiClassFinderImpl psiClassFinder;
085        private final NamespaceFactoryImpl namespaceFactory;
086        private final DeclarationResolver declarationResolver;
087        private final AnnotationResolver annotationResolver;
088        private final CallResolver callResolver;
089        private final ArgumentTypeResolver argumentTypeResolver;
090        private final ExpressionTypingServices expressionTypingServices;
091        private final CallExpressionResolver callExpressionResolver;
092        private final TypeResolver typeResolver;
093        private final QualifiedExpressionResolver qualifiedExpressionResolver;
094        private final CandidateResolver candidateResolver;
095        private final ImportsResolver importsResolver;
096        private final JetImportsFactory jetImportsFactory;
097        private final ScriptHeaderResolver scriptHeaderResolver;
098        private final OverloadResolver overloadResolver;
099        private final OverrideResolver overrideResolver;
100        private final TypeHierarchyResolver typeHierarchyResolver;
101        private final ScriptBodyResolver scriptBodyResolver;
102        private final JavaSemanticServices javaSemanticServices;
103        private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
104        private final JavaTypeTransformer javaTypeTransformer;
105        private final JavaClassResolver javaClassResolver;
106        private final JavaAnnotationResolver javaAnnotationResolver;
107        private final JavaCompileTimeConstResolver javaCompileTimeConstResolver;
108        private final JavaClassObjectResolver javaClassObjectResolver;
109        private final JavaSupertypeResolver javaSupertypeResolver;
110        private final JavaFunctionResolver javaFunctionResolver;
111        private final JavaValueParameterResolver javaValueParameterResolver;
112        private final JavaSignatureResolver javaSignatureResolver;
113        private final JavaNamespaceResolver javaNamespaceResolver;
114        private final JavaConstructorResolver javaConstructorResolver;
115        private final JavaInnerClassResolver javaInnerClassResolver;
116        private final JavaPropertyResolver javaPropertyResolver;
117        
118        public InjectorForTopDownAnalyzerForJvm(
119            @NotNull Project project,
120            @NotNull TopDownAnalysisParameters topDownAnalysisParameters,
121            @NotNull BindingTrace bindingTrace,
122            @NotNull ModuleDescriptorImpl moduleDescriptor
123        ) {
124            this.topDownAnalyzer = new TopDownAnalyzer();
125            this.topDownAnalysisContext = new TopDownAnalysisContext();
126            this.bodyResolver = new BodyResolver();
127            this.controlFlowAnalyzer = new ControlFlowAnalyzer();
128            this.declarationsChecker = new DeclarationsChecker();
129            this.descriptorResolver = new DescriptorResolver();
130            this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
131            this.project = project;
132            this.topDownAnalysisParameters = topDownAnalysisParameters;
133            this.bindingTrace = bindingTrace;
134            this.moduleDescriptor = moduleDescriptor;
135            this.javaBridgeConfiguration = new JavaBridgeConfiguration();
136            this.javaDescriptorResolver = new JavaDescriptorResolver();
137            this.psiClassFinder = new PsiClassFinderImpl();
138            this.namespaceFactory = new NamespaceFactoryImpl();
139            this.declarationResolver = new DeclarationResolver();
140            this.annotationResolver = new AnnotationResolver();
141            this.callResolver = new CallResolver();
142            this.argumentTypeResolver = new ArgumentTypeResolver();
143            this.expressionTypingServices = new ExpressionTypingServices();
144            this.callExpressionResolver = new CallExpressionResolver();
145            this.typeResolver = new TypeResolver();
146            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
147            this.candidateResolver = new CandidateResolver();
148            this.importsResolver = new ImportsResolver();
149            this.jetImportsFactory = new JetImportsFactory();
150            this.scriptHeaderResolver = new ScriptHeaderResolver();
151            this.overloadResolver = new OverloadResolver();
152            this.overrideResolver = new OverrideResolver();
153            this.typeHierarchyResolver = new TypeHierarchyResolver();
154            this.scriptBodyResolver = new ScriptBodyResolver();
155            this.javaSemanticServices = new JavaSemanticServices();
156            this.psiDeclarationProviderFactory = new PsiDeclarationProviderFactory(psiClassFinder);
157            this.javaTypeTransformer = new JavaTypeTransformer();
158            this.javaClassResolver = new JavaClassResolver();
159            this.javaAnnotationResolver = new JavaAnnotationResolver();
160            this.javaCompileTimeConstResolver = new JavaCompileTimeConstResolver();
161            this.javaClassObjectResolver = new JavaClassObjectResolver();
162            this.javaSupertypeResolver = new JavaSupertypeResolver();
163            this.javaFunctionResolver = new JavaFunctionResolver();
164            this.javaValueParameterResolver = new JavaValueParameterResolver();
165            this.javaSignatureResolver = new JavaSignatureResolver();
166            this.javaNamespaceResolver = new JavaNamespaceResolver();
167            this.javaConstructorResolver = new JavaConstructorResolver();
168            this.javaInnerClassResolver = new JavaInnerClassResolver();
169            this.javaPropertyResolver = new JavaPropertyResolver();
170    
171            this.topDownAnalyzer.setBodyResolver(bodyResolver);
172            this.topDownAnalyzer.setContext(topDownAnalysisContext);
173            this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
174            this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor);
175            this.topDownAnalyzer.setNamespaceFactory(namespaceFactory);
176            this.topDownAnalyzer.setOverloadResolver(overloadResolver);
177            this.topDownAnalyzer.setOverrideResolver(overrideResolver);
178            this.topDownAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
179            this.topDownAnalyzer.setTrace(bindingTrace);
180            this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
181    
182            this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
183    
184            this.bodyResolver.setAnnotationResolver(annotationResolver);
185            this.bodyResolver.setCallResolver(callResolver);
186            this.bodyResolver.setContext(topDownAnalysisContext);
187            this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
188            this.bodyResolver.setDeclarationsChecker(declarationsChecker);
189            this.bodyResolver.setDescriptorResolver(descriptorResolver);
190            this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
191            this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
192            this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
193            this.bodyResolver.setTrace(bindingTrace);
194    
195            this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
196            this.controlFlowAnalyzer.setTrace(bindingTrace);
197    
198            this.declarationsChecker.setTrace(bindingTrace);
199    
200            this.descriptorResolver.setAnnotationResolver(annotationResolver);
201            this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
202            this.descriptorResolver.setTypeResolver(typeResolver);
203    
204            this.javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
205    
206            javaDescriptorResolver.setClassResolver(javaClassResolver);
207            javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
208            javaDescriptorResolver.setFunctionResolver(javaFunctionResolver);
209            javaDescriptorResolver.setInnerClassResolver(javaInnerClassResolver);
210            javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver);
211            javaDescriptorResolver.setPropertiesResolver(javaPropertyResolver);
212    
213            psiClassFinder.setProject(project);
214    
215            this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
216            this.namespaceFactory.setTrace(bindingTrace);
217    
218            declarationResolver.setAnnotationResolver(annotationResolver);
219            declarationResolver.setContext(topDownAnalysisContext);
220            declarationResolver.setDescriptorResolver(descriptorResolver);
221            declarationResolver.setImportsResolver(importsResolver);
222            declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
223            declarationResolver.setTrace(bindingTrace);
224    
225            annotationResolver.setCallResolver(callResolver);
226            annotationResolver.setExpressionTypingServices(expressionTypingServices);
227    
228            callResolver.setArgumentTypeResolver(argumentTypeResolver);
229            callResolver.setCandidateResolver(candidateResolver);
230            callResolver.setExpressionTypingServices(expressionTypingServices);
231            callResolver.setExtension(needSyntheticCallResolverExtension);
232            callResolver.setTypeResolver(typeResolver);
233    
234            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
235            argumentTypeResolver.setTypeResolver(typeResolver);
236    
237            expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
238            expressionTypingServices.setCallResolver(callResolver);
239            expressionTypingServices.setDescriptorResolver(descriptorResolver);
240            expressionTypingServices.setProject(project);
241            expressionTypingServices.setTypeResolver(typeResolver);
242    
243            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
244    
245            typeResolver.setAnnotationResolver(annotationResolver);
246            typeResolver.setDescriptorResolver(descriptorResolver);
247            typeResolver.setModuleDescriptor(moduleDescriptor);
248            typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
249    
250            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
251    
252            importsResolver.setContext(topDownAnalysisContext);
253            importsResolver.setImportsFactory(jetImportsFactory);
254            importsResolver.setModuleDescriptor(moduleDescriptor);
255            importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
256            importsResolver.setTrace(bindingTrace);
257    
258            jetImportsFactory.setProject(project);
259    
260            scriptHeaderResolver.setContext(topDownAnalysisContext);
261            scriptHeaderResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
262            scriptHeaderResolver.setNamespaceFactory(namespaceFactory);
263            scriptHeaderResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
264            scriptHeaderResolver.setTrace(bindingTrace);
265    
266            overloadResolver.setContext(topDownAnalysisContext);
267            overloadResolver.setTrace(bindingTrace);
268    
269            overrideResolver.setContext(topDownAnalysisContext);
270            overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
271            overrideResolver.setTrace(bindingTrace);
272    
273            typeHierarchyResolver.setContext(topDownAnalysisContext);
274            typeHierarchyResolver.setDescriptorResolver(descriptorResolver);
275            typeHierarchyResolver.setImportsResolver(importsResolver);
276            typeHierarchyResolver.setNamespaceFactory(namespaceFactory);
277            typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
278            typeHierarchyResolver.setTrace(bindingTrace);
279    
280            scriptBodyResolver.setContext(topDownAnalysisContext);
281            scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
282            scriptBodyResolver.setTrace(bindingTrace);
283    
284            javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
285            javaSemanticServices.setPsiClassFinder(psiClassFinder);
286            javaSemanticServices.setPsiDeclarationProviderFactory(psiDeclarationProviderFactory);
287            javaSemanticServices.setTrace(bindingTrace);
288            javaSemanticServices.setTypeTransformer(javaTypeTransformer);
289    
290            javaTypeTransformer.setJavaSemanticServices(javaSemanticServices);
291            javaTypeTransformer.setResolver(javaDescriptorResolver);
292    
293            javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
294            javaClassResolver.setClassObjectResolver(javaClassObjectResolver);
295            javaClassResolver.setFunctionResolver(javaFunctionResolver);
296            javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
297            javaClassResolver.setPsiClassFinder(psiClassFinder);
298            javaClassResolver.setSemanticServices(javaSemanticServices);
299            javaClassResolver.setSignatureResolver(javaSignatureResolver);
300            javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
301            javaClassResolver.setTrace(bindingTrace);
302    
303            javaAnnotationResolver.setClassResolver(javaClassResolver);
304            javaAnnotationResolver.setCompileTimeConstResolver(javaCompileTimeConstResolver);
305    
306            javaCompileTimeConstResolver.setAnnotationResolver(javaAnnotationResolver);
307            javaCompileTimeConstResolver.setClassResolver(javaClassResolver);
308    
309            javaClassObjectResolver.setSemanticServices(javaSemanticServices);
310            javaClassObjectResolver.setSupertypesResolver(javaSupertypeResolver);
311            javaClassObjectResolver.setTrace(bindingTrace);
312    
313            javaSupertypeResolver.setClassResolver(javaClassResolver);
314            javaSupertypeResolver.setSemanticServices(javaSemanticServices);
315            javaSupertypeResolver.setTrace(bindingTrace);
316            javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
317    
318            javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
319            javaFunctionResolver.setParameterResolver(javaValueParameterResolver);
320            javaFunctionResolver.setSignatureResolver(javaSignatureResolver);
321            javaFunctionResolver.setTrace(bindingTrace);
322            javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
323    
324            javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
325    
326            javaSignatureResolver.setJavaSemanticServices(javaSemanticServices);
327    
328            javaNamespaceResolver.setJavaSemanticServices(javaSemanticServices);
329            javaNamespaceResolver.setPsiClassFinder(psiClassFinder);
330            javaNamespaceResolver.setTrace(bindingTrace);
331    
332            javaConstructorResolver.setTrace(bindingTrace);
333            javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
334            javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
335    
336            javaInnerClassResolver.setClassResolver(javaClassResolver);
337    
338            javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
339            javaPropertyResolver.setJavaSignatureResolver(javaSignatureResolver);
340            javaPropertyResolver.setSemanticServices(javaSemanticServices);
341            javaPropertyResolver.setTrace(bindingTrace);
342    
343            psiClassFinder.initialize();
344    
345        }
346        
347        @PreDestroy
348        public void destroy() {
349        }
350        
351        public TopDownAnalyzer getTopDownAnalyzer() {
352            return this.topDownAnalyzer;
353        }
354        
355        public TopDownAnalysisContext getTopDownAnalysisContext() {
356            return this.topDownAnalysisContext;
357        }
358        
359        public BodyResolver getBodyResolver() {
360            return this.bodyResolver;
361        }
362        
363        public ControlFlowAnalyzer getControlFlowAnalyzer() {
364            return this.controlFlowAnalyzer;
365        }
366        
367        public DeclarationsChecker getDeclarationsChecker() {
368            return this.declarationsChecker;
369        }
370        
371        public DescriptorResolver getDescriptorResolver() {
372            return this.descriptorResolver;
373        }
374        
375        public Project getProject() {
376            return this.project;
377        }
378        
379        public TopDownAnalysisParameters getTopDownAnalysisParameters() {
380            return this.topDownAnalysisParameters;
381        }
382        
383        public BindingTrace getBindingTrace() {
384            return this.bindingTrace;
385        }
386        
387        public ModuleDescriptorImpl getModuleDescriptor() {
388            return this.moduleDescriptor;
389        }
390        
391        public JavaBridgeConfiguration getJavaBridgeConfiguration() {
392            return this.javaBridgeConfiguration;
393        }
394        
395        public NamespaceFactoryImpl getNamespaceFactory() {
396            return this.namespaceFactory;
397        }
398        
399    }