From 2b9fc5268e24583fba6eedee23675f02a81f2a10 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 23 Jul 2015 16:19:22 +0300 Subject: [PATCH] Inject ConstantExpressionEvaluator into JsCallChecker Do not pass expected type into evaluateExpression --- .../kotlin/js/resolve/JsPlatformConfigurator.kt | 12 ++++++++++-- .../kotlin/js/resolve/diagnostics/JsCallChecker.kt | 7 +++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt index d72bff060b7..e9e1d8c0caa 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.js.resolve +import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallChecker import org.jetbrains.kotlin.resolve.PlatformConfigurator import org.jetbrains.kotlin.types.DynamicTypesAllowed @@ -23,7 +25,13 @@ import org.jetbrains.kotlin.types.DynamicTypesAllowed public object JsPlatformConfigurator : PlatformConfigurator( DynamicTypesAllowed(), additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), ClassDeclarationChecker()), - additionalCallCheckers = listOf(JsCallChecker()), + additionalCallCheckers = listOf(), additionalTypeCheckers = listOf(), additionalSymbolUsageValidators = listOf() -) +) { + override fun configure(container: StorageComponentContainer) { + super.configure(container) + + container.useImpl() + } +} diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsCallChecker.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsCallChecker.kt index 54107641d08..915a899537c 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsCallChecker.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/diagnostics/JsCallChecker.kt @@ -44,9 +44,12 @@ import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant import org.jetbrains.kotlin.resolve.constants.StringValue import org.jetbrains.kotlin.resolve.constants.TypedCompileTimeConstant import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator +import org.jetbrains.kotlin.types.TypeUtils import kotlin.platform.platformStatic -public class JsCallChecker : CallChecker { +public class JsCallChecker( + private val constantExpressionEvaluator: ConstantExpressionEvaluator +) : CallChecker { companion object { private val JS_PATTERN: DescriptorPredicate = PatternBuilder.pattern("kotlin.js.js(String)") @@ -74,7 +77,7 @@ public class JsCallChecker : CallChecker { val trace = TemporaryBindingTrace.create(context.trace, "JsCallChecker") - val evaluationResult = ConstantExpressionEvaluator.evaluate(argument, trace, KotlinBuiltIns.getInstance().getStringType()) + val evaluationResult = constantExpressionEvaluator.evaluateExpression(argument, trace, TypeUtils.NO_EXPECTED_TYPE) val code = extractStringValue(evaluationResult) if (code == null) {