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
017package org.jetbrains.jet.di;
018
019import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
020import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
021import org.jetbrains.jet.lang.resolve.BodyResolver;
022import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
023import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
024import org.jetbrains.jet.lang.resolve.DescriptorResolver;
025import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
026import com.intellij.openapi.project.Project;
027import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
028import org.jetbrains.jet.lang.resolve.BindingTrace;
029import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
030import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
031import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
032import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
033import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
034import org.jetbrains.jet.lang.resolve.DeclarationResolver;
035import org.jetbrains.jet.lang.resolve.AnnotationResolver;
036import org.jetbrains.jet.lang.resolve.calls.CallResolver;
037import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
038import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
039import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
040import org.jetbrains.jet.lang.resolve.TypeResolver;
041import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
042import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
043import org.jetbrains.jet.lang.resolve.ImportsResolver;
044import org.jetbrains.jet.lang.psi.JetImportsFactory;
045import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
046import org.jetbrains.jet.lang.resolve.OverloadResolver;
047import org.jetbrains.jet.lang.resolve.OverrideResolver;
048import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
049import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
050import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
051import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
052import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
053import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
054import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
055import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver;
056import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassObjectResolver;
057import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
058import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
059import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
060import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver;
061import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
062import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
063import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
064import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
065import org.jetbrains.annotations.NotNull;
066import javax.annotation.PreDestroy;
067
068/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
069public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
070    
071    private TopDownAnalyzer topDownAnalyzer;
072    private TopDownAnalysisContext topDownAnalysisContext;
073    private BodyResolver bodyResolver;
074    private ControlFlowAnalyzer controlFlowAnalyzer;
075    private DeclarationsChecker declarationsChecker;
076    private DescriptorResolver descriptorResolver;
077    private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
078    private final Project project;
079    private final TopDownAnalysisParameters topDownAnalysisParameters;
080    private final BindingTrace bindingTrace;
081    private final ModuleDescriptorImpl moduleDescriptor;
082    private JavaBridgeConfiguration javaBridgeConfiguration;
083    private JavaDescriptorResolver javaDescriptorResolver;
084    private PsiClassFinderImpl psiClassFinder;
085    private NamespaceFactoryImpl namespaceFactory;
086    private DeclarationResolver declarationResolver;
087    private AnnotationResolver annotationResolver;
088    private CallResolver callResolver;
089    private ArgumentTypeResolver argumentTypeResolver;
090    private ExpressionTypingServices expressionTypingServices;
091    private CallExpressionResolver callExpressionResolver;
092    private TypeResolver typeResolver;
093    private QualifiedExpressionResolver qualifiedExpressionResolver;
094    private CandidateResolver candidateResolver;
095    private ImportsResolver importsResolver;
096    private JetImportsFactory jetImportsFactory;
097    private ScriptHeaderResolver scriptHeaderResolver;
098    private OverloadResolver overloadResolver;
099    private OverrideResolver overrideResolver;
100    private TypeHierarchyResolver typeHierarchyResolver;
101    private ScriptBodyResolver scriptBodyResolver;
102    private JavaSemanticServices javaSemanticServices;
103    private PsiDeclarationProviderFactory psiDeclarationProviderFactory;
104    private JavaTypeTransformer javaTypeTransformer;
105    private JavaClassResolver javaClassResolver;
106    private JavaAnnotationResolver javaAnnotationResolver;
107    private JavaCompileTimeConstResolver javaCompileTimeConstResolver;
108    private JavaClassObjectResolver javaClassObjectResolver;
109    private JavaSupertypeResolver javaSupertypeResolver;
110    private JavaFunctionResolver javaFunctionResolver;
111    private JavaValueParameterResolver javaValueParameterResolver;
112    private JavaSignatureResolver javaSignatureResolver;
113    private JavaNamespaceResolver javaNamespaceResolver;
114    private JavaConstructorResolver javaConstructorResolver;
115    private JavaInnerClassResolver javaInnerClassResolver;
116    private 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}