nesk / akkurate

The expressive validation library for Kotlin
https://akkurate.dev
Apache License 2.0
225 stars 9 forks source link

Generated accessors for mutable properties are improperly cast #22

Closed nesk closed 4 months ago

nesk commented 7 months ago
@Validate
data class Book(var title: String)

should produce:

/**
 * [Validatable] accessor of [Book.title]
 */
public val Validatable<Book>.title: Validatable<String>
  @JvmName(name = "validatableBookTitle")
  get() = validatableOf(Book::title as KMutableProperty1)

/**
 * [Validatable] accessor of [Book.title]
 */
public val Validatable<Book?>.title: Validatable<String?>
  @JvmName(name = "validatableNullableBookTitle")
  get() = validatableOf(Book::title as KMutableProperty1)

instead of:

/**
 * [Validatable] accessor of [Book.title]
 */
public val Validatable<Book>.title: Validatable<String>
  @JvmName(name = "validatableBookTitle")
  get() = validatableOf(Book::title as KProperty1)
//                                     ^ cast error

/**
 * [Validatable] accessor of [Book.title]
 */
public val Validatable<Book?>.title: Validatable<String?>
  @JvmName(name = "validatableNullableBookTitle")
  get() = validatableOf(Book::title as KProperty1)
//                                     ^ cast error
nesk commented 6 months ago

Reported by @PoisonedYouth