diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt index 133d90b1bfd..5091e6e20fe 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt @@ -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 diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 4bdcc90b90f..16c8038f13b 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -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) } )) } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index fa2d5ffab38..fc7be037fba 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -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 val superFunctions: List