Inject ConstantExpressionEvaluator to some points of usage
This commit is contained in:
+4
-2
@@ -60,9 +60,11 @@ import static org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE;
|
||||
public class CallExpressionResolver {
|
||||
|
||||
private final CallResolver callResolver;
|
||||
private final ConstantExpressionEvaluator constantExpressionEvaluator;
|
||||
|
||||
public CallExpressionResolver(@NotNull CallResolver callResolver) {
|
||||
public CallExpressionResolver(@NotNull CallResolver callResolver, @NotNull ConstantExpressionEvaluator constantExpressionEvaluator) {
|
||||
this.callResolver = callResolver;
|
||||
this.constantExpressionEvaluator = constantExpressionEvaluator;
|
||||
}
|
||||
|
||||
private ExpressionTypingServices expressionTypingServices;
|
||||
@@ -367,7 +369,7 @@ public class CallExpressionResolver {
|
||||
context.trace.recordType(selectorExpression, selectorReturnType);
|
||||
}
|
||||
|
||||
CompileTimeConstant<?> value = ConstantExpressionEvaluator.evaluate(expression, context.trace, context.expectedType);
|
||||
CompileTimeConstant<?> value = constantExpressionEvaluator.evaluateExpression(expression, context.trace, context.expectedType);
|
||||
if (value != null && value.getIsPure()) {
|
||||
return ExpressionTypingUtils.createCompileTimeConstantTypeInfo(value, expression, context);
|
||||
}
|
||||
|
||||
+7
-4
@@ -19,17 +19,20 @@ package org.jetbrains.kotlin.types.expressions
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.JetParameter
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
public class ValueParameterResolver(
|
||||
private val additionalCheckerProvider: AdditionalCheckerProvider,
|
||||
private val expressionTypingServices: ExpressionTypingServices
|
||||
private val expressionTypingServices: ExpressionTypingServices,
|
||||
private val constantExpressionEvaluator: ConstantExpressionEvaluator
|
||||
) {
|
||||
public fun resolveValueParameters(
|
||||
valueParameters: List<JetParameter>,
|
||||
@@ -66,7 +69,7 @@ public class ValueParameterResolver(
|
||||
val defaultValue = jetParameter.getDefaultValue() ?: return
|
||||
expressionTypingServices.getTypeInfo(defaultValue, context.replaceExpectedType(valueParameterDescriptor.getType()))
|
||||
if (DescriptorUtils.isAnnotationClass(DescriptorResolver.getContainingClass(context.scope))) {
|
||||
ConstantExpressionEvaluator.evaluate(defaultValue, context.trace, valueParameterDescriptor.getType())
|
||||
constantExpressionEvaluator.evaluateExpression(defaultValue, context.trace, valueParameterDescriptor.getType())
|
||||
?: context.trace.report(Errors.ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT.on(defaultValue))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user