Correct nullability when loading annotations from Java
This commit is contained in:
+3
-1
@@ -33,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.java.lazy.types.toAttributes
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer
|
||||
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap
|
||||
import org.jetbrains.jet.lang.types.TypeUtils
|
||||
|
||||
private object DEPRECATED_IN_JAVA : JavaLiteralAnnotationArgument {
|
||||
override fun getName(): Name? = null
|
||||
@@ -143,7 +144,8 @@ class LazyJavaAnnotationDescriptor(
|
||||
}
|
||||
|
||||
private fun resolveFromJavaClassObjectType(javaType: JavaType): CompileTimeConstant<*>? {
|
||||
val `type` = c.typeResolver.transformJavaType(javaType, TypeUsage.MEMBER_SIGNATURE_INVARIANT.toAttributes())
|
||||
// Class type is never nullable in 'Foo.class' in Java
|
||||
val `type` = TypeUtils.makeNotNullable(c.typeResolver.transformJavaType(javaType, TypeUsage.MEMBER_SIGNATURE_INVARIANT.toAttributes()))
|
||||
val jlClass = c.javaClassResolver.resolveClassByFqName(JavaAnnotationArgumentResolver.JL_CLASS_FQ_NAME)
|
||||
if (jlClass == null) return null
|
||||
|
||||
|
||||
+5
-5
@@ -30,11 +30,9 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver
|
||||
import org.jetbrains.jet.utils.*
|
||||
import java.util.ArrayList
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.types.toAttributes
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||
import org.jetbrains.jet.lang.descriptors.impl.EnumEntrySyntheticClassDescriptor
|
||||
import org.jetbrains.jet.storage.get
|
||||
import org.jetbrains.jet.lang.types.TypeUtils
|
||||
|
||||
public class LazyJavaClassMemberScope(
|
||||
c: LazyJavaResolverContextWithTypes,
|
||||
@@ -134,9 +132,11 @@ public class LazyJavaClassMemberScope(
|
||||
index,
|
||||
Collections.emptyList(),
|
||||
method.getName(),
|
||||
returnType,
|
||||
// Parameters of annotation constructors in Java are never nullable
|
||||
TypeUtils.makeNotNullable(returnType),
|
||||
method.hasAnnotationParameterDefaultValue(),
|
||||
varargElementType
|
||||
// Nulls are not allowed in annotation arguments in Java
|
||||
varargElementType?.let { TypeUtils.makeNotNullable(it) }
|
||||
))
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -117,7 +117,10 @@ public abstract class LazyJavaMemberScope(
|
||||
}
|
||||
|
||||
val returnJavaType = method.getReturnType() ?: throw IllegalStateException("Constructor passed as method: $method")
|
||||
val returnType = c.typeResolver.transformJavaType(returnJavaType, returnTypeAttrs)
|
||||
val returnType = c.typeResolver.transformJavaType(returnJavaType, returnTypeAttrs).let {
|
||||
// Annotation arguments are never null in Java
|
||||
if (method.getContainingClass().isAnnotationType()) TypeUtils.makeNotNullable(it) else it
|
||||
}
|
||||
|
||||
val signatureErrors: MutableList<String>
|
||||
val superFunctions: List<FunctionDescriptor>
|
||||
|
||||
Reference in New Issue
Block a user