Различная семантика KProperty1<T, R> в JS по сравнению с JVM

Это выглядит как 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 ответ

Решение

Ссылки на несвязанные свойства для одного и того же свойства должны быть одинаковыми на всех платформах. Но ситуация, что они не равны в JS, является ошибкой, отслеживаемой как https://youtrack.jetbrains.com/issue/KT-15101

Другие вопросы по тегам