@@ -13,7 +13,6 @@ import java.lang.reflect.Field
13
13
import java.lang.reflect.Method
14
14
import kotlin.reflect.KFunction
15
15
import kotlin.reflect.KMutableProperty1
16
- import kotlin.reflect.KProperty1
17
16
import kotlin.reflect.KType
18
17
import kotlin.reflect.full.createType
19
18
import kotlin.reflect.full.declaredMemberProperties
@@ -100,17 +99,7 @@ internal class KotlinAnnotationIntrospector(private val context: Module.SetupCon
100
99
private fun AnnotatedMethod.hasRequiredMarker (): Boolean? {
101
100
// This could be a setter or a getter of a class property or
102
101
// a setter-like/getter-like method.
103
- val paramGetter = this .getCorrespondingGetter()
104
- if (paramGetter != null ) {
105
- val byAnnotation = paramGetter.javaGetter?.isRequiredByAnnotation()
106
- return requiredAnnotationOrNullability(byAnnotation, paramGetter.returnType.isRequired())
107
- }
108
-
109
- val paramSetter = this .getCorrespondingSetter()
110
- if (paramSetter != null ) {
111
- val byAnnotation = paramSetter.javaMethod?.isRequiredByAnnotation()
112
- return requiredAnnotationOrNullability(byAnnotation, paramSetter.isMethodParameterRequired(0 ))
113
- }
102
+ this .getFromCorrespondingAccessor()?.let { return it }
114
103
115
104
// Is the member method a regular method of the data class or
116
105
val method = this .member.kotlinFunction
@@ -132,21 +121,23 @@ internal class KotlinAnnotationIntrospector(private val context: Module.SetupCon
132
121
private fun KFunction <* >.isSetterLike (): Boolean =
133
122
parameters.size == 2 && returnType == Unit ::class .createType()
134
123
124
+ private fun AnnotatedMethod.getFromCorrespondingAccessor (): Boolean? {
125
+ member.declaringClass.kotlin.declaredMemberProperties.forEach { kProperty1 ->
126
+ kProperty1.javaGetter
127
+ ?.takeIf { it == this .member }
128
+ ?.let {
129
+ val byAnnotation = it.isRequiredByAnnotation()
130
+ return requiredAnnotationOrNullability(byAnnotation, kProperty1.returnType.isRequired())
131
+ }
135
132
136
- private fun AnnotatedMethod.getCorrespondingGetter (): KProperty1 <out Any , Any ?>? =
137
- member.declaringClass.kotlin.declaredMemberProperties.find {
138
- it.getter.javaMethod == this .member
139
- }
140
-
141
- @Suppress(" UNCHECKED_CAST" )
142
- private fun AnnotatedMethod.getCorrespondingSetter (): KMutableProperty1 .Setter <out Any , Any ?>? {
143
- val mutableProperty = member.declaringClass.kotlin.declaredMemberProperties.find {
144
- when (it) {
145
- is KMutableProperty1 -> it.javaSetter == this .member
146
- else -> false
147
- }
133
+ (kProperty1 as ? KMutableProperty1 )?.javaSetter
134
+ ?.takeIf { it == this .member }
135
+ ?.let {
136
+ val byAnnotation = it.isRequiredByAnnotation()
137
+ return requiredAnnotationOrNullability(byAnnotation, kProperty1.setter.isMethodParameterRequired(0 ))
138
+ }
148
139
}
149
- return (mutableProperty as ? KMutableProperty1 < out Any , Any ?>)?.setter
140
+ return null
150
141
}
151
142
152
143
private fun AnnotatedParameter.hasRequiredMarker (): Boolean? {
0 commit comments