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.resolve.StatementFilter; 029 import org.jetbrains.kotlin.resolve.BodyResolver; 030 import org.jetbrains.kotlin.resolve.AnnotationResolver; 031 import org.jetbrains.kotlin.resolve.calls.CallResolver; 032 import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; 033 import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; 034 import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; 035 import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; 036 import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; 037 import org.jetbrains.kotlin.resolve.DescriptorResolver; 038 import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; 039 import org.jetbrains.kotlin.resolve.TypeResolver; 040 import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; 041 import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; 042 import org.jetbrains.kotlin.context.TypeLazinessToken; 043 import org.jetbrains.kotlin.types.DynamicTypesSettings; 044 import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; 045 import org.jetbrains.kotlin.types.expressions.FakeCallResolver; 046 import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; 047 import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; 048 import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; 049 import org.jetbrains.kotlin.builtins.ReflectionTypes; 050 import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; 051 import org.jetbrains.kotlin.resolve.calls.CallCompleter; 052 import org.jetbrains.kotlin.resolve.calls.CandidateResolver; 053 import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; 054 import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; 055 import org.jetbrains.kotlin.resolve.DeclarationsChecker; 056 import org.jetbrains.kotlin.resolve.ModifiersChecker; 057 import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; 058 import org.jetbrains.kotlin.resolve.ScriptBodyResolver; 059 import org.jetbrains.annotations.NotNull; 060 import javax.annotation.PreDestroy; 061 062 /* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ 063 @SuppressWarnings("all") 064 public class InjectorForBodyResolve { 065 066 private final ModuleContext moduleContext; 067 private final KotlinBuiltIns kotlinBuiltIns; 068 private final ModuleDescriptor moduleDescriptor; 069 private final PlatformToKotlinClassMap platformToKotlinClassMap; 070 private final Project project; 071 private final StorageManager storageManager; 072 private final BindingTrace bindingTrace; 073 private final AdditionalCheckerProvider additionalCheckerProvider; 074 private final SymbolUsageValidator symbolUsageValidator; 075 private final StatementFilter statementFilter; 076 private final BodyResolver bodyResolver; 077 private final AnnotationResolver annotationResolver; 078 private final CallResolver callResolver; 079 private final ArgumentTypeResolver argumentTypeResolver; 080 private final ExpressionTypingServices expressionTypingServices; 081 private final ExpressionTypingComponents expressionTypingComponents; 082 private final CallExpressionResolver callExpressionResolver; 083 private final ControlStructureTypingUtils controlStructureTypingUtils; 084 private final DescriptorResolver descriptorResolver; 085 private final DelegatedPropertyResolver delegatedPropertyResolver; 086 private final TypeResolver typeResolver; 087 private final QualifiedExpressionResolver qualifiedExpressionResolver; 088 private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; 089 private final TypeLazinessToken typeLazinessToken; 090 private final DynamicTypesSettings dynamicTypesSettings; 091 private final ForLoopConventionsChecker forLoopConventionsChecker; 092 private final FakeCallResolver fakeCallResolver; 093 private final FunctionDescriptorResolver functionDescriptorResolver; 094 private final LocalClassifierAnalyzer localClassifierAnalyzer; 095 private final MultiDeclarationResolver multiDeclarationResolver; 096 private final ReflectionTypes reflectionTypes; 097 private final ValueParameterResolver valueParameterResolver; 098 private final CallCompleter callCompleter; 099 private final CandidateResolver candidateResolver; 100 private final TaskPrioritizer taskPrioritizer; 101 private final ControlFlowAnalyzer controlFlowAnalyzer; 102 private final DeclarationsChecker declarationsChecker; 103 private final ModifiersChecker modifiersChecker; 104 private final FunctionAnalyzerExtension functionAnalyzerExtension; 105 private final ScriptBodyResolver scriptBodyResolver; 106 107 public InjectorForBodyResolve( 108 @NotNull ModuleContext moduleContext, 109 @NotNull BindingTrace bindingTrace, 110 @NotNull AdditionalCheckerProvider additionalCheckerProvider, 111 @NotNull StatementFilter statementFilter 112 ) { 113 this.moduleContext = moduleContext; 114 this.kotlinBuiltIns = moduleContext.getBuiltIns(); 115 this.moduleDescriptor = moduleContext.getModule(); 116 this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); 117 this.project = moduleContext.getProject(); 118 this.storageManager = moduleContext.getStorageManager(); 119 this.bindingTrace = bindingTrace; 120 this.additionalCheckerProvider = additionalCheckerProvider; 121 this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); 122 this.statementFilter = statementFilter; 123 this.bodyResolver = new BodyResolver(); 124 this.annotationResolver = new AnnotationResolver(); 125 this.callResolver = new CallResolver(); 126 this.argumentTypeResolver = new ArgumentTypeResolver(); 127 this.expressionTypingComponents = new ExpressionTypingComponents(); 128 this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); 129 this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); 130 this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); 131 this.descriptorResolver = new DescriptorResolver(); 132 this.delegatedPropertyResolver = new DelegatedPropertyResolver(); 133 this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); 134 this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); 135 this.typeLazinessToken = new TypeLazinessToken(); 136 this.dynamicTypesSettings = new DynamicTypesSettings(); 137 this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); 138 this.forLoopConventionsChecker = new ForLoopConventionsChecker(); 139 this.fakeCallResolver = new FakeCallResolver(project, callResolver); 140 this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); 141 this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); 142 this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); 143 this.reflectionTypes = new ReflectionTypes(moduleDescriptor); 144 this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); 145 this.candidateResolver = new CandidateResolver(); 146 this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); 147 this.taskPrioritizer = new TaskPrioritizer(storageManager); 148 this.controlFlowAnalyzer = new ControlFlowAnalyzer(); 149 this.declarationsChecker = new DeclarationsChecker(); 150 this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); 151 this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); 152 this.scriptBodyResolver = new ScriptBodyResolver(); 153 154 this.bodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 155 this.bodyResolver.setAnnotationResolver(annotationResolver); 156 this.bodyResolver.setCallResolver(callResolver); 157 this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); 158 this.bodyResolver.setDeclarationsChecker(declarationsChecker); 159 this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); 160 this.bodyResolver.setExpressionTypingServices(expressionTypingServices); 161 this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); 162 this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); 163 this.bodyResolver.setTrace(bindingTrace); 164 this.bodyResolver.setValueParameterResolver(valueParameterResolver); 165 166 annotationResolver.setCallResolver(callResolver); 167 annotationResolver.setStorageManager(storageManager); 168 annotationResolver.setTypeResolver(typeResolver); 169 170 callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 171 callResolver.setArgumentTypeResolver(argumentTypeResolver); 172 callResolver.setCallCompleter(callCompleter); 173 callResolver.setCandidateResolver(candidateResolver); 174 callResolver.setExpressionTypingServices(expressionTypingServices); 175 callResolver.setTaskPrioritizer(taskPrioritizer); 176 callResolver.setTypeResolver(typeResolver); 177 178 argumentTypeResolver.setBuiltIns(kotlinBuiltIns); 179 argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); 180 argumentTypeResolver.setTypeResolver(typeResolver); 181 182 expressionTypingServices.setStatementFilter(statementFilter); 183 184 expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); 185 expressionTypingComponents.setAnnotationResolver(annotationResolver); 186 expressionTypingComponents.setBuiltIns(kotlinBuiltIns); 187 expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); 188 expressionTypingComponents.setCallResolver(callResolver); 189 expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); 190 expressionTypingComponents.setDescriptorResolver(descriptorResolver); 191 expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); 192 expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); 193 expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); 194 expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); 195 expressionTypingComponents.setGlobalContext(moduleContext); 196 expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); 197 expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); 198 expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); 199 expressionTypingComponents.setReflectionTypes(reflectionTypes); 200 expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); 201 expressionTypingComponents.setTypeResolver(typeResolver); 202 expressionTypingComponents.setValueParameterResolver(valueParameterResolver); 203 204 callExpressionResolver.setExpressionTypingServices(expressionTypingServices); 205 206 descriptorResolver.setAnnotationResolver(annotationResolver); 207 descriptorResolver.setBuiltIns(kotlinBuiltIns); 208 descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); 209 descriptorResolver.setExpressionTypingServices(expressionTypingServices); 210 descriptorResolver.setStorageManager(storageManager); 211 descriptorResolver.setTypeResolver(typeResolver); 212 213 delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 214 delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); 215 delegatedPropertyResolver.setCallResolver(callResolver); 216 delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); 217 218 qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); 219 220 forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); 221 forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); 222 forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); 223 224 candidateResolver.setArgumentTypeResolver(argumentTypeResolver); 225 226 controlFlowAnalyzer.setTrace(bindingTrace); 227 228 declarationsChecker.setDescriptorResolver(descriptorResolver); 229 declarationsChecker.setModifiersChecker(modifiersChecker); 230 declarationsChecker.setTrace(bindingTrace); 231 232 functionAnalyzerExtension.setTrace(bindingTrace); 233 234 scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); 235 scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); 236 237 } 238 239 @PreDestroy 240 public void destroy() { 241 } 242 243 public BodyResolver getBodyResolver() { 244 return this.bodyResolver; 245 } 246 247 }