Conversión de Kotlin a error de Javascript: "restar no es una function"

Tengo un problema al convertir un código de Kotlin a JavaScript. Cada vez que uso la resta o la sum, se convierte en un código JavaScript no válido.

Tengo un proyecto de Kotlin JavaScript, configurado con Gradle. El comstackdor está configurado para generar salida a commonjs, y creé una aplicación NodeJS simple para ejecutar el código generado.

Archivo original de Kotlin:

import kotlin.js.JsName @JsName("testSubtraction") fun testSubtraction(a: Long, b: Long) : Long { return a - b } 

Archivo generado de salida:

 module.exports = function (Kotlin) { 'use strict'; var _ = Kotlin.defineRootPackage(null, /** @lends _ */ { testSubtraction: function (a, b) { return a.subtract(b); } }); Kotlin.defineModule('output', _); return _; }(require('kotlin')); //@ sourceMappingURL=output.js.map 

El error que obtengo al ejecutar el código es: TypeError: a.subtract no es una function

He probado usando Kotlin 1.0.5-2 y 1.1-M03, pero ambos se convierten con este mismo problema.

¿Cómo resuelvo este problema?

La solución alternativa que he encontrado hasta ahora es la definición manual de este método en mi aplicación, pero no me gustó:

 Number.prototype.subtract = function(a) { return this.valueOf() - a; } 

Creé un proyecto de muestra para demostrar este problema en GitHub: https://github.com/leandro-dev/test_kotlin_js

Kotlin Long no es number JS y el problema es que llama a testSubtraction con numbers JS.

Si quiere trabajar con el number JS, use Int en el código de Kotlin.

Si desea pasar el number JS donde Kotlin esperaba Long use Kotlin.Long.fromNumber o Kotlin.Long.fromInt para crear Long