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