[Checkers] NonNull Annotated JDK
Matt Papi
mpapi at csail.mit.edu
Sun Apr 6 15:03:26 EDT 2008
Mahmood,
Thanks for pointing that out. I haven't been updating the @Default
mechanism with respect to recent framework changes (like
annotateInheritedFromClass()). If that's really the cause, the fix
should be pretty easy -- I'll see if I can have it in soon.
- Matt
On Sun, Apr 6, 2008 at 2:57 PM, Mahmood Ali <mahmood at mit.edu> wrote:
>
> On Apr 6, 2008, at 2:43 PM, Mahmood Ali wrote:
> > 2. Prepare the Annotated (method signitures only) JDK for Matt. It is
> > available now on ~mali/research/jdk/nonnull. Unfortunately, it
> > doesn't type check currently under the nonnull checker. I suspect
> > that the bug is in TypesRelations, but I will need to investigate it
> > more later. The issued warnings are all due to override related issue
> > (66 for receiver incompatible type!).
> I take my suspicion back. After a closer examination of the output
> messages, I notice that that a lot of them are due to the default
> annotation (@NonNull) showing up in the type arguments. There errors
> are in the form:
>
> AbstractCollection.java:6: iterator() in java.util.AbstractCollection
> cannot override iterator() in java.util.Collection; attempting to use
> an incompatible return type
> found : @NonNull @checkers.quals.Default("checkers.quals.NonNull")
> java.util.Iterator<E extends @NonNull java.lang.Object>
> required: @checkers.quals.Default("checkers.quals.NonNull")
> java.util.Iterator<E extends java.lang.Object>
> public abstract java.util.Iterator<E> iterator();
>
> Also, the default annotates the method receiver with @NonNull, so the
> overrider method has more strict receiver type as the overriden method
> is not annotated with @NonNull. These errors are in the form (Please
> note that the type arguments don't matter here, as we only test the
> erased receiver type):
> AbstractCollection.java:7: size() in java.util.AbstractCollection
> cannot override size() in java.util.Collection; attempting to use an
> incompatible receiver type
> found : @NonNull java.util.AbstractCollection<E extends @NonNull
> java.lang.Object>
> required: java.util.Collection<E extends java.lang.Object>
> public abstract int size();
> ^
> Sometimes the default annotations isn't actually added properly.
> That's the case of:
>
> AbstractCollection.java:16: removeAll(java.util.Collection<?>) in
> java.util.AbstractCollection cannot override
> removeAll(java.util.Collection<?>) in java.util.Collection; attempting
> to use an incompatible parameter type
> found : @NonNull @checkers.quals.Default("checkers.quals.NonNull")
> java.util.Collection<?>
> required: @checkers.quals.Default("checkers.quals.NonNull")
> java.util.Collection<?>
> public boolean removeAll(java.util.Collection<?> a1) { throw new
> RuntimeException("skeleton method"); }
>
> I haven't checked every single error, but they all look as variations
> of the previous three error messages.
>
> Regards,
> Mahmood
>
> _______________________________________________
> checkers mailing list
> checkers at lists.csail.mit.edu
> https://lists.csail.mit.edu/mailman/listinfo/checkers
>
More information about the checkers
mailing list