Size: a a a

Kotlin Community

2020 March 30

LS

Leonid Startsev in Kotlin Community
Alex Wells
Привет. Юзаю kotlinx.serialization и не вьезжаю, какого хрена разный результат в зависимости от расположения класса...

// NodeAbstract.kt
@Serializable
abstract class NodeAbstract : Node {
   val attributes: JsonObject = JsonObject(emptyMap())
}

@Serializable
class Impl2 (val s: String): NodeAbstract() {

}


// main.kt
@Serializable
class Impl (val ss: String): NodeAbstract() {

}

fun main() {
   val json = Json(JsonConfiguration.Stable.copy(isLenient = true))

   println(json.stringify(Impl2.serializer(), Impl2("dasdasdsdasd")))
   println(json.stringify(Impl.serializer(), Impl("dasdasdsdasd")))
}


вывод:
{"attributes":{},"s":"dasdasdsdasd"}
{"ss":{},"ss":"dasdasdsdasd"}
А файлы в разных модулях?
источник

BV

Boris Vanin in Kotlin Community
Mark Kos
Ну нажал я ctrl b вместо клика, все равно попал невнутрь метода а в декларацию переменной
Причём тут это?
источник

BV

Boris Vanin in Kotlin Community
Я о том, что если кликать не удобно, то надо завести ишью на доработку плагина идеевского, а не предлагать игнорить языковую конструкцию
источник

AW

Alex Wells in Kotlin Community
Leonid Startsev
А файлы в разных модулях?
в одном(
источник

AN

Alexander Nozik in Kotlin Community
Alex Wells
в одном(
https://github.com/Kotlin/kotlinx.serialization/issues/378
И я уже писал, что оно ломается даже в одном проектк
источник

LS

Leonid Startsev in Kotlin Community
В одном не должно ломаться. Разве что при инкрементальной компиляции
источник

AN

Alexander Nozik in Kotlin Community
Leonid Startsev
В одном не должно ломаться. Разве что при инкрементальной компиляции
Если я правильно помню, у меня было так. Интерфейс - не сериализуемый в одном модуле, наследники в другом и все равно ломалось. Сейчас к сожалению нет времени восстанавливать. Но в любом случае нужно, чтобы работало в разных модулях.
источник

AW

Alex Wells in Kotlin Community
{"attributes":{},"s":"same"}
{"attributes":{},"s":"different"}

diff
- class DifferentFileImpl(val s: String): BaseClass()
+ class DifferentFileImpl(val ss: String): BaseClass()


{"attributes":{},"s":"same"}
{"ss":{},"ss":"different"}
источник

AW

Alex Wells in Kotlin Community
нереальный бред
источник

AW

Alex Wells in Kotlin Community
передвигаю файлик в другой неймспейс - опять работает
источник

AL

Anton Lakotka in Kotlin Community
Alex Wells
передвигаю файлик в другой неймспейс - опять работает
а пробовал делать clean ?
источник

AW

Alex Wells in Kotlin Community
опять меняю проперти - не работает
источник

AL

Anton Lakotka in Kotlin Community
как предположил @sandwwraith из-за инкрементального билда могут быть проблемы
источник

AW

Alex Wells in Kotlin Community
Anton Lakotka
а пробовал делать clean ?
да, clean помог, ровно пока я не внес изменения и оно опять не сломалось
источник

AL

Anton Lakotka in Kotlin Community
ну потому что снова incremental build
источник

AL

Anton Lakotka in Kotlin Community
а насколько сильно наследование нужно в твоем случае?
источник

AN

Alexander Nozik in Kotlin Community
Anton Lakotka
а насколько сильно наследование нужно в твоем случае?
Понимаю, что вопрос не во мне, но в моем очень.
источник

AW

Alex Wells in Kotlin Community
нужен attributes: JsonObject у каждой Node, а имлементаций штук 100
источник

AW

Alex Wells in Kotlin Community
без наследования - заколебусь
источник

BV

Boris Vanin in Kotlin Community
Alex Wells
да, clean помог, ровно пока я не внес изменения и оно опять не сломалось
Идеально, сделать проект где это легко воспроизводится и завести ишью, с большой вероятностью это починят
источник