https://kotlinlang.org logo
#russian
Title
# russian
c

caffeine

05/08/2018, 6:20 PM
Всем привет. Вопрос. Речь о kotlin-js Примерно такая ситуация
Copy code
external interface Foo {
    var text: String?
        get() = definedExternally
        set(value) = definedExternally
}
Далее наследуюсь от него
Copy code
interface Bar : Foo{

.....

}
В итоге в JS файле код вида
Object.defineProperty(CSSTemplate.prototype, 'text', Object.getOwnPropertyDescriptor(TreeCssClass.prototype, 'text'));
Как это можно исправить? что бы эти поля, которые объявлены в
external interface Foo
не писались в JS файл для классов наследников?
b

bashor

05/08/2018, 7:44 PM
Приведи пожалуйста самодостаточный пример на котором виден твой кейс
для
external interface
не должен генерится код подобный тому что ты привел
если это не так зарепорть пожалуйста багу -- http://kotl.in/issue
c

caffeine

05/08/2018, 9:30 PM
Вот так все ок:
Copy code
external interface Foo {
    var externalProperty: String?
        get() = definedExternally
        set(it) = definedExternally
}

interface Bar : Foo

class DDD : Foo {

}
Класс
Bar
не используется. теперь такой код:
Copy code
external interface Foo {
    var externalProperty: String?
        get() = definedExternally
        set(it) = definedExternally
}

interface Bar : Foo

class DDD : Bar {

}
Сделал так, что бы
DDD
наследовался не от
Foo
, а от
Bar
. И теперь в итоговом JS файле появилась строка:
Object.defineProperty(DDD.prototype, 'externalProperty', Object.getOwnPropertyDescriptor(Bar.prototype, 'externalProperty'));
kotlin_version="1.2.41"
потыкал разные версии. в 1.2.10 все было ок. в 1.2.20 уже начинается эта вот проблема, о которой писал выше
b

bashor

05/09/2018, 12:52 PM
зарепорть пожалуйста
4 Views