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

Vicente Romero vicente.romero at oracle.com
Wed Dec 14 14:50:20 UTC 2016


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