[Checkers] Q about wildcard bounds

Mahmood Ali mahmood at MIT.EDU
Sun Feb 8 18:23:24 EST 2009


Greetings,

I have been thinking about the alternative proposals regarding  
wildcard bounds.  I am not quite sure that if I fully understood you.   
So let me explain what I understood and then talk about it.


My understanding:
We treat wildcard bounds just like generics.  So we modify section  
4.3.12 to specify 'Generic Type Annotations and Arrays and Wildcards'  
and have the additional fields be:
     // for generic location
     u2 location_length;
     u1 location[location_length];

     u1 is_wildcard_bound; // info can be put in target_type_value
     //  if is_wildcard_bound
     u2 wildcard_location_length;
     u1 wildcard_location[wildcard_location_length];

With this proposal reference_info would really be describing the  
wildcard itself and simply use the additional fields to locate the  
annotation within the wildcard bound.  This is analogues to generics  
where reference_info really describes the location of the raw type.

Evaluation:
I have formed my opinion, and I think that I am more inclined to such  
change.  It's consistent with the current inside-outness (I forgot  
your naming convention) and may lead to a more compact reference_info.

However, the additional fields need to be modified to address nested  
wildcards, e.g. List<? extends List<? extends List<? extends @A  
String>>.

Here is a slightly different proposal for 4.3.12
   u2 location_length;
   u1 location[location_length];

   u1 no_wildcards;  // number of nested wildcards
   // if no_wildcards != 0
   {
     u2 wildcard_location_length;
     u1 wildcard_location[wildcard_location_length];
   } wildcard_info[no_wildcards];

I don't have a strong opinion about the order of the elements in  
wildcard_info array.

This proposal is superior to the current info as reference_info field  
is duplicated multiple times now.  In the case List<? extends List<?  
extends @A String>>, the reference_info of both wildcards will contain  
similar info about their location (e.g. method return type or not).

Regards,
Mahmood

P.S. Sorry I wrote this email in a rush.




More information about the checkers mailing list