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.CallCompleter;
045    import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
046    import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
047    import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
048    import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
049    import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
050    import org.jetbrains.jet.lang.resolve.DeclarationResolver;
051    import org.jetbrains.jet.lang.resolve.ImportsResolver;
052    import org.jetbrains.jet.lang.psi.JetImportsFactory;
053    import org.jetbrains.jet.lang.resolve.OverloadResolver;
054    import org.jetbrains.jet.lang.resolve.OverrideResolver;
055    import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
056    import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
057    import org.jetbrains.annotations.NotNull;
058    import javax.annotation.PreDestroy;
059    
060    /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
061    @SuppressWarnings("ALL")
062    public class InjectorForTopDownAnalyzerBasic {
063        
064        private final Project project;
065        private final GlobalContext globalContext;
066        private final StorageManager storageManager;
067        private final BindingTrace bindingTrace;
068        private final ModuleDescriptor moduleDescriptor;
069        private final PlatformToKotlinClassMap platformToKotlinClassMap;
070        private final TopDownAnalyzer topDownAnalyzer;
071        private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
072        private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
073        private final BodyResolver bodyResolver;
074        private final AnnotationResolver annotationResolver;
075        private final CallResolver callResolver;
076        private final ArgumentTypeResolver argumentTypeResolver;
077        private final ExpressionTypingServices expressionTypingServices;
078        private final ExpressionTypingComponents expressionTypingComponents;
079        private final ControlStructureTypingUtils controlStructureTypingUtils;
080        private final ExpressionTypingUtils expressionTypingUtils;
081        private final ForLoopConventionsChecker forLoopConventionsChecker;
082        private final ReflectionTypes reflectionTypes;
083        private final CallExpressionResolver callExpressionResolver;
084        private final DescriptorResolver descriptorResolver;
085        private final DelegatedPropertyResolver delegatedPropertyResolver;
086        private final TypeResolver typeResolver;
087        private final QualifiedExpressionResolver qualifiedExpressionResolver;
088        private final CallResolverExtensionProvider callResolverExtensionProvider;
089        private final CallCompleter callCompleter;
090        private final CandidateResolver candidateResolver;
091        private final ControlFlowAnalyzer controlFlowAnalyzer;
092        private final DeclarationsChecker declarationsChecker;
093        private final FunctionAnalyzerExtension functionAnalyzerExtension;
094        private final ScriptBodyResolver scriptBodyResolver;
095        private final DeclarationResolver declarationResolver;
096        private final ImportsResolver importsResolver;
097        private final JetImportsFactory jetImportsFactory;
098        private final OverloadResolver overloadResolver;
099        private final OverrideResolver overrideResolver;
100        private final TypeHierarchyResolver typeHierarchyResolver;
101        private final ScriptHeaderResolver scriptHeaderResolver;
102        
103        public InjectorForTopDownAnalyzerBasic(
104            @NotNull Project project,
105            @NotNull GlobalContext globalContext,
106            @NotNull BindingTrace bindingTrace,
107            @NotNull ModuleDescriptor moduleDescriptor
108        ) {
109            this.project = project;
110            this.globalContext = globalContext;
111            this.storageManager = globalContext.getStorageManager();
112            this.bindingTrace = bindingTrace;
113            this.moduleDescriptor = moduleDescriptor;
114            this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
115            this.topDownAnalyzer = new TopDownAnalyzer();
116            this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
117            this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
118            this.bodyResolver = new BodyResolver();
119            this.annotationResolver = new AnnotationResolver();
120            this.callResolver = new CallResolver();
121            this.argumentTypeResolver = new ArgumentTypeResolver();
122            this.expressionTypingComponents = new ExpressionTypingComponents();
123            this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents);
124            this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices);
125            this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver);
126            this.forLoopConventionsChecker = new ForLoopConventionsChecker();
127            this.reflectionTypes = new ReflectionTypes(getModuleDescriptor());
128            this.callExpressionResolver = new CallExpressionResolver();
129            this.descriptorResolver = new DescriptorResolver();
130            this.delegatedPropertyResolver = new DelegatedPropertyResolver();
131            this.typeResolver = new TypeResolver();
132            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
133            this.callResolverExtensionProvider = new CallResolverExtensionProvider();
134            this.candidateResolver = new CandidateResolver();
135            this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
136            this.controlFlowAnalyzer = new ControlFlowAnalyzer();
137            this.declarationsChecker = new DeclarationsChecker();
138            this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
139            this.scriptBodyResolver = new ScriptBodyResolver();
140            this.declarationResolver = new DeclarationResolver();
141            this.importsResolver = new ImportsResolver();
142            this.jetImportsFactory = new JetImportsFactory();
143            this.overloadResolver = new OverloadResolver();
144            this.overrideResolver = new OverrideResolver();
145            this.typeHierarchyResolver = new TypeHierarchyResolver();
146            this.scriptHeaderResolver = new ScriptHeaderResolver();
147    
148            this.topDownAnalyzer.setBodyResolver(bodyResolver);
149            this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
150            this.topDownAnalyzer.setLazyTopDownAnalyzer(lazyTopDownAnalyzer);
151            this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor);
152            this.topDownAnalyzer.setOverloadResolver(overloadResolver);
153            this.topDownAnalyzer.setOverrideResolver(overrideResolver);
154            this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
155            this.topDownAnalyzer.setProject(project);
156            this.topDownAnalyzer.setTrace(bindingTrace);
157            this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
158    
159            this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver);
160            this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver);
161            this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor);
162            this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver);
163            this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
164            this.lazyTopDownAnalyzer.setTrace(bindingTrace);
165    
166            bodyResolver.setAnnotationResolver(annotationResolver);
167            bodyResolver.setCallResolver(callResolver);
168            bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
169            bodyResolver.setDeclarationsChecker(declarationsChecker);
170            bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
171            bodyResolver.setExpressionTypingServices(expressionTypingServices);
172            bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
173            bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
174            bodyResolver.setTrace(bindingTrace);
175    
176            annotationResolver.setCallResolver(callResolver);
177            annotationResolver.setStorageManager(storageManager);
178            annotationResolver.setTypeResolver(typeResolver);
179    
180            callResolver.setArgumentTypeResolver(argumentTypeResolver);
181            callResolver.setCallCompleter(callCompleter);
182            callResolver.setCandidateResolver(candidateResolver);
183            callResolver.setExpressionTypingServices(expressionTypingServices);
184            callResolver.setTypeResolver(typeResolver);
185    
186            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
187            argumentTypeResolver.setTypeResolver(typeResolver);
188    
189            expressionTypingServices.setAnnotationResolver(annotationResolver);
190            expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
191            expressionTypingServices.setCallResolver(callResolver);
192            expressionTypingServices.setDescriptorResolver(descriptorResolver);
193            expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
194            expressionTypingServices.setProject(project);
195            expressionTypingServices.setTypeResolver(typeResolver);
196    
197            expressionTypingComponents.setCallResolver(callResolver);
198            expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils);
199            expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
200            expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
201            expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
202            expressionTypingComponents.setGlobalContext(globalContext);
203            expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
204            expressionTypingComponents.setReflectionTypes(reflectionTypes);
205    
206            forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
207            forLoopConventionsChecker.setExpressionTypingUtils(expressionTypingUtils);
208            forLoopConventionsChecker.setProject(project);
209    
210            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
211    
212            descriptorResolver.setAnnotationResolver(annotationResolver);
213            descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
214            descriptorResolver.setExpressionTypingServices(expressionTypingServices);
215            descriptorResolver.setStorageManager(storageManager);
216            descriptorResolver.setTypeResolver(typeResolver);
217    
218            delegatedPropertyResolver.setCallResolver(callResolver);
219            delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
220    
221            typeResolver.setAnnotationResolver(annotationResolver);
222            typeResolver.setModuleDescriptor(moduleDescriptor);
223            typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
224    
225            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
226    
227            controlFlowAnalyzer.setTrace(bindingTrace);
228    
229            declarationsChecker.setDescriptorResolver(descriptorResolver);
230            declarationsChecker.setTrace(bindingTrace);
231    
232            functionAnalyzerExtension.setTrace(bindingTrace);
233    
234            scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
235    
236            declarationResolver.setAnnotationResolver(annotationResolver);
237            declarationResolver.setDescriptorResolver(descriptorResolver);
238            declarationResolver.setImportsResolver(importsResolver);
239            declarationResolver.setTrace(bindingTrace);
240    
241            importsResolver.setImportsFactory(jetImportsFactory);
242            importsResolver.setModuleDescriptor(moduleDescriptor);
243            importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
244            importsResolver.setTrace(bindingTrace);
245    
246            jetImportsFactory.setProject(project);
247    
248            overloadResolver.setTrace(bindingTrace);
249    
250            overrideResolver.setTrace(bindingTrace);
251    
252            typeHierarchyResolver.setDescriptorResolver(descriptorResolver);
253            typeHierarchyResolver.setImportsResolver(importsResolver);
254            typeHierarchyResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
255            typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
256            typeHierarchyResolver.setTrace(bindingTrace);
257    
258            scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
259            scriptHeaderResolver.setTrace(bindingTrace);
260    
261        }
262        
263        @PreDestroy
264        public void destroy() {
265        }
266        
267        public ModuleDescriptor getModuleDescriptor() {
268            return this.moduleDescriptor;
269        }
270        
271        public TopDownAnalyzer getTopDownAnalyzer() {
272            return this.topDownAnalyzer;
273        }
274        
275        public LazyTopDownAnalyzer getLazyTopDownAnalyzer() {
276            return this.lazyTopDownAnalyzer;
277        }
278        
279    }