From 855e3d2bf41d5149eded3f2c2e99a0c65e8442b8 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 20 Jul 2015 18:21:04 +0300 Subject: [PATCH] Inject ConstantExpressionEvaluator in BasicExpressionTypingVisitor via ExpressionTypingComponents --- .../expressions/BasicExpressionTypingVisitor.java | 13 ++++++++----- .../expressions/ExpressionTypingComponents.java | 7 +++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java index 3b1ee774e89..becb94c2792 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/BasicExpressionTypingVisitor.java @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java index 695f3763239..45bd05ae3fd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java @@ -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; + } }