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.descriptors.ModuleDescriptor; 021 import org.jetbrains.kotlin.builtins.KotlinBuiltIns; 022 import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; 023 import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; 024 import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; 025 import org.jetbrains.kotlin.resolve.calls.CallResolver; 026 import org.jetbrains.kotlin.resolve.TypeResolver; 027 import org.jetbrains.kotlin.context.GlobalContext; 028 import org.jetbrains.kotlin.storage.StorageManager; 029 import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider.DefaultProvider; 030 import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; 031 import org.jetbrains.kotlin.resolve.StatementFilter; 032 import org.jetbrains.kotlin.resolve.AnnotationResolver; 033 import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; 034 import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; 035 import org.jetbrains.kotlin.resolve.DescriptorResolver; 036 import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; 037 import org.jetbrains.kotlin.types.DynamicTypesSettings; 038 import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; 039 import org.jetbrains.kotlin.types.expressions.FakeCallResolver; 040 import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; 041 import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; 042 import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; 043 import org.jetbrains.kotlin.builtins.ReflectionTypes; 044 import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; 045 import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; 046 import org.jetbrains.kotlin.resolve.calls.CallCompleter; 047 import org.jetbrains.kotlin.resolve.calls.CandidateResolver; 048 import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; 049 import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; 050 import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; 051 import org.jetbrains.kotlin.context.TypeLazinessToken; 052 import org.jetbrains.annotations.NotNull; 053 import javax.annotation.PreDestroy; 054 055 /* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ 056 @SuppressWarnings("all") 057 public class InjectorForMacros { 058 059 private final Project project; 060 private final ModuleDescriptor moduleDescriptor; 061 private final KotlinBuiltIns kotlinBuiltIns; 062 private final PlatformToKotlinClassMap platformToKotlinClassMap; 063 private final ExpressionTypingServices expressionTypingServices; 064 private final ExpressionTypingComponents expressionTypingComponents; 065 private final CallResolver callResolver; 066 private final TypeResolver typeResolver; 067 private final GlobalContext globalContext; 068 private final StorageManager storageManager; 069 private final DefaultProvider defaultProvider; 070 private final SymbolUsageValidator symbolUsageValidator; 071 private final StatementFilter statementFilter; 072 private final AnnotationResolver annotationResolver; 073 private final CallExpressionResolver callExpressionResolver; 074 private final ControlStructureTypingUtils controlStructureTypingUtils; 075 private final DescriptorResolver descriptorResolver; 076 private final DelegatedPropertyResolver delegatedPropertyResolver; 077 private final DynamicTypesSettings dynamicTypesSettings; 078 private final ForLoopConventionsChecker forLoopConventionsChecker; 079 private final FakeCallResolver fakeCallResolver; 080 private final FunctionDescriptorResolver functionDescriptorResolver; 081 private final LocalClassifierAnalyzer localClassifierAnalyzer; 082 private final MultiDeclarationResolver multiDeclarationResolver; 083 private final ReflectionTypes reflectionTypes; 084 private final ValueParameterResolver valueParameterResolver; 085 private final ArgumentTypeResolver argumentTypeResolver; 086 private final CallCompleter callCompleter; 087 private final CandidateResolver candidateResolver; 088 private final TaskPrioritizer taskPrioritizer; 089 private final QualifiedExpressionResolver qualifiedExpressionResolver; 090 private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; 091 private final TypeLazinessToken typeLazinessToken; 092 093 public InjectorForMacros( 094 @NotNull Project project, 095 @NotNull ModuleDescriptor moduleDescriptor 096 ) { 097 this.project = project; 098 this.moduleDescriptor = moduleDescriptor; 099 this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); 100 this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); 101 this.expressionTypingComponents = new ExpressionTypingComponents(); 102 this.expressionTypingServices = new ExpressionTypingServices(getExpressionTypingComponents()); 103 this.callResolver = new CallResolver(); 104 this.annotationResolver = new AnnotationResolver(); 105 this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); 106 this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); 107 this.globalContext = org.jetbrains.kotlin.context.ContextPackage.GlobalContext(); 108 this.storageManager = globalContext.getStorageManager(); 109 this.typeLazinessToken = new TypeLazinessToken(); 110 this.dynamicTypesSettings = new DynamicTypesSettings(); 111 this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); 112 this.defaultProvider = DefaultProvider.INSTANCE$; 113 this.symbolUsageValidator = defaultProvider.getSymbolUsageValidator(); 114 this.statementFilter = new StatementFilter(); 115 this.callExpressionResolver = new CallExpressionResolver(getCallResolver(), kotlinBuiltIns); 116 this.controlStructureTypingUtils = new ControlStructureTypingUtils(getCallResolver()); 117 this.descriptorResolver = new DescriptorResolver(); 118 this.delegatedPropertyResolver = new DelegatedPropertyResolver(); 119 this.forLoopConventionsChecker = new ForLoopConventionsChecker(); 120 this.fakeCallResolver = new FakeCallResolver(project, getCallResolver()); 121 this.functionDescriptorResolver = new FunctionDescriptorResolver(getTypeResolver(), descriptorResolver, annotationResolver, storageManager, getExpressionTypingServices(), kotlinBuiltIns); 122 this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, getTypeResolver(), annotationResolver); 123 this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, getTypeResolver(), symbolUsageValidator); 124 this.reflectionTypes = new ReflectionTypes(moduleDescriptor); 125 this.valueParameterResolver = new ValueParameterResolver(defaultProvider, getExpressionTypingServices()); 126 this.argumentTypeResolver = new ArgumentTypeResolver(); 127 this.candidateResolver = new CandidateResolver(); 128 this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); 129 this.taskPrioritizer = new TaskPrioritizer(storageManager); 130 131 this.expressionTypingServices.setStatementFilter(statementFilter); 132 133 this.expressionTypingComponents.setAdditionalCheckerProvider(defaultProvider); 134 this.expressionTypingComponents.setAnnotationResolver(annotationResolver); 135 this.expressionTypingComponents.setBuiltIns(kotlinBuiltIns); 136 this.expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); 137 this.expressionTypingComponents.setCallResolver(callResolver); 138 this.expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); 139 this.expressionTypingComponents.setDescriptorResolver(descriptorResolver); 140 this.expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); 141 this.expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); 142 this.expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); 143 this.expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); 144 this.expressionTypingComponents.setGlobalContext(globalContext); 145 this.expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); 146 this.expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); 147 this.expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); 148 this.expressionTypingComponents.setReflectionTypes(reflectionTypes); 149 this.expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); 150 this.expressionTypingComponents.setTypeResolver(typeResolver); 151 this.expressionTypingComponents.setValueParameterResolver(valueParameterResolver); 152 153 this.callResolver.setAdditionalCheckerProvider(defaultProvider); 154 this.callResolver.setArgumentTypeResolver(argumentTypeResolver); 155 this.callResolver.setCallCompleter(callCompleter); 156 this.callResolver.setCandidateResolver(candidateResolver); 157 this.callResolver.setExpressionTypingServices(expressionTypingServices); 158 this.callResolver.setTaskPrioritizer(taskPrioritizer); 159 this.callResolver.setTypeResolver(typeResolver); 160 161 annotationResolver.setCallResolver(callResolver); 162 annotationResolver.setStorageManager(storageManager); 163 annotationResolver.setTypeResolver(typeResolver); 164 165 callExpressionResolver.setExpressionTypingServices(expressionTypingServices); 166 167 descriptorResolver.setAnnotationResolver(annotationResolver); 168 descriptorResolver.setBuiltIns(kotlinBuiltIns); 169 descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); 170 descriptorResolver.setExpressionTypingServices(expressionTypingServices); 171 descriptorResolver.setStorageManager(storageManager); 172 descriptorResolver.setTypeResolver(typeResolver); 173 174 delegatedPropertyResolver.setAdditionalCheckerProvider(defaultProvider); 175 delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); 176 delegatedPropertyResolver.setCallResolver(callResolver); 177 delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); 178 179 forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); 180 forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); 181 forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); 182 183 argumentTypeResolver.setBuiltIns(kotlinBuiltIns); 184 argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); 185 argumentTypeResolver.setTypeResolver(typeResolver); 186 187 candidateResolver.setArgumentTypeResolver(argumentTypeResolver); 188 189 qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); 190 191 } 192 193 @PreDestroy 194 public void destroy() { 195 } 196 197 public ExpressionTypingServices getExpressionTypingServices() { 198 return this.expressionTypingServices; 199 } 200 201 public ExpressionTypingComponents getExpressionTypingComponents() { 202 return this.expressionTypingComponents; 203 } 204 205 public CallResolver getCallResolver() { 206 return this.callResolver; 207 } 208 209 public TypeResolver getTypeResolver() { 210 return this.typeResolver; 211 } 212 213 }