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.types.expressions;
018    
019    import org.jetbrains.annotations.NotNull;
020    import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
021    import org.jetbrains.kotlin.builtins.ReflectionTypes;
022    import org.jetbrains.kotlin.context.GlobalContext;
023    import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
024    import org.jetbrains.kotlin.resolve.*;
025    import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver;
026    import org.jetbrains.kotlin.resolve.calls.CallResolver;
027    import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker;
028    import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
029    import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator;
030    import org.jetbrains.kotlin.types.DynamicTypesSettings;
031    
032    import javax.inject.Inject;
033    
034    public class ExpressionTypingComponents {
035        /*package*/ GlobalContext globalContext;
036        /*package*/ ExpressionTypingServices expressionTypingServices;
037        /*package*/ CallResolver callResolver;
038        /*package*/ PlatformToKotlinClassMap platformToKotlinClassMap;
039        /*package*/ ControlStructureTypingUtils controlStructureTypingUtils;
040        /*package*/ ForLoopConventionsChecker forLoopConventionsChecker;
041        /*package*/ ReflectionTypes reflectionTypes;
042        /*package*/ SymbolUsageValidator symbolUsageValidator;
043        /*package*/ DynamicTypesSettings dynamicTypesSettings;
044        /*package*/ KotlinBuiltIns builtIns;
045        /*package*/ LocalClassifierAnalyzer localClassifierAnalyzer;
046        /*package*/ FunctionDescriptorResolver functionDescriptorResolver;
047        /*package*/ CallExpressionResolver callExpressionResolver;
048        /*package*/ DescriptorResolver descriptorResolver;
049        /*package*/ TypeResolver typeResolver;
050        /*package*/ AnnotationResolver annotationResolver;
051        /*package*/ ValueParameterResolver valueParameterResolver;
052        /*package*/ MultiDeclarationResolver multiDeclarationResolver;
053        /*package*/ ConstantExpressionEvaluator constantExpressionEvaluator;
054        /*package*/ ModifiersChecker modifiersChecker;
055        /*package*/ DataFlowAnalyzer dataFlowAnalyzer;
056        /*package*/ Iterable<CallChecker> callCheckers;
057        /*package*/ IdentifierChecker identifierChecker;
058    
059        @Inject
060        public void setGlobalContext(@NotNull GlobalContext globalContext) {
061            this.globalContext = globalContext;
062        }
063    
064        @Inject
065        public void setExpressionTypingServices(@NotNull ExpressionTypingServices expressionTypingServices) {
066            this.expressionTypingServices = expressionTypingServices;
067        }
068    
069        @Inject
070        public void setCallResolver(@NotNull CallResolver callResolver) {
071            this.callResolver = callResolver;
072        }
073    
074        @Inject
075        public void setPlatformToKotlinClassMap(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
076            this.platformToKotlinClassMap = platformToKotlinClassMap;
077        }
078    
079        @Inject
080        public void setControlStructureTypingUtils(@NotNull ControlStructureTypingUtils controlStructureTypingUtils) {
081            this.controlStructureTypingUtils = controlStructureTypingUtils;
082        }
083    
084        @Inject
085        public void setForLoopConventionsChecker(@NotNull ForLoopConventionsChecker forLoopConventionsChecker) {
086            this.forLoopConventionsChecker = forLoopConventionsChecker;
087        }
088    
089        @Inject
090        public void setReflectionTypes(@NotNull ReflectionTypes reflectionTypes) {
091            this.reflectionTypes = reflectionTypes;
092        }
093    
094        @Inject
095        public void setSymbolUsageValidator(SymbolUsageValidator symbolUsageValidator) {
096            this.symbolUsageValidator = symbolUsageValidator;
097        }
098    
099        @Inject
100        public void setDynamicTypesSettings(@NotNull DynamicTypesSettings dynamicTypesSettings) {
101            this.dynamicTypesSettings = dynamicTypesSettings;
102        }
103    
104        @Inject
105        public void setBuiltIns(@NotNull KotlinBuiltIns builtIns) {
106            this.builtIns = builtIns;
107        }
108    
109        @Inject
110        public void setLocalClassifierAnalyzer(@NotNull LocalClassifierAnalyzer localClassifierAnalyzer) {
111            this.localClassifierAnalyzer = localClassifierAnalyzer;
112        }
113    
114        @Inject
115        public void setFunctionDescriptorResolver(FunctionDescriptorResolver functionDescriptorResolver) {
116            this.functionDescriptorResolver = functionDescriptorResolver;
117        }
118    
119        @Inject
120        public void setCallExpressionResolver(CallExpressionResolver callExpressionResolver) {
121            this.callExpressionResolver = callExpressionResolver;
122        }
123    
124        @Inject
125        public void setDescriptorResolver(DescriptorResolver descriptorResolver) {
126            this.descriptorResolver = descriptorResolver;
127        }
128    
129        @Inject
130        public void setTypeResolver(TypeResolver typeResolver) {
131            this.typeResolver = typeResolver;
132        }
133    
134        @Inject
135        public void setAnnotationResolver(AnnotationResolver annotationResolver) {
136            this.annotationResolver = annotationResolver;
137        }
138    
139        @Inject
140        public void setValueParameterResolver(ValueParameterResolver valueParameterResolver) {
141            this.valueParameterResolver = valueParameterResolver;
142        }
143    
144        @Inject
145        public void setMultiDeclarationResolver(MultiDeclarationResolver multiDeclarationResolver) {
146            this.multiDeclarationResolver = multiDeclarationResolver;
147        }
148    
149        @NotNull
150        public ForLoopConventionsChecker getForLoopConventionsChecker() {
151            return forLoopConventionsChecker;
152        }
153    
154        @Inject
155        public void setConstantExpressionEvaluator(@NotNull ConstantExpressionEvaluator constantExpressionEvaluator) {
156            this.constantExpressionEvaluator = constantExpressionEvaluator;
157        }
158    
159        @Inject
160        public void setModifiersChecker(@NotNull ModifiersChecker modifiersChecker) {
161            this.modifiersChecker = modifiersChecker;
162        }
163    
164        @Inject
165        public void setIdentifierChecker(@NotNull IdentifierChecker identifierChecker) {
166            this.identifierChecker = identifierChecker;
167        }
168    
169        @Inject
170        public void setDataFlowAnalyzer(@NotNull DataFlowAnalyzer dataFlowAnalyzer) {
171            this.dataFlowAnalyzer = dataFlowAnalyzer;
172        }
173    
174        @Inject
175        public void setCallCheckers(@NotNull Iterable<CallChecker> callCheckers) {
176            this.callCheckers = callCheckers;
177        }
178    }