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
017 package org.jetbrains.jet.di;
018
019 import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
020 import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
021 import org.jetbrains.jet.lang.resolve.BodyResolver;
022 import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
023 import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
024 import org.jetbrains.jet.lang.resolve.DescriptorResolver;
025 import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
026 import com.intellij.openapi.project.Project;
027 import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
028 import org.jetbrains.jet.lang.resolve.BindingTrace;
029 import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
030 import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
031 import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
032 import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
033 import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
034 import org.jetbrains.jet.lang.resolve.DeclarationResolver;
035 import org.jetbrains.jet.lang.resolve.AnnotationResolver;
036 import org.jetbrains.jet.lang.resolve.calls.CallResolver;
037 import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
038 import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
039 import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
040 import org.jetbrains.jet.lang.resolve.TypeResolver;
041 import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
042 import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
043 import org.jetbrains.jet.lang.resolve.ImportsResolver;
044 import org.jetbrains.jet.lang.psi.JetImportsFactory;
045 import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
046 import org.jetbrains.jet.lang.resolve.OverloadResolver;
047 import org.jetbrains.jet.lang.resolve.OverrideResolver;
048 import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
049 import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
050 import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
051 import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProviderFactory;
052 import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
053 import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
054 import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
055 import org.jetbrains.jet.lang.resolve.java.resolver.JavaCompileTimeConstResolver;
056 import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassObjectResolver;
057 import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
058 import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
059 import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
060 import org.jetbrains.jet.lang.resolve.java.resolver.JavaSignatureResolver;
061 import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
062 import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
063 import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
064 import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
065 import org.jetbrains.annotations.NotNull;
066 import javax.annotation.PreDestroy;
067
068 /* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
069 public 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 }