diff --git a/generators/builtins/primitives/CharGenerator.kt b/generators/builtins/primitives/CharGenerator.kt index a52ebfc6b26..73946178f66 100644 --- a/generators/builtins/primitives/CharGenerator.kt +++ b/generators/builtins/primitives/CharGenerator.kt @@ -419,7 +419,7 @@ class JsCharGenerator(writer: PrintWriter) : CharGenerator(writer) { } override fun MethodBuilder.modifyGeneratedToString() { - additionalDoc = "TODO implicit usages of toString and valueOf must be covered in DCE" + additionalComments = "TODO implicit usages of toString and valueOf must be covered in DCE" annotations += "Suppress(\"JS_NAME_PROHIBITED_FOR_OVERRIDE\")" annotations += "JsName(\"toString\")" "return js(\"String\").fromCharCode(value).unsafeCast()".addAsMultiLineBody() diff --git a/generators/builtins/primitives/JsPrimitivesGenerator.kt b/generators/builtins/primitives/JsPrimitivesGenerator.kt index a2b6c3f7cdf..c6382c67823 100644 --- a/generators/builtins/primitives/JsPrimitivesGenerator.kt +++ b/generators/builtins/primitives/JsPrimitivesGenerator.kt @@ -146,7 +146,7 @@ class JsPrimitivesGenerator(writer: PrintWriter) : BasePrimitivesGenerator(write if (thisKind == PrimitiveType.LONG) { method { - additionalDoc = """ + additionalComments = """ This method is used by JavaScript to convert objects of type Long to primitives. This is essential for the JavaScript interop. JavaScript functions that expect `number` are imported in Kotlin as expecting `kotlin.Number` diff --git a/generators/builtins/primitives/WasmPrimitivesGenerator.kt b/generators/builtins/primitives/WasmPrimitivesGenerator.kt index 869b0a9c33e..c8456802635 100644 --- a/generators/builtins/primitives/WasmPrimitivesGenerator.kt +++ b/generators/builtins/primitives/WasmPrimitivesGenerator.kt @@ -120,7 +120,7 @@ class WasmPrimitivesGenerator(writer: PrintWriter) : BasePrimitivesGenerator(wri override fun MethodBuilder.modifyGeneratedUnaryOperation(thisKind: PrimitiveType) { if (thisKind == PrimitiveType.INT && methodName == "dec") { - additionalDoc = "TODO: Fix test compiler/testData/codegen/box/functions/invoke/invoke.kt with inline dec" + additionalComments = "TODO: Fix test compiler/testData/codegen/box/functions/invoke/invoke.kt with inline dec" } else { modifySignature { isInline = true } } diff --git a/generators/builtins/primitives/builders.kt b/generators/builtins/primitives/builders.kt index c163856c0a4..7d9426545b9 100644 --- a/generators/builtins/primitives/builders.kt +++ b/generators/builtins/primitives/builders.kt @@ -40,7 +40,7 @@ internal interface PrimitiveBuilder { internal abstract class AnnotatedAndDocumented { private var doc: String? = null val annotations: MutableList = mutableListOf() - var additionalDoc: String? = null + var additionalComments: String? = null fun appendDoc(doc: String) { if (this.doc == null) { @@ -55,15 +55,15 @@ internal abstract class AnnotatedAndDocumented { appendLine(doc!!.printAsDoc(forceMultiLineDoc)) } - if (annotations.isNotEmpty()) { - appendLine(annotations.joinToString(separator = END_LINE) { "@$it" }) - } - - if (additionalDoc != null) { - additionalDoc!!.lines().forEach { line -> + if (additionalComments != null) { + additionalComments!!.lines().forEach { line -> appendLine("// $line") } } + + if (annotations.isNotEmpty()) { + appendLine(annotations.joinToString(separator = END_LINE) { "@$it" }) + } } private fun String.printAsDoc(forceMultiLine: Boolean = false): String { diff --git a/libraries/stdlib/js-ir/builtins/Char.kt b/libraries/stdlib/js-ir/builtins/Char.kt index c7253e403e6..3cb214ff072 100644 --- a/libraries/stdlib/js-ir/builtins/Char.kt +++ b/libraries/stdlib/js-ir/builtins/Char.kt @@ -106,10 +106,10 @@ internal constructor(private val value: Int) : Comparable { @kotlin.internal.IntrinsicConstEvaluation public fun toDouble(): Double = value.toDouble() + // TODO implicit usages of toString and valueOf must be covered in DCE @kotlin.internal.IntrinsicConstEvaluation @Suppress("JS_NAME_PROHIBITED_FOR_OVERRIDE") @JsName("toString") - // TODO implicit usages of toString and valueOf must be covered in DCE public override fun toString(): String { return js("String").fromCharCode(value).unsafeCast() } diff --git a/libraries/stdlib/js-ir/builtins/Primitives.kt b/libraries/stdlib/js-ir/builtins/Primitives.kt index fe42c49cf65..398688db5cf 100644 --- a/libraries/stdlib/js-ir/builtins/Primitives.kt +++ b/libraries/stdlib/js-ir/builtins/Primitives.kt @@ -1578,13 +1578,13 @@ public class Long internal constructor(internal val low: Int, internal val high: public override fun hashCode(): Int = hashCode(this) - @JsName("valueOf") // This method is used by JavaScript to convert objects of type Long to primitives. // This is essential for the JavaScript interop. // JavaScript functions that expect `number` are imported in Kotlin as expecting `kotlin.Number` // (in our standard library, and also in user projects if they use Dukat for generating external declarations). // Because `kotlin.Number` is a supertype of `Long` too, there has to be a way for JS to know how to handle Longs. // See KT-50202 + @JsName("valueOf") internal fun valueOf(): Double = toDouble() }