JDK 8 Warnings Cleanup Day -- Dec. 1st, 2011

Rémi Forax forax at univ-mlv.fr
Wed Nov 30 10:30:45 PST 2011


On 11/30/2011 06:07 PM, Maurizio Cimadamore wrote:
> On 30/11/11 17:00, Rémi Forax wrote:
>> On 11/30/2011 05:45 PM, Maurizio Cimadamore wrote:
>>> On 30/11/11 16:33, Martijn Verburg wrote:
>>>> Hi John,
>>>>
>>>>> Martijn,
>>>>>
>>>>> It is great to see this sort of enthusiasm.
>>>>>
>>>>> As a reviewer for similar efforts in the past, I note that it can 
>>>>> help to
>>>>> group changes by the amount of analysis needed for each change. 
>>>>> For example,
>>>>> changes to remove redundant casts are pretty easy to do, and to 
>>>>> review, but
>>>>> other changes might need more analysis, especially anything 
>>>>> involving method
>>>>> signatures.
>>>> Thanks! We'll do just that - any other suggestions on how people want
>>>> to receive patches/effort/results please let us know.  We really don't
>>>> want to add unnecessary burden.
>>> Martijn,
>>> as many of the warnings out there are indeed related to generics, we 
>>> need to make sure that, when fixing such warnings, we don't end up 
>>> changing signatures of public API (i.e. by adding/removing 
>>> generics/wildcards), as these changes are potentially harmful for 
>>> JDK consumers. I think it would be best to focus on low-hanging 
>>> fruits first - these are:
>>>
>>> *) changes that involve the body of a method (i.e. changes to the 
>>> declared type of a local variable)
>>>
>>> *) Adding @SuppressWarnings is always safe (retention policy of this 
>>> annotation is sourcefile, so that classfile won't be affected)
>
>>
>> It's a binary compatible change but it's not safe.
> I was trying to sketch a list of things that can be done without 
> worrying about public API-ness - in that sense adding a 
> @SuppressWarnings does no harm
>>
>>>
>>> *) changing initializer (even of public fields) is always safe - as 
>>> the initializer is part of the constructor - therefore it's part of 
>>> the implementation
>>
>> static fields initialized with a constant primitive values or strings 
>> are not part of the constructor.
> uhmm - which generic warnings can be issued in a static final field 
> whose initializer is a primitive value/String?

String implements Comparable.

>
> Maurizio

Rémi



More information about the jdk8-dev mailing list