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