Thank you Dan !

Please see my comments inline...

On 7/24/13 5:12 AM, Dan Smith wrote:
Hi.

Per a request from Joel, I've taken a look at DefaultStaticTestData.  I don't really have 
the full context here, but I'm assuming that the annotations get translated into tests 
that guarantee 1) the result of Class.getMethods is exactly (no more -- excepting Object 
methods -- and no less) those methods named by MethodDesc annotations; and 2) the result 
of Class.getDeclaredMethods is exactly (no more, no less) those methods that are marked 
"declared=YES".

The expected results seem accurate.  I would personally focus testing more on 
different inheritance shapes and less on different combinations of (unrelated) 
method declarations or presence/absence type variables (!?), but it's a valid 
test in any case.

There ought to be some testing for scenarios that javac won't generate, like 
conflicting default method declarations.
Testing on "javac" is out of this scope, it's covered by langtools tests, say test/tools/javac/defaultMethods/


It's not clear to me why we're generating classes with lambda methods 
(TestIF16) and then not testing that reflection sees those methods.  Presumably 
they get filtered out by the testing logic. But, if so... what's the point of 
testing?  Really, I don't think lambdas belong here at all -- it's a completely 
orthogonal feature.
This testing focus on the locating and invoking the default and static methods by core reflection API.

Test case with lambda expression in default method is trying to test that the "default" method won't be broken by the lambda expression (it should be found and invokable as normal). Testing on the Lambda expression itself is covered by other tests.

Thanks,
Amy


(Note: I'm not a Reviewer either, but don't mind providing feedback, especially 
on spec-related questions.)

—Dan

On Jul 22, 2013, at 7:12 AM, Amy Lu <amy...@oracle.com> wrote:

Thank you Joel for all the valuable feedback.

Test have been refactored and here comes the updated version:
https://dl.dropboxusercontent.com/u/5812451/yl153753/7184826/webrev.01/index.html

Thanks,
Amy


On 7/10/13 10:17 PM, Joel Borggren-Franck wrote:
Hi Amy, Tristan,

I'm not a Reviewer kind of reviewer, but I've started to look at the
code and can sponsor this.

Some comments on test/java/lang/reflect/Method/invoke/DefaultStaticTest.java:

As there are a lot of non-public top-level classes perhaps this test
should be in it own directory.

It is very hard to read the data table:

292             {interface1.class, 1, 1, new Object1(), new Object[]{},
293                 new Object[]{}, "interface1", null},

I believe you should move the methodsNum constant and the declMethods
num constant to an annotation on the interface/class in question. For
example:

@MyTestData(numMethods=1, declMethods=1)
41 interface interface1 {
42     @DefaultMethod(isDefault = true)
43     @StaticMethod(isStatic = false)
44     @ReturnValue(value = "interface1.defaultMethod")
45     default String defaultMethod(){ return "interface1.defaultMethod"; };
46 }

That way it is much easier to inspect that the constants are right.

The same can probably be done with the return values encoded.

Instead of all these "new Objects[] {}" can't you create a field,

Object [] EMPTY_PARAMETERS = new Object() {}

and reuse it?

That way it will be much easier to verify that the encoded test data is
correct.

I'll comment on the other tests shortly.

cheers
/Joel

On 2013-06-13, Amy Lu wrote:
This has been pending on review for long ... Please help to review.
I also need a sponsor for this.

Thank you very much.

/Amy

On 5/23/13 10:48 PM, Amy Lu wrote:
Please help to review:

More tests for 7184826: (reflect) Add support for Project Lambda
concepts in core reflection

This includes:
1. improvement for existing tests with more situations
2. Test for invoking interface default/static method by j.l.r.Method
3. Test for invoking interface default/static method by MethodHandle

https://dl.dropboxusercontent.com/u/5812451/yl153753/7184826/webrev.00/index.html


Thanks,
Amy




Reply via email to