Skip to content

Commit

Permalink
fix #8: suppress the warning about useless casts in generated accessors
Browse files Browse the repository at this point in the history
  • Loading branch information
nesk committed Sep 19, 2023
1 parent 035713e commit 481f9ba
Show file tree
Hide file tree
Showing 13 changed files with 32 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Fixed

- The target version of generated JVM bytecode is now 1.8 instead of 11. (https://github.com/nesk/akkurate/issues/5)
- Suppress the warning about useless casts in generated accessors. (https://github.com/nesk/akkurate/issues/8)

## [0.1.0] - 2023-09-12

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.User
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<User>.name: Validatable<String>

public val Validatable<User?>.name: Validatable<String?>
@JvmName(name = "validatableNullableUserName")
@Suppress("USELESS_CAST")
get() = validatableOf(User::name as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import dev.nesk.company.Company
import dev.nesk.user.User
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<Company>.admin: Validatable<User>

public val Validatable<Company?>.admin: Validatable<User?>
@JvmName(name = "validatableNullableCompanyAdmin")
@Suppress("USELESS_CAST")
get() = validatableOf(Company::admin as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import dev.nesk.company.Company
import dev.nesk.user.User
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<User>.company: Validatable<Company>

public val Validatable<User?>.company: Validatable<Company?>
@JvmName(name = "validatableNullableUserCompany")
@Suppress("USELESS_CAST")
get() = validatableOf(User::company as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.nesk.UserName
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -14,6 +15,7 @@ public val Validatable<User>.name: Validatable<UserName?>

public val Validatable<User?>.name: Validatable<UserName?>
@JvmName(name = "validatableNullableUserName")
@Suppress("USELESS_CAST")
get() = validatableOf(User::name as KProperty1)

public val Validatable<UserName>.text: Validatable<String>
Expand All @@ -22,4 +24,5 @@ public val Validatable<UserName>.text: Validatable<String>

public val Validatable<UserName?>.text: Validatable<String?>
@JvmName(name = "validatableNullableUserNameText")
@Suppress("USELESS_CAST")
get() = validatableOf(UserName::text as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.Company
import dev.nesk.User
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,6 +14,7 @@ public val Validatable<Company>.admin: Validatable<User?>

public val Validatable<Company?>.admin: Validatable<User?>
@JvmName(name = "validatableNullableCompanyAdmin")
@Suppress("USELESS_CAST")
get() = validatableOf(Company::admin as KProperty1)

public val Validatable<User>.company: Validatable<Company?>
Expand All @@ -21,4 +23,5 @@ public val Validatable<User>.company: Validatable<Company?>

public val Validatable<User?>.company: Validatable<Company?>
@JvmName(name = "validatableNullableUserCompany")
@Suppress("USELESS_CAST")
get() = validatableOf(User::company as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.Company
import dev.nesk.User
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,6 +14,7 @@ public val Validatable<Company>.admin: Validatable<User>

public val Validatable<Company?>.admin: Validatable<User?>
@JvmName(name = "validatableNullableCompanyAdmin")
@Suppress("USELESS_CAST")
get() = validatableOf(Company::admin as KProperty1)

public val Validatable<User>.company: Validatable<Company>
Expand All @@ -21,4 +23,5 @@ public val Validatable<User>.company: Validatable<Company>

public val Validatable<User?>.company: Validatable<Company?>
@JvmName(name = "validatableNullableUserCompany")
@Suppress("USELESS_CAST")
get() = validatableOf(User::company as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.nesk.UserName
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -14,6 +15,7 @@ public val Validatable<User>.name: Validatable<UserName>

public val Validatable<User?>.name: Validatable<UserName?>
@JvmName(name = "validatableNullableUserName")
@Suppress("USELESS_CAST")
get() = validatableOf(User::name as KProperty1)

public val Validatable<UserName>.text: Validatable<String>
Expand All @@ -22,4 +24,5 @@ public val Validatable<UserName>.text: Validatable<String>

public val Validatable<UserName?>.text: Validatable<String?>
@JvmName(name = "validatableNullableUserNameText")
@Suppress("USELESS_CAST")
get() = validatableOf(UserName::text as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.User
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<User>.name: Validatable<String>

public val Validatable<User?>.name: Validatable<String?>
@JvmName(name = "validatableNullableUserName")
@Suppress("USELESS_CAST")
get() = validatableOf(User::name as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<String>.length: Validatable<Int>

public val Validatable<String?>.length: Validatable<Int?>
@JvmName(name = "validatableNullableStringLength")
@Suppress("USELESS_CAST")
get() = validatableOf(String::length as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.nesk.User
import dev.nesk.akkurate.validatables.Validatable
import dev.nesk.akkurate.validatables.validatableOf
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -13,4 +14,5 @@ public val Validatable<User>.name: Validatable<String>

public val Validatable<User?>.name: Validatable<String?>
@JvmName(name = "validatableNullableUserName")
@Suppress("USELESS_CAST")
get() = validatableOf(User::name as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dev.nesk.akkurate.validatables.validatableOf
import kotlin.CharSequence
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
import kotlin.reflect.KProperty1

Expand All @@ -14,6 +15,7 @@ public val Validatable<String>.length: Validatable<Int>

public val Validatable<String?>.length: Validatable<Int?>
@JvmName(name = "validatableNullableStringLength")
@Suppress("USELESS_CAST")
get() = validatableOf(String::length as KProperty1)

public val Validatable<CharSequence>.length: Validatable<Int>
Expand All @@ -22,4 +24,5 @@ public val Validatable<CharSequence>.length: Validatable<Int>

public val Validatable<CharSequence?>.length: Validatable<Int?>
@JvmName(name = "validatableNullableCharSequenceLength")
@Suppress("USELESS_CAST")
get() = validatableOf(CharSequence::length as KProperty1)
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class ValidateAnnotationProcessor(
// a circular dependency; so we must manually create name references for some symbols contained in the library.
val validatableOfFunction = MemberName("dev.nesk.akkurate.validatables", "validatableOf")
val validatableClass = ClassName("dev.nesk.akkurate.validatables", "Validatable")

private val suppressUselessCast = AnnotationSpec.builder(Suppress::class).addMember("%S", "USELESS_CAST").build()
}

private var validatableClasses: Set<String> = config.normalizedValidatableClasses
Expand Down Expand Up @@ -158,8 +160,9 @@ class ValidateAnnotationProcessor(
.build()
)

// FIXME: The cast is a workaround for https://youtrack.jetbrains.com/issue/KT-59493, it can be removed with KT v1.9.20.
if (withNullableReceiver) {
// FIXME: The cast is a workaround for https://youtrack.jetbrains.com/issue/KT-59493, it can be removed with KT v1.9.20
addAnnotation(suppressUselessCast)
addStatement("return %M(%T::%N as %T)", validatableOfFunction, receiver.toTypeName(), toMemberName(), kProperty1Class)
} else {
addStatement("return %M(%T::%N)", validatableOfFunction, receiver.toTypeName(), toMemberName())
Expand Down

0 comments on commit 481f9ba

Please sign in to comment.