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
|
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.js.resolve.diagnostics.JsCallChecker
|
||||||
import org.jetbrains.kotlin.resolve.PlatformConfigurator
|
import org.jetbrains.kotlin.resolve.PlatformConfigurator
|
||||||
import org.jetbrains.kotlin.types.DynamicTypesAllowed
|
import org.jetbrains.kotlin.types.DynamicTypesAllowed
|
||||||
@@ -23,7 +25,13 @@ import org.jetbrains.kotlin.types.DynamicTypesAllowed
|
|||||||
public object JsPlatformConfigurator : PlatformConfigurator(
|
public object JsPlatformConfigurator : PlatformConfigurator(
|
||||||
DynamicTypesAllowed(),
|
DynamicTypesAllowed(),
|
||||||
additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), ClassDeclarationChecker()),
|
additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), ClassDeclarationChecker()),
|
||||||
additionalCallCheckers = listOf(JsCallChecker()),
|
additionalCallCheckers = listOf(),
|
||||||
additionalTypeCheckers = listOf(),
|
additionalTypeCheckers = listOf(),
|
||||||
additionalSymbolUsageValidators = 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.StringValue
|
||||||
import org.jetbrains.kotlin.resolve.constants.TypedCompileTimeConstant
|
import org.jetbrains.kotlin.resolve.constants.TypedCompileTimeConstant
|
||||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||||
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
import kotlin.platform.platformStatic
|
import kotlin.platform.platformStatic
|
||||||
|
|
||||||
public class JsCallChecker : CallChecker {
|
public class JsCallChecker(
|
||||||
|
private val constantExpressionEvaluator: ConstantExpressionEvaluator
|
||||||
|
) : CallChecker {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val JS_PATTERN: DescriptorPredicate = PatternBuilder.pattern("kotlin.js.js(String)")
|
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 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)
|
val code = extractStringValue(evaluationResult)
|
||||||
|
|
||||||
if (code == null) {
|
if (code == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user