diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.java index a2fc4c7b3c5..21447bd2e64 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.java @@ -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); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ValueParameterResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ValueParameterResolver.kt index 43706b62fb4..d71dd0935df 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ValueParameterResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ValueParameterResolver.kt @@ -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, @@ -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)) } }