[PATCH] 8148100: Convert lambda most specific positive tests to check runtime behavior

Vicente Romero vicente.romero at oracle.com
Thu Jan 5 19:32:35 UTC 2017


pushed,

Thanks,
Vicente

On 12/14/2016 09:50 AM, Vicente Romero wrote:
> Hi Bernard,
>
> Very sorry for the delay with your patch, I will take care of it,
>
> Vicente
>
> On 12/12/2016 04:40 AM, B. Blaser wrote:
>> Hi,
>> Does this patch need to be improved?
>>
>> Thanks,
>> Bernard
>>
>> 2016-09-21 16:24 GMT+02:00 bsrbnd <bsrbnd at gmail.com>:
>>> Please find in attachment an all-in-one patch for the 9 tests, as
>>> discussed previously.
>>>
>>> Bernard
>>>
>>>
>>> 2016-09-19 16:01 GMT+02:00 bsrbnd <bsrbnd at gmail.com>:
>>>> Thanks for your advices.
>>>>
>>>> I re-wrote, below, the patch in a more compliant way (I hope).
>>>> I'll perhaps (probably) also go through the 8 others soon, if I 
>>>> have time...
>>>>
>>>> Bernard
>>>>
>>>> diff --git a/test/tools/javac/lambda/MostSpecific10.java
>>>> b/test/tools/javac/lambda/MostSpecific10.java
>>>> --- a/test/tools/javac/lambda/MostSpecific10.java
>>>> +++ b/test/tools/javac/lambda/MostSpecific10.java
>>>> @@ -25,9 +25,12 @@
>>>>    * @test
>>>>    * @bug 8034223
>>>>    * @summary Structural most-specific logic for lambdas, method refs,
>>>> parens, and conditionals
>>>> - * @compile MostSpecific10.java
>>>>    */
>>>> -class MostSpecific10 {
>>>> +public class MostSpecific10 {
>>>> +
>>>> +    public static void main(String[] args) {
>>>> +        new MostSpecific10().test(true);
>>>> +    }
>>>>
>>>>       interface GetInt {
>>>>           int get();
>>>> @@ -38,7 +41,9 @@
>>>>       }
>>>>
>>>>       void m(GetInt getter) {}
>>>> -    void m(GetInteger getter) {}
>>>> +    void m(GetInteger getter) {
>>>> +        throw new RuntimeException("Less-specific method invocation:
>>>> " + getter.getClass());
>>>> +    }
>>>>
>>>>       void test(boolean cond) {
>>>>           m(() -> 23);
>>>>
>>>>
>>>> 2016-09-18 3:11 GMT+02:00 Jonathan Gibbons 
>>>> <jonathan.gibbons at oracle.com>:
>>>>> Bernard,
>>>>>
>>>>> Thanks for posting this patch.
>>>>>
>>>>> It's not wrong to say it explicitly, but the addition of the "@run 
>>>>> main"
>>>>> line is unnecessary, since that is the default behavior once you 
>>>>> remove the
>>>>> @compile.
>>>>>
>>>>> The replacement for void m(GetInteger getter) should be formatted 
>>>>> in a more
>>>>> standard manner.
>>>>>
>>>>> It's more common to put the main method at the head of a test, 
>>>>> instead of at
>>>>> the end.
>>>>>
>>>>> We can't check in "partial patches", so either you have to look at 
>>>>> the 8
>>>>> other tests and fix them all together, or we have to accept this 
>>>>> one change
>>>>> as a "complete" fix for 8148100, and open a new, different issue 
>>>>> for the 8
>>>>> other tests. (The OpenJDK rules only permit one changeset per 
>>>>> issue per
>>>>> repo,)
>>>>>
>>>>> -- Jon
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 9/17/16 10:16 AM, bsrbnd wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I just wrote a partial patch for issue 8148100.
>>>>>> This is an updated version of
>>>>>> test/tools/javac/lambda/MostSpecific10.java that verifies if the
>>>>>> most-specific method is run with respect to JLS 15.12.2 (and also as
>>>>>> explained in the issue description).
>>>>>> I've not checked the 8 other tests yet...
>>>>>>
>>>>>> Regards,
>>>>>> Bernard
>>>>>>
>>>>>> diff --git a/test/tools/javac/lambda/MostSpecific10.java
>>>>>> b/test/tools/javac/lambda/MostSpecific10.java
>>>>>> --- a/test/tools/javac/lambda/MostSpecific10.java
>>>>>> +++ b/test/tools/javac/lambda/MostSpecific10.java
>>>>>> @@ -26,8 +26,9 @@
>>>>>>     * @bug 8034223
>>>>>>     * @summary Structural most-specific logic for lambdas, method 
>>>>>> refs,
>>>>>> parens, and conditionals
>>>>>>     * @compile MostSpecific10.java
>>>>>> + * @run main MostSpecific10
>>>>>>     */
>>>>>> -class MostSpecific10 {
>>>>>> +public class MostSpecific10 {
>>>>>>
>>>>>>        interface GetInt {
>>>>>>            int get();
>>>>>> @@ -38,7 +39,7 @@
>>>>>>        }
>>>>>>
>>>>>>        void m(GetInt getter) {}
>>>>>> -    void m(GetInteger getter) {}
>>>>>> +    void m(GetInteger getter) {throw new
>>>>>> RuntimeException("Less-specific method invocation: " +
>>>>>> getter.getClass());}
>>>>>>
>>>>>>        void test(boolean cond) {
>>>>>>            m(() -> 23);
>>>>>> @@ -50,5 +51,9 @@
>>>>>>            m(cond ? (() -> 23) : ("abc"::length) );
>>>>>>            m(( cond ? () -> 23 : cond ? ("abc"::length) : (() -> 
>>>>>> 23) ));
>>>>>>        }
>>>>>> +
>>>>>> +    public static void main(String[] args) {
>>>>>> +        new MostSpecific10().test(true);
>>>>>> +    }
>>>>>>
>>>>>>    }
>>>>>
>



More information about the compiler-dev mailing list