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