From 82f979b11fb99b883aaaddc209712ae1df4de3a8 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 22 Jun 2021 16:45:11 +0300 Subject: [PATCH] [JS IR] Add property name to boolean in externals diagnostic --- .../backend/js/lower/BooleanPropertyInExternalLowering.kt | 4 +++- .../stdlib/js-ir/runtime/booleanInExternalHelpers.kt | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BooleanPropertyInExternalLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BooleanPropertyInExternalLowering.kt index 3980be44525..dfee55d628d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BooleanPropertyInExternalLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BooleanPropertyInExternalLowering.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.expressions.IrCall import org.jetbrains.kotlin.ir.expressions.IrExpression +import org.jetbrains.kotlin.ir.interpreter.toIrConst import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid @@ -77,7 +78,8 @@ class BooleanPropertyInExternalLowering( val call = JsIrBuilder.buildCall( target = function!! ).apply { - putValueArgument(0, irGet(tmp)) + putValueArgument(0, property.name.identifier.toIrConst(context.irBuiltIns.stringType)) + putValueArgument(1, irGet(tmp)) } +call diff --git a/libraries/stdlib/js-ir/runtime/booleanInExternalHelpers.kt b/libraries/stdlib/js-ir/runtime/booleanInExternalHelpers.kt index 1baf66f1bd1..0877025e653 100644 --- a/libraries/stdlib/js-ir/runtime/booleanInExternalHelpers.kt +++ b/libraries/stdlib/js-ir/runtime/booleanInExternalHelpers.kt @@ -10,14 +10,14 @@ import JsError @JsName("Boolean") internal external fun nativeBoolean(obj: Any?): Boolean -internal fun booleanInExternalLog(obj: dynamic) { +internal fun booleanInExternalLog(name: String, obj: dynamic) { if (jsTypeOf(obj) != "boolean") { - console.asDynamic().error("Boolean expected, but actual:", obj) + console.asDynamic().error("Boolean expected for '$name', but actual:", obj) } } -internal fun booleanInExternalException(obj: dynamic) { +internal fun booleanInExternalException(name: String, obj: dynamic) { if (jsTypeOf(obj) != "boolean") { - throw JsError("Boolean expected, but actual: $obj") + throw JsError("Boolean expected for '$name', but actual: $obj") } } \ No newline at end of file