与JVM相比,JS中KProperty1 <t,r =“”>的语义不同

时间:2018-03-08 09:24:31

标签: kotlin kotlin-js-interop kotlin-multiplatform

看起来KProperty1<T, R>在JVM和JS中具有不同的语义,例如虽然此测试适用于JVM:

data class Data(val name: String)
class Test {
    @Test fun propertiesMustBeEqual() {
        assertEquals(Data::name, Data::name)
    }
}

它在Javascript中失败并显示以下消息:

1) test
       Test
         propertiesMustBeEqual:
     AssertionError: Expected <function ($receiver) {
      return $receiver.name;
    }>, actual <function ($receiver) {
      return $receiver.name;
    }>

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

对所有平台的同一属性的未绑定属性引用应该相同。但是他们在JS中不相同的情况是跟踪为https://youtrack.jetbrains.com/issue/KT-15101

的错误