Inject ConstantExpressionEvaluator into JsCallChecker
Do not pass expected type into evaluateExpression
This commit is contained in:
@@ -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<JsCallChecker>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user