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