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.lazy.KotlinCodeAnalyzer; 026 import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider; 027 import org.jetbrains.kotlin.resolve.BindingTrace; 028 import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider; 029 import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; 030 import org.jetbrains.kotlin.types.DynamicTypesSettings; 031 import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel; 032 import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; 033 import org.jetbrains.kotlin.resolve.BodyResolver; 034 import org.jetbrains.kotlin.resolve.AnnotationResolver; 035 import org.jetbrains.kotlin.resolve.calls.CallResolver; 036 import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; 037 import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; 038 import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; 039 import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; 040 import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; 041 import org.jetbrains.kotlin.resolve.DescriptorResolver; 042 import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; 043 import org.jetbrains.kotlin.resolve.TypeResolver; 044 import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; 045 import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; 046 import org.jetbrains.kotlin.context.TypeLazinessToken; 047 import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; 048 import org.jetbrains.kotlin.types.expressions.FakeCallResolver; 049 import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; 050 import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; 051 import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; 052 import org.jetbrains.kotlin.builtins.ReflectionTypes; 053 import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; 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.lazy.DeclarationScopeProviderImpl; 065 import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; 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 InjectorForLazyBodyResolve { 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 KotlinCodeAnalyzer analyzer; 083 private final FileScopeProvider fileScopeProvider; 084 private final BindingTrace bindingTrace; 085 private final AdditionalCheckerProvider additionalCheckerProvider; 086 private final SymbolUsageValidator symbolUsageValidator; 087 private final DynamicTypesSettings dynamicTypesSettings; 088 private final LazyTopDownAnalyzerForTopLevel lazyTopDownAnalyzerForTopLevel; 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 CallExpressionResolver callExpressionResolver; 097 private final ControlStructureTypingUtils controlStructureTypingUtils; 098 private final DescriptorResolver descriptorResolver; 099 private final DelegatedPropertyResolver delegatedPropertyResolver; 100 private final TypeResolver typeResolver; 101 private final QualifiedExpressionResolver qualifiedExpressionResolver; 102 private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; 103 private final TypeLazinessToken typeLazinessToken; 104 private final ForLoopConventionsChecker forLoopConventionsChecker; 105 private final FakeCallResolver fakeCallResolver; 106 private final FunctionDescriptorResolver functionDescriptorResolver; 107 private final LocalClassifierAnalyzer localClassifierAnalyzer; 108 private final MultiDeclarationResolver multiDeclarationResolver; 109 private final ReflectionTypes reflectionTypes; 110 private final ValueParameterResolver valueParameterResolver; 111 private final StatementFilter statementFilter; 112 private final CallCompleter callCompleter; 113 private final CandidateResolver candidateResolver; 114 private final TaskPrioritizer taskPrioritizer; 115 private final ControlFlowAnalyzer controlFlowAnalyzer; 116 private final DeclarationsChecker declarationsChecker; 117 private final ModifiersChecker modifiersChecker; 118 private final FunctionAnalyzerExtension functionAnalyzerExtension; 119 private final ScriptBodyResolver scriptBodyResolver; 120 private final DeclarationResolver declarationResolver; 121 private final DeclarationScopeProviderImpl declarationScopeProvider; 122 private final LazyDeclarationResolver lazyDeclarationResolver; 123 private final OverloadResolver overloadResolver; 124 private final OverrideResolver overrideResolver; 125 private final VarianceChecker varianceChecker; 126 127 public InjectorForLazyBodyResolve( 128 @NotNull ModuleContext moduleContext, 129 @NotNull KotlinCodeAnalyzer analyzer, 130 @NotNull FileScopeProvider fileScopeProvider, 131 @NotNull BindingTrace bindingTrace, 132 @NotNull AdditionalCheckerProvider additionalCheckerProvider, 133 @NotNull DynamicTypesSettings dynamicTypesSettings 134 ) { 135 this.moduleContext = moduleContext; 136 this.kotlinBuiltIns = moduleContext.getBuiltIns(); 137 this.moduleDescriptor = moduleContext.getModule(); 138 this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); 139 this.project = moduleContext.getProject(); 140 this.storageManager = moduleContext.getStorageManager(); 141 this.analyzer = analyzer; 142 this.fileScopeProvider = fileScopeProvider; 143 this.bindingTrace = bindingTrace; 144 this.additionalCheckerProvider = additionalCheckerProvider; 145 this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); 146 this.dynamicTypesSettings = dynamicTypesSettings; 147 this.lazyTopDownAnalyzerForTopLevel = new LazyTopDownAnalyzerForTopLevel(); 148 this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); 149 this.bodyResolver = new BodyResolver(); 150 this.annotationResolver = new AnnotationResolver(); 151 this.callResolver = new CallResolver(); 152 this.argumentTypeResolver = new ArgumentTypeResolver(); 153 this.expressionTypingComponents = new ExpressionTypingComponents(); 154 this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); 155 this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); 156 this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); 157 this.descriptorResolver = new DescriptorResolver(); 158 this.delegatedPropertyResolver = new DelegatedPropertyResolver(); 159 this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); 160 this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); 161 this.typeLazinessToken = new TypeLazinessToken(); 162 this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); 163 this.forLoopConventionsChecker = new ForLoopConventionsChecker(); 164 this.fakeCallResolver = new FakeCallResolver(project, callResolver); 165 this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); 166 this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); 167 this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); 168 this.reflectionTypes = new ReflectionTypes(moduleDescriptor); 169 this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); 170 this.statementFilter = new StatementFilter(); 171 this.candidateResolver = new CandidateResolver(); 172 this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); 173 this.taskPrioritizer = new TaskPrioritizer(storageManager); 174 this.controlFlowAnalyzer = new ControlFlowAnalyzer(); 175 this.declarationsChecker = new DeclarationsChecker(); 176 this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); 177 this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); 178 this.scriptBodyResolver = new ScriptBodyResolver(); 179 this.declarationResolver = new DeclarationResolver(); 180 this.lazyDeclarationResolver = new LazyDeclarationResolver(moduleContext, bindingTrace); 181 this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); 182 this.overloadResolver = new OverloadResolver(); 183 this.overrideResolver = new OverrideResolver(); 184 this.varianceChecker = new VarianceChecker(bindingTrace); 185 186 this.lazyTopDownAnalyzerForTopLevel.setKotlinCodeAnalyzer(analyzer); 187 this.lazyTopDownAnalyzerForTopLevel.setLazyTopDownAnalyzer(lazyTopDownAnalyzer); 188 189 lazyTopDownAnalyzer.setBodyResolver(bodyResolver); 190 lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); 191 lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider); 192 lazyTopDownAnalyzer.setFileScopeProvider(fileScopeProvider); 193 lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver); 194 lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); 195 lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); 196 lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); 197 lazyTopDownAnalyzer.setTopLevelDescriptorProvider(analyzer); 198 lazyTopDownAnalyzer.setTrace(bindingTrace); 199 lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); 200 201 bodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 202 bodyResolver.setAnnotationResolver(annotationResolver); 203 bodyResolver.setCallResolver(callResolver); 204 bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); 205 bodyResolver.setDeclarationsChecker(declarationsChecker); 206 bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); 207 bodyResolver.setExpressionTypingServices(expressionTypingServices); 208 bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); 209 bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); 210 bodyResolver.setTrace(bindingTrace); 211 bodyResolver.setValueParameterResolver(valueParameterResolver); 212 213 annotationResolver.setCallResolver(callResolver); 214 annotationResolver.setStorageManager(storageManager); 215 annotationResolver.setTypeResolver(typeResolver); 216 217 callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 218 callResolver.setArgumentTypeResolver(argumentTypeResolver); 219 callResolver.setCallCompleter(callCompleter); 220 callResolver.setCandidateResolver(candidateResolver); 221 callResolver.setExpressionTypingServices(expressionTypingServices); 222 callResolver.setTaskPrioritizer(taskPrioritizer); 223 callResolver.setTypeResolver(typeResolver); 224 225 argumentTypeResolver.setBuiltIns(kotlinBuiltIns); 226 argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); 227 argumentTypeResolver.setTypeResolver(typeResolver); 228 229 expressionTypingServices.setStatementFilter(statementFilter); 230 231 expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); 232 expressionTypingComponents.setAnnotationResolver(annotationResolver); 233 expressionTypingComponents.setBuiltIns(kotlinBuiltIns); 234 expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); 235 expressionTypingComponents.setCallResolver(callResolver); 236 expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); 237 expressionTypingComponents.setDescriptorResolver(descriptorResolver); 238 expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); 239 expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); 240 expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); 241 expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); 242 expressionTypingComponents.setGlobalContext(moduleContext); 243 expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); 244 expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); 245 expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); 246 expressionTypingComponents.setReflectionTypes(reflectionTypes); 247 expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); 248 expressionTypingComponents.setTypeResolver(typeResolver); 249 expressionTypingComponents.setValueParameterResolver(valueParameterResolver); 250 251 callExpressionResolver.setExpressionTypingServices(expressionTypingServices); 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.setAdditionalCheckerProvider(additionalCheckerProvider); 261 delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); 262 delegatedPropertyResolver.setCallResolver(callResolver); 263 delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); 264 265 qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); 266 267 forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); 268 forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); 269 forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); 270 271 candidateResolver.setArgumentTypeResolver(argumentTypeResolver); 272 273 controlFlowAnalyzer.setTrace(bindingTrace); 274 275 declarationsChecker.setDescriptorResolver(descriptorResolver); 276 declarationsChecker.setModifiersChecker(modifiersChecker); 277 declarationsChecker.setTrace(bindingTrace); 278 279 functionAnalyzerExtension.setTrace(bindingTrace); 280 281 scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 282 scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); 283 284 declarationResolver.setAnnotationResolver(annotationResolver); 285 declarationResolver.setTrace(bindingTrace); 286 287 declarationScopeProvider.setFileScopeProvider(fileScopeProvider); 288 289 lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); 290 lazyDeclarationResolver.setTopLevelDescriptorProvider(analyzer); 291 292 overloadResolver.setTrace(bindingTrace); 293 294 overrideResolver.setTrace(bindingTrace); 295 296 } 297 298 @PreDestroy 299 public void destroy() { 300 } 301 302 public LazyTopDownAnalyzerForTopLevel getLazyTopDownAnalyzerForTopLevel() { 303 return this.lazyTopDownAnalyzerForTopLevel; 304 } 305 306 }