Inject ConstantExpressionEvaluator in BasicExpressionTypingVisitor via ExpressionTypingComponents
This commit is contained in:
+8
-5
@@ -111,7 +111,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
|
||||
@Override
|
||||
public JetTypeInfo visitConstantExpression(@NotNull JetConstantExpression expression, ExpressionTypingContext context) {
|
||||
CompileTimeConstant<?> compileTimeConstant = ConstantExpressionEvaluator.evaluate(expression, context.trace, context.expectedType);
|
||||
CompileTimeConstant<?> compileTimeConstant = components.constantExpressionEvaluator.evaluateExpression(
|
||||
expression, context.trace, context.expectedType
|
||||
);
|
||||
|
||||
if (!(compileTimeConstant instanceof IntegerValueTypeConstant)) {
|
||||
CompileTimeConstantChecker compileTimeConstantChecker = context.getCompileTimeConstantChecker();
|
||||
@@ -776,8 +778,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
result = returnType;
|
||||
}
|
||||
|
||||
CompileTimeConstant<?> value = ConstantExpressionEvaluator.evaluate(expression, contextWithExpectedType.trace,
|
||||
contextWithExpectedType.expectedType);
|
||||
CompileTimeConstant<?> value = components.constantExpressionEvaluator.evaluateExpression(
|
||||
expression, contextWithExpectedType.trace, contextWithExpectedType.expectedType
|
||||
);
|
||||
if (value != null) {
|
||||
return createCompileTimeConstantTypeInfo(value, expression, contextWithExpectedType);
|
||||
}
|
||||
@@ -971,7 +974,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
context.trace.report(UNSUPPORTED.on(operationSign, "Unknown operation"));
|
||||
result = TypeInfoFactoryPackage.noTypeInfo(context);
|
||||
}
|
||||
CompileTimeConstant<?> value = ConstantExpressionEvaluator.evaluate(
|
||||
CompileTimeConstant<?> value = components.constantExpressionEvaluator.evaluateExpression(
|
||||
expression, contextWithExpectedType.trace, contextWithExpectedType.expectedType
|
||||
);
|
||||
if (value != null) {
|
||||
@@ -1342,7 +1345,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
for (JetStringTemplateEntry entry : expression.getEntries()) {
|
||||
entry.accept(visitor);
|
||||
}
|
||||
ConstantExpressionEvaluator.evaluate(expression, context.trace, contextWithExpectedType.expectedType);
|
||||
components.constantExpressionEvaluator.evaluateExpression(expression, context.trace, contextWithExpectedType.expectedType);
|
||||
return DataFlowUtils.checkType(visitor.typeInfo.replaceType(components.builtIns.getStringType()),
|
||||
expression,
|
||||
contextWithExpectedType);
|
||||
|
||||
+7
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.kotlin.resolve.*;
|
||||
import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver;
|
||||
import org.jetbrains.kotlin.resolve.calls.CallResolver;
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
|
||||
import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator;
|
||||
import org.jetbrains.kotlin.types.DynamicTypesSettings;
|
||||
import org.jetbrains.kotlin.builtins.ReflectionTypes;
|
||||
@@ -49,6 +50,7 @@ public class ExpressionTypingComponents {
|
||||
/*package*/ AnnotationResolver annotationResolver;
|
||||
/*package*/ ValueParameterResolver valueParameterResolver;
|
||||
/*package*/ MultiDeclarationResolver multiDeclarationResolver;
|
||||
/*package*/ ConstantExpressionEvaluator constantExpressionEvaluator;
|
||||
|
||||
@Inject
|
||||
public void setGlobalContext(@NotNull GlobalContext globalContext) {
|
||||
@@ -154,4 +156,9 @@ public class ExpressionTypingComponents {
|
||||
public AdditionalCheckerProvider getAdditionalCheckerProvider() {
|
||||
return additionalCheckerProvider;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setConstantExpressionEvaluator(@NotNull ConstantExpressionEvaluator constantExpressionEvaluator) {
|
||||
this.constantExpressionEvaluator = constantExpressionEvaluator;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user