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 }