Fix loading default Java annotation values in actual typealias from binary classes

#KT-22704 Fixed
This commit is contained in:
Alexander Udalov
2018-12-24 17:48:01 +01:00
parent 3fee84b966
commit 8ab9226805
15 changed files with 243 additions and 84 deletions
@@ -675,7 +675,7 @@ class LazyJavaClassMemberScope(
method.name,
// Parameters of annotation constructors in Java are never nullable
TypeUtils.makeNotNullable(returnType),
method.hasAnnotationParameterDefaultValue,
method.annotationParameterDefaultValue != null,
/* isCrossinline = */ false,
/* isNoinline = */ false,
// Nulls are not allowed in annotation arguments in Java
@@ -105,7 +105,7 @@ interface JavaMethod : JavaMember, JavaTypeParameterListOwner {
val valueParameters: List<JavaValueParameter>
val returnType: JavaType
val hasAnnotationParameterDefaultValue: Boolean
val annotationParameterDefaultValue: JavaAnnotationArgument?
}
interface JavaField : JavaMember {
@@ -16,6 +16,7 @@
package kotlin.reflect.jvm.internal.structure
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationArgument
import org.jetbrains.kotlin.load.java.structure.JavaMethod
import org.jetbrains.kotlin.load.java.structure.JavaValueParameter
import java.lang.reflect.Method
@@ -27,8 +28,8 @@ class ReflectJavaMethod(override val member: Method) : ReflectJavaMember(), Java
override val returnType: ReflectJavaType
get() = ReflectJavaType.create(member.genericReturnType)
override val hasAnnotationParameterDefaultValue: Boolean
get() = member.defaultValue != null
override val annotationParameterDefaultValue: JavaAnnotationArgument?
get() = member.defaultValue?.let { ReflectJavaAnnotationArgument.create(it, null) }
override val typeParameters: List<ReflectJavaTypeParameter>
get() = member.typeParameters.map(::ReflectJavaTypeParameter)