001    /*
002     * Copyright 2010-2015 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.kotlin.di;
018    
019    import com.intellij.openapi.project.Project;
020    import org.jetbrains.kotlin.context.GlobalContext;
021    import org.jetbrains.kotlin.storage.StorageManager;
022    import org.jetbrains.kotlin.resolve.BindingTrace;
023    import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
024    import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
025    import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
026    import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider;
027    import org.jetbrains.kotlin.types.DynamicTypesSettings;
028    import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorHolder;
029    import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer;
030    import org.jetbrains.kotlin.resolve.lazy.NoTopLevelDescriptorProvider;
031    import org.jetbrains.kotlin.resolve.lazy.NoFileScopeProvider;
032    import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer;
033    import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver;
034    import org.jetbrains.kotlin.resolve.BodyResolver;
035    import org.jetbrains.kotlin.resolve.AnnotationResolver;
036    import org.jetbrains.kotlin.resolve.calls.CallResolver;
037    import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver;
038    import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices;
039    import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents;
040    import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils;
041    import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils;
042    import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker;
043    import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer;
044    import org.jetbrains.kotlin.resolve.DescriptorResolver;
045    import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver;
046    import org.jetbrains.kotlin.resolve.TypeResolver;
047    import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver;
048    import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider;
049    import org.jetbrains.kotlin.context.TypeLazinessToken;
050    import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver;
051    import org.jetbrains.kotlin.types.reflect.ReflectionTypes;
052    import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver;
053    import org.jetbrains.kotlin.resolve.StatementFilter;
054    import org.jetbrains.kotlin.resolve.calls.CallCompleter;
055    import org.jetbrains.kotlin.resolve.calls.CandidateResolver;
056    import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer;
057    import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer;
058    import org.jetbrains.kotlin.resolve.DeclarationsChecker;
059    import org.jetbrains.kotlin.resolve.ModifiersChecker;
060    import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension;
061    import org.jetbrains.kotlin.resolve.ScriptBodyResolver;
062    import org.jetbrains.kotlin.resolve.DeclarationResolver;
063    import org.jetbrains.kotlin.resolve.OverloadResolver;
064    import org.jetbrains.kotlin.resolve.OverrideResolver;
065    import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker;
066    import org.jetbrains.annotations.NotNull;
067    import javax.annotation.PreDestroy;
068    
069    /* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */
070    @SuppressWarnings("all")
071    public class InjectorForLazyLocalClassifierAnalyzer {
072    
073        private final Project project;
074        private final GlobalContext globalContext;
075        private final StorageManager storageManager;
076        private final BindingTrace bindingTrace;
077        private final ModuleDescriptor module;
078        private final KotlinBuiltIns kotlinBuiltIns;
079        private final PlatformToKotlinClassMap platformToKotlinClassMap;
080        private final AdditionalCheckerProvider additionalCheckerProvider;
081        private final DynamicTypesSettings dynamicTypesSettings;
082        private final LocalClassDescriptorHolder localClassDescriptorHolder;
083        private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
084        private final NoTopLevelDescriptorProvider noTopLevelDescriptorProvider;
085        private final NoFileScopeProvider noFileScopeProvider;
086        private final DeclarationScopeProviderForLocalClassifierAnalyzer declarationScopeProviderForLocalClassifierAnalyzer;
087        private final LocalLazyDeclarationResolver localLazyDeclarationResolver;
088        private final BodyResolver bodyResolver;
089        private final AnnotationResolver annotationResolver;
090        private final CallResolver callResolver;
091        private final ArgumentTypeResolver argumentTypeResolver;
092        private final ExpressionTypingServices expressionTypingServices;
093        private final ExpressionTypingComponents expressionTypingComponents;
094        private final ControlStructureTypingUtils controlStructureTypingUtils;
095        private final ExpressionTypingUtils expressionTypingUtils;
096        private final ForLoopConventionsChecker forLoopConventionsChecker;
097        private final LocalClassifierAnalyzer localClassifierAnalyzer;
098        private final DescriptorResolver descriptorResolver;
099        private final DelegatedPropertyResolver delegatedPropertyResolver;
100        private final TypeResolver typeResolver;
101        private final QualifiedExpressionResolver qualifiedExpressionResolver;
102        private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider;
103        private final TypeLazinessToken typeLazinessToken;
104        private final FunctionDescriptorResolver functionDescriptorResolver;
105        private final ReflectionTypes reflectionTypes;
106        private final CallExpressionResolver callExpressionResolver;
107        private final StatementFilter statementFilter;
108        private final CallCompleter callCompleter;
109        private final CandidateResolver candidateResolver;
110        private final TaskPrioritizer taskPrioritizer;
111        private final ControlFlowAnalyzer controlFlowAnalyzer;
112        private final DeclarationsChecker declarationsChecker;
113        private final ModifiersChecker modifiersChecker;
114        private final FunctionAnalyzerExtension functionAnalyzerExtension;
115        private final ScriptBodyResolver scriptBodyResolver;
116        private final DeclarationResolver declarationResolver;
117        private final OverloadResolver overloadResolver;
118        private final OverrideResolver overrideResolver;
119        private final VarianceChecker varianceChecker;
120    
121        public InjectorForLazyLocalClassifierAnalyzer(
122            @NotNull Project project,
123            @NotNull GlobalContext globalContext,
124            @NotNull BindingTrace bindingTrace,
125            @NotNull ModuleDescriptor module,
126            @NotNull AdditionalCheckerProvider additionalCheckerProvider,
127            @NotNull DynamicTypesSettings dynamicTypesSettings,
128            @NotNull LocalClassDescriptorHolder localClassDescriptorHolder
129        ) {
130            this.project = project;
131            this.globalContext = globalContext;
132            this.storageManager = globalContext.getStorageManager();
133            this.bindingTrace = bindingTrace;
134            this.module = module;
135            this.kotlinBuiltIns = module.getBuiltIns();
136            this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
137            this.additionalCheckerProvider = additionalCheckerProvider;
138            this.dynamicTypesSettings = dynamicTypesSettings;
139            this.localClassDescriptorHolder = localClassDescriptorHolder;
140            this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
141            this.noTopLevelDescriptorProvider = NoTopLevelDescriptorProvider.INSTANCE$;
142            this.noFileScopeProvider = NoFileScopeProvider.INSTANCE$;
143            this.localLazyDeclarationResolver = new LocalLazyDeclarationResolver(globalContext, bindingTrace, localClassDescriptorHolder);
144            this.declarationScopeProviderForLocalClassifierAnalyzer = new DeclarationScopeProviderForLocalClassifierAnalyzer(localLazyDeclarationResolver, localClassDescriptorHolder);
145            this.bodyResolver = new BodyResolver();
146            this.annotationResolver = new AnnotationResolver();
147            this.callResolver = new CallResolver();
148            this.argumentTypeResolver = new ArgumentTypeResolver();
149            this.expressionTypingComponents = new ExpressionTypingComponents();
150            this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents);
151            this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices);
152            this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns);
153            this.forLoopConventionsChecker = new ForLoopConventionsChecker();
154            this.descriptorResolver = new DescriptorResolver();
155            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
156            this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider();
157            this.typeLazinessToken = new TypeLazinessToken();
158            this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, module, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings);
159            this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns);
160            this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver);
161            this.delegatedPropertyResolver = new DelegatedPropertyResolver();
162            this.reflectionTypes = new ReflectionTypes(module);
163            this.callExpressionResolver = new CallExpressionResolver();
164            this.statementFilter = new StatementFilter();
165            this.candidateResolver = new CandidateResolver();
166            this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver);
167            this.taskPrioritizer = new TaskPrioritizer(storageManager);
168            this.controlFlowAnalyzer = new ControlFlowAnalyzer();
169            this.declarationsChecker = new DeclarationsChecker();
170            this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider);
171            this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
172            this.scriptBodyResolver = new ScriptBodyResolver();
173            this.declarationResolver = new DeclarationResolver();
174            this.overloadResolver = new OverloadResolver();
175            this.overrideResolver = new OverrideResolver();
176            this.varianceChecker = new VarianceChecker(bindingTrace);
177    
178            this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver);
179            this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver);
180            this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProviderForLocalClassifierAnalyzer);
181            this.lazyTopDownAnalyzer.setFileScopeProvider(noFileScopeProvider);
182            this.lazyTopDownAnalyzer.setLazyDeclarationResolver(localLazyDeclarationResolver);
183            this.lazyTopDownAnalyzer.setModuleDescriptor(module);
184            this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver);
185            this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
186            this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(noTopLevelDescriptorProvider);
187            this.lazyTopDownAnalyzer.setTrace(bindingTrace);
188            this.lazyTopDownAnalyzer.setVarianceChecker(varianceChecker);
189    
190            declarationScopeProviderForLocalClassifierAnalyzer.setFileScopeProvider(noFileScopeProvider);
191    
192            localLazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProviderForLocalClassifierAnalyzer);
193            localLazyDeclarationResolver.setTopLevelDescriptorProvider(noTopLevelDescriptorProvider);
194    
195            bodyResolver.setAnnotationResolver(annotationResolver);
196            bodyResolver.setCallResolver(callResolver);
197            bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
198            bodyResolver.setDeclarationsChecker(declarationsChecker);
199            bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
200            bodyResolver.setExpressionTypingServices(expressionTypingServices);
201            bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
202            bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
203            bodyResolver.setTrace(bindingTrace);
204    
205            annotationResolver.setCallResolver(callResolver);
206            annotationResolver.setStorageManager(storageManager);
207            annotationResolver.setTypeResolver(typeResolver);
208    
209            callResolver.setArgumentTypeResolver(argumentTypeResolver);
210            callResolver.setCallCompleter(callCompleter);
211            callResolver.setCandidateResolver(candidateResolver);
212            callResolver.setExpressionTypingServices(expressionTypingServices);
213            callResolver.setTaskPrioritizer(taskPrioritizer);
214            callResolver.setTypeResolver(typeResolver);
215    
216            argumentTypeResolver.setBuiltIns(kotlinBuiltIns);
217            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
218            argumentTypeResolver.setTypeResolver(typeResolver);
219    
220            expressionTypingServices.setAnnotationResolver(annotationResolver);
221            expressionTypingServices.setBuiltIns(kotlinBuiltIns);
222            expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
223            expressionTypingServices.setCallResolver(callResolver);
224            expressionTypingServices.setDescriptorResolver(descriptorResolver);
225            expressionTypingServices.setFunctionDescriptorResolver(functionDescriptorResolver);
226            expressionTypingServices.setProject(project);
227            expressionTypingServices.setStatementFilter(statementFilter);
228            expressionTypingServices.setTypeResolver(typeResolver);
229    
230            expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider);
231            expressionTypingComponents.setBuiltIns(kotlinBuiltIns);
232            expressionTypingComponents.setCallResolver(callResolver);
233            expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils);
234            expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings);
235            expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
236            expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
237            expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
238            expressionTypingComponents.setGlobalContext(globalContext);
239            expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer);
240            expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
241            expressionTypingComponents.setReflectionTypes(reflectionTypes);
242    
243            forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns);
244            forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
245            forLoopConventionsChecker.setExpressionTypingUtils(expressionTypingUtils);
246            forLoopConventionsChecker.setProject(project);
247    
248            descriptorResolver.setAnnotationResolver(annotationResolver);
249            descriptorResolver.setBuiltIns(kotlinBuiltIns);
250            descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
251            descriptorResolver.setExpressionTypingServices(expressionTypingServices);
252            descriptorResolver.setStorageManager(storageManager);
253            descriptorResolver.setTypeResolver(typeResolver);
254    
255            delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns);
256            delegatedPropertyResolver.setCallResolver(callResolver);
257            delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
258    
259            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
260    
261            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
262    
263            controlFlowAnalyzer.setTrace(bindingTrace);
264    
265            declarationsChecker.setDescriptorResolver(descriptorResolver);
266            declarationsChecker.setModifiersChecker(modifiersChecker);
267            declarationsChecker.setTrace(bindingTrace);
268    
269            functionAnalyzerExtension.setTrace(bindingTrace);
270    
271            scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
272    
273            declarationResolver.setAnnotationResolver(annotationResolver);
274            declarationResolver.setTrace(bindingTrace);
275    
276            overloadResolver.setTrace(bindingTrace);
277    
278            overrideResolver.setTrace(bindingTrace);
279    
280        }
281    
282        @PreDestroy
283        public void destroy() {
284        }
285    
286        public LazyTopDownAnalyzer getLazyTopDownAnalyzer() {
287            return this.lazyTopDownAnalyzer;
288        }
289    
290    }