hg: lambda/lambda/langtools: Bug fixes:

Brian Goetz brian.goetz at oracle.com
Thu Aug 19 07:40:45 PDT 2010


Under this definition, adding a method with a defender to a single-defender 
ZAM type becomes a binary-incompatible change :(

On 8/19/2010 10:34 AM, Peter Levart wrote:
> It's only for consistency if nothing else. Currently, for all other purposes, adding a default to a normal interface method (transforming it to a defender method) is a source and binary compatible change. Not with SAM interfaces though.
>
> What would be wrong with this definition of SAM types:
>
> SAM type is a reference type with a single non-Object abstract non-defender method and any number of abstract defender methods or a reference type with a single abstract defender method and no non-Object abstract non-defender methods.
>
>
> Regards, Peter
>
> On 08/19/10, Brian Goetz wrote:
>> I say no.  This is a Zero Abstract Method (ZAM) type :)
>>
>>
>> On 8/19/2010 9:00 AM, Peter Levart wrote:
>>> On 08/19/10, maurizio.cimadamore at oracle.com wrote:
>>>> Changeset: ce46b6012362
>>>> Author:    mcimadamore
>>>> Date:      2010-08-19 13:11 +0100
>>>> URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/ce46b6012362
>>>>
>>>> Bug fixes:
>>>> *) check that the compiler emits meaningful diagnostics when the lambda body contains bad statements
>>>> *) the routine that checks for SAM types should skip defender methods in extended interfaces
>>>
>>> I don't know, but should this extended interface be considered a SAM type or not?
>>>
>>> public interface UncleSam {
>>>     extension BigDecimal calculateTaxes(String taxPayerId) default Tax.calc;
>>> }
>>>
>>> Regards, Peter
>>>
>>>
>>>> *) failure of regression test CheckExamples.java depending on localization settings
>>>>
>>>> ! src/share/classes/com/sun/tools/javac/code/Types.java
>>>> ! src/share/classes/com/sun/tools/javac/parser/JavacParser.java
>>>> ! test/tools/javac/diags/examples/IllegalChar.java
>>>> + test/tools/javac/lambda/BadStatementInLambda.java
>>>> + test/tools/javac/lambda/BadStatementInLambda.out
>>>> + test/tools/javac/lambda/Defender01.java
>>>>
>>>>
>>>>
>>>
>>


More information about the lambda-dev mailing list