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