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