[PATCH] 8148100: Convert lambda most specific positive tests to check runtime behavior
bsrbnd
bsrbnd at gmail.com
Mon Sep 19 14:01:04 UTC 2016
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