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