Многоплатформенные ожидаемые аннотации Kotlin Возвращает `Этот класс не имеет конструктора` с фактическими типалиями neo4j - PullRequest
0 голосов
/ 10 января 2019

У меня есть мультиплатформенный проект с модальным классом, пользователь.

User.kt

class User {
    val id = -1
    val username = ""
    val age = -1
    val nickname = ""
}

Я также ожидал и фактические аннотации

Annotation.kt [Common Module]

expect annotation class NodeEntity
expect annotation class Id
expect annotation class GeneratedValue

Более того, у меня есть их фактическая реализация

Annotation.kt [Модуль JVM]

actual typealias ValueFor = org.neo4j.ogm.annotation.ValueFor

actual typealias NodeEntity = org.neo4j.ogm.annotation.NodeEntity

actual typealias Id = org.neo4j.ogm.annotation.Id

actual typealias GeneratedValue = org.neo4j.ogm.annotation.GeneratedValue

actual typealias Relationship = org.neo4j.ogm.annotation.Relationship

Затем я вернулся и прокомментировал свой User.kt

@NodeEntity
class User {
    @Id
    @GeneratedValue
    val id = -1
    val username = ""
    val age = -1
    val nickname = ""
}

Но когда я его скомпилирую, я получаю эту ошибку

Task :compileKotlinJvm FAILED
e: ...User.kt: (13, 2): This class does not have a constructor
e: ...User.kt: (21, 6): This class does not have a constructor
e: ...User.kt: (22, 6): This class does not have a constructor

Что я делаю не так?

N: B. Сделано попыток

  • Сделано, чтобы у ожидаемых аннотаций был конструктор [безуспешно]
  • Сделано, чтобы ожидаемые аннотации совпадали с конструктором [ОШИБКА: параметр '' {0} '' имеет конфликтующие значения в ожидаемой и фактической аннотации]

К вашему сведению: в моем build.gradle уже есть noArg, поэтому класс User.kt скомпилирован с открытым конструктором без аргументов

1 Ответ

0 голосов
/ 10 января 2019

Ваши аннотации ожидаемого типа, вероятно, нуждаются в явных скобках.

expect annotation class SharedImmutable()
actual typealias SharedImmutable = kotlin.native.SharedImmutable

https://github.com/touchlab/Stately/blob/4b17057ad5d55f51f4ccf971cf79e51585ad2324/src/commonMain/kotlin/co/touchlab/stately/annotation/Annotations.kt#L26

...