From 4fa691f4b41689b978a108ba64c6759e74146d52 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 11 Nov 2013 14:09:11 +0400 Subject: [PATCH] Ignore @Nullable/@NotNull annotations when deserializing Kotiln descriptors This is needed because we write these annotations to class files on all API callables automatically. Seeing all these annotations on descriptors is no good --- .../resolve/java/resolver/JavaAnnotationResolver.java | 1 + .../resolve/kotlin/AnnotationDescriptorDeserializer.java | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationResolver.java index 55be4353ed9..4eefd94f908 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationResolver.java @@ -42,6 +42,7 @@ import static org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUti public final class JavaAnnotationResolver { public static final Name DEFAULT_ANNOTATION_MEMBER_NAME = Name.identifier("value"); public static final FqName JETBRAINS_NOT_NULL_ANNOTATION = fqNameByClass(NotNull.class); + public static final FqName JETBRAINS_NULLABLE_ANNOTATION = fqNameByClass(Nullable.class); public static final FqName JETBRAINS_MUTABLE_ANNOTATION = new FqName("org.jetbrains.annotations.Mutable"); public static final FqName JETBRAINS_READONLY_ANNOTATION = new FqName("org.jetbrains.annotations.ReadOnly"); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java index ab3dcebf620..217aced4649 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java @@ -33,10 +33,7 @@ import org.jetbrains.jet.lang.resolve.constants.ErrorValue; import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames; import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; -import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils; -import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter; -import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver; -import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver; +import org.jetbrains.jet.lang.resolve.java.resolver.*; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.ErrorUtils; @@ -145,9 +142,10 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer } private static boolean ignoreAnnotation(@NotNull JvmClassName className) { - // TODO: JETBRAINS_NOT_NULL_ANNOTATION ? return className.equals(JvmClassName.byFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_CLASS)) || className.equals(JvmClassName.byFqNameWithoutInnerClasses(JvmAnnotationNames.KOTLIN_PACKAGE)) + || className.equals(JvmClassName.byFqNameWithoutInnerClasses(JavaAnnotationResolver.JETBRAINS_NOT_NULL_ANNOTATION)) + || className.equals(JvmClassName.byFqNameWithoutInnerClasses(JavaAnnotationResolver.JETBRAINS_NULLABLE_ANNOTATION)) || className.getInternalName().startsWith("jet/runtime/typeinfo/"); }