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.lazy.declarations.DeclarationProviderFactory; 027 import org.jetbrains.kotlin.resolve.lazy.ResolveSession; 028 import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; 029 import com.intellij.psi.search.GlobalSearchScope; 030 import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver; 031 import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; 032 import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder; 033 import org.jetbrains.kotlin.load.java.JavaClassFinderImpl; 034 import org.jetbrains.kotlin.load.java.components.TraceBasedExternalSignatureResolver; 035 import org.jetbrains.kotlin.load.java.components.LazyResolveBasedCache; 036 import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter; 037 import org.jetbrains.kotlin.load.java.components.PsiBasedMethodSignatureChecker; 038 import org.jetbrains.kotlin.load.java.components.PsiBasedExternalAnnotationResolver; 039 import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl; 040 import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl; 041 import org.jetbrains.kotlin.load.java.components.JavaSourceElementFactoryImpl; 042 import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider; 043 import org.jetbrains.kotlin.context.LazyResolveToken; 044 import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct; 045 import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider; 046 import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; 047 import org.jetbrains.kotlin.resolve.AnnotationResolver; 048 import org.jetbrains.kotlin.resolve.calls.CallResolver; 049 import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; 050 import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; 051 import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; 052 import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; 053 import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; 054 import org.jetbrains.kotlin.resolve.DescriptorResolver; 055 import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; 056 import org.jetbrains.kotlin.resolve.TypeResolver; 057 import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; 058 import org.jetbrains.kotlin.types.DynamicTypesSettings; 059 import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; 060 import org.jetbrains.kotlin.types.expressions.FakeCallResolver; 061 import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; 062 import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; 063 import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; 064 import org.jetbrains.kotlin.builtins.ReflectionTypes; 065 import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; 066 import org.jetbrains.kotlin.resolve.StatementFilter; 067 import org.jetbrains.kotlin.resolve.calls.CallCompleter; 068 import org.jetbrains.kotlin.resolve.calls.CandidateResolver; 069 import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; 070 import org.jetbrains.kotlin.psi.JetImportsFactory; 071 import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; 072 import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; 073 import org.jetbrains.kotlin.resolve.ScriptBodyResolver; 074 import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; 075 import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; 076 import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; 077 import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; 078 import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava; 079 import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; 080 import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; 081 import org.jetbrains.annotations.NotNull; 082 import javax.annotation.PreDestroy; 083 084 /* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ 085 @SuppressWarnings("all") 086 public class InjectorForLazyResolveWithJava { 087 088 private final ModuleContext moduleContext; 089 private final KotlinBuiltIns kotlinBuiltIns; 090 private final ModuleDescriptor moduleDescriptor; 091 private final PlatformToKotlinClassMap platformToKotlinClassMap; 092 private final Project project; 093 private final StorageManager storageManager; 094 private final BindingTrace bindingTrace; 095 private final DeclarationProviderFactory declarationProviderFactory; 096 private final ResolveSession resolveSession; 097 private final ScopeProvider scopeProvider; 098 private final GlobalSearchScope moduleContentScope; 099 private final ModuleClassResolver moduleClassResolver; 100 private final JavaDescriptorResolver javaDescriptorResolver; 101 private final JvmVirtualFileFinder jvmVirtualFileFinder; 102 private final JavaClassFinderImpl javaClassFinder; 103 private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; 104 private final LazyResolveBasedCache lazyResolveBasedCache; 105 private final TraceBasedErrorReporter traceBasedErrorReporter; 106 private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; 107 private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; 108 private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator; 109 private final SamConversionResolverImpl samConversionResolver; 110 private final JavaSourceElementFactoryImpl javaSourceElementFactory; 111 private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider; 112 private final LazyResolveToken lazyResolveToken; 113 private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct; 114 private final KotlinJvmCheckerProvider kotlinJvmCheckerProvider; 115 private final SymbolUsageValidator symbolUsageValidator; 116 private final AnnotationResolver annotationResolver; 117 private final CallResolver callResolver; 118 private final ArgumentTypeResolver argumentTypeResolver; 119 private final ExpressionTypingServices expressionTypingServices; 120 private final ExpressionTypingComponents expressionTypingComponents; 121 private final CallExpressionResolver callExpressionResolver; 122 private final ControlStructureTypingUtils controlStructureTypingUtils; 123 private final DescriptorResolver descriptorResolver; 124 private final DelegatedPropertyResolver delegatedPropertyResolver; 125 private final TypeResolver typeResolver; 126 private final QualifiedExpressionResolver qualifiedExpressionResolver; 127 private final DynamicTypesSettings dynamicTypesSettings; 128 private final ForLoopConventionsChecker forLoopConventionsChecker; 129 private final FakeCallResolver fakeCallResolver; 130 private final FunctionDescriptorResolver functionDescriptorResolver; 131 private final LocalClassifierAnalyzer localClassifierAnalyzer; 132 private final MultiDeclarationResolver multiDeclarationResolver; 133 private final ReflectionTypes reflectionTypes; 134 private final ValueParameterResolver valueParameterResolver; 135 private final StatementFilter statementFilter; 136 private final CallCompleter callCompleter; 137 private final CandidateResolver candidateResolver; 138 private final TaskPrioritizer taskPrioritizer; 139 private final JetImportsFactory jetImportsFactory; 140 private final LazyDeclarationResolver lazyDeclarationResolver; 141 private final DeclarationScopeProviderImpl declarationScopeProvider; 142 private final ScriptBodyResolver scriptBodyResolver; 143 private final AdditionalFileScopeProvider additionalFileScopeProvider; 144 private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; 145 private final GlobalJavaResolverContext globalJavaResolverContext; 146 private final DeserializedDescriptorResolver deserializedDescriptorResolver; 147 private final DeserializationComponentsForJava deserializationComponentsForJava; 148 private final JavaClassDataFinder javaClassDataFinder; 149 private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; 150 151 public InjectorForLazyResolveWithJava( 152 @NotNull ModuleContext moduleContext, 153 @NotNull BindingTrace bindingTrace, 154 @NotNull DeclarationProviderFactory declarationProviderFactory, 155 @NotNull GlobalSearchScope moduleContentScope, 156 @NotNull ModuleClassResolver moduleClassResolver 157 ) { 158 this.moduleContext = moduleContext; 159 this.kotlinBuiltIns = moduleContext.getBuiltIns(); 160 this.moduleDescriptor = moduleContext.getModule(); 161 this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); 162 this.project = moduleContext.getProject(); 163 this.storageManager = moduleContext.getStorageManager(); 164 this.bindingTrace = bindingTrace; 165 this.declarationProviderFactory = declarationProviderFactory; 166 this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace); 167 this.scopeProvider = new ScopeProvider(getResolveSession()); 168 this.moduleContentScope = moduleContentScope; 169 this.moduleClassResolver = moduleClassResolver; 170 this.javaClassFinder = new JavaClassFinderImpl(); 171 this.jvmVirtualFileFinder = org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); 172 this.traceBasedErrorReporter = new TraceBasedErrorReporter(); 173 this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(traceBasedErrorReporter); 174 this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver(); 175 this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver(); 176 this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker(); 177 this.lazyResolveBasedCache = new LazyResolveBasedCache(); 178 this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); 179 this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; 180 this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); 181 this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, jvmVirtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver); 182 this.reflectionTypes = new ReflectionTypes(moduleDescriptor); 183 this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes); 184 this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor); 185 this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); 186 this.lazyResolveToken = new LazyResolveToken(); 187 this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct(); 188 this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$; 189 this.symbolUsageValidator = kotlinJvmCheckerProvider.getSymbolUsageValidator(); 190 this.annotationResolver = new AnnotationResolver(); 191 this.callResolver = new CallResolver(); 192 this.argumentTypeResolver = new ArgumentTypeResolver(); 193 this.expressionTypingComponents = new ExpressionTypingComponents(); 194 this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); 195 this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); 196 this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); 197 this.descriptorResolver = new DescriptorResolver(); 198 this.delegatedPropertyResolver = new DelegatedPropertyResolver(); 199 this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); 200 this.dynamicTypesSettings = new DynamicTypesSettings(); 201 this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, lazyResolveToken, dynamicTypesSettings); 202 this.forLoopConventionsChecker = new ForLoopConventionsChecker(); 203 this.fakeCallResolver = new FakeCallResolver(project, callResolver); 204 this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); 205 this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); 206 this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); 207 this.valueParameterResolver = new ValueParameterResolver(kotlinJvmCheckerProvider, expressionTypingServices); 208 this.statementFilter = new StatementFilter(); 209 this.candidateResolver = new CandidateResolver(); 210 this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); 211 this.taskPrioritizer = new TaskPrioritizer(storageManager); 212 this.jetImportsFactory = new JetImportsFactory(); 213 this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace); 214 this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); 215 this.scriptBodyResolver = new ScriptBodyResolver(); 216 this.additionalFileScopeProvider = new AdditionalFileScopeProvider(); 217 this.javaClassDataFinder = new JavaClassDataFinder(jvmVirtualFileFinder, deserializedDescriptorResolver); 218 this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, jvmVirtualFileFinder, traceBasedErrorReporter); 219 this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); 220 221 this.resolveSession.setAnnotationResolve(annotationResolver); 222 this.resolveSession.setDescriptorResolver(descriptorResolver); 223 this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); 224 this.resolveSession.setJetImportFactory(jetImportsFactory); 225 this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); 226 this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); 227 this.resolveSession.setScopeProvider(scopeProvider); 228 this.resolveSession.setScriptBodyResolver(scriptBodyResolver); 229 this.resolveSession.setTypeResolver(typeResolver); 230 231 scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); 232 scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); 233 234 javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); 235 javaClassFinder.setProject(project); 236 javaClassFinder.setScope(moduleContentScope); 237 238 traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); 239 traceBasedExternalSignatureResolver.setProject(project); 240 traceBasedExternalSignatureResolver.setTrace(bindingTrace); 241 242 lazyResolveBasedCache.setSession(resolveSession); 243 244 traceBasedErrorReporter.setTrace(bindingTrace); 245 246 psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); 247 psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); 248 249 javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession); 250 javaLazyAnalyzerPostConstruct.setProject(project); 251 javaLazyAnalyzerPostConstruct.setTrace(bindingTrace); 252 253 annotationResolver.setCallResolver(callResolver); 254 annotationResolver.setStorageManager(storageManager); 255 annotationResolver.setTypeResolver(typeResolver); 256 257 callResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); 258 callResolver.setArgumentTypeResolver(argumentTypeResolver); 259 callResolver.setCallCompleter(callCompleter); 260 callResolver.setCandidateResolver(candidateResolver); 261 callResolver.setExpressionTypingServices(expressionTypingServices); 262 callResolver.setTaskPrioritizer(taskPrioritizer); 263 callResolver.setTypeResolver(typeResolver); 264 265 argumentTypeResolver.setBuiltIns(kotlinBuiltIns); 266 argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); 267 argumentTypeResolver.setTypeResolver(typeResolver); 268 269 expressionTypingServices.setStatementFilter(statementFilter); 270 271 expressionTypingComponents.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); 272 expressionTypingComponents.setAnnotationResolver(annotationResolver); 273 expressionTypingComponents.setBuiltIns(kotlinBuiltIns); 274 expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); 275 expressionTypingComponents.setCallResolver(callResolver); 276 expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); 277 expressionTypingComponents.setDescriptorResolver(descriptorResolver); 278 expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); 279 expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); 280 expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); 281 expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); 282 expressionTypingComponents.setGlobalContext(moduleContext); 283 expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); 284 expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); 285 expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); 286 expressionTypingComponents.setReflectionTypes(reflectionTypes); 287 expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); 288 expressionTypingComponents.setTypeResolver(typeResolver); 289 expressionTypingComponents.setValueParameterResolver(valueParameterResolver); 290 291 callExpressionResolver.setExpressionTypingServices(expressionTypingServices); 292 293 descriptorResolver.setAnnotationResolver(annotationResolver); 294 descriptorResolver.setBuiltIns(kotlinBuiltIns); 295 descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); 296 descriptorResolver.setExpressionTypingServices(expressionTypingServices); 297 descriptorResolver.setStorageManager(storageManager); 298 descriptorResolver.setTypeResolver(typeResolver); 299 300 delegatedPropertyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); 301 delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); 302 delegatedPropertyResolver.setCallResolver(callResolver); 303 delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); 304 305 qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); 306 307 forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); 308 forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); 309 forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); 310 311 candidateResolver.setArgumentTypeResolver(argumentTypeResolver); 312 313 jetImportsFactory.setProject(project); 314 315 lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); 316 lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); 317 318 declarationScopeProvider.setFileScopeProvider(scopeProvider); 319 320 scriptBodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); 321 scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); 322 323 deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); 324 325 javaClassFinder.initialize(); 326 327 javaLazyAnalyzerPostConstruct.postCreate(); 328 329 } 330 331 @PreDestroy 332 public void destroy() { 333 } 334 335 public ModuleContext getModuleContext() { 336 return this.moduleContext; 337 } 338 339 public ResolveSession getResolveSession() { 340 return this.resolveSession; 341 } 342 343 public JavaDescriptorResolver getJavaDescriptorResolver() { 344 return this.javaDescriptorResolver; 345 } 346 347 }