Thanks, Joel. I've applied your fixes and re-upped the webrev.
On 11/05/14 10:10, Joel Borggrén-Franck wrote: > Hi Eric, > > I think caching the real parameter type array on Executable is the wrong > thing to do considering we can have a lot of instances of Executable but > fairly few will be examined for parameters and the vast majority of those > will never have this issue. > > Also, the tests are a bit minimal, I would expect you to check that the type > of the parameter is correct. The tests should also have a @bug line. > > I think you are overly cautious here. I’m not sure we need to work around > potential bugs in non-Java compilers. If language Y inserts > synthetic/mandated parameters anywhere else than as a prefix they better > generate a correct Signature (or non at all). This is a discussion we can > defer however. > > If you flesh out the test and remove the caching I think this is a fine fix > for both 8u and 9. > > cheers > /Joel > > On 31 okt 2014, at 17:15, Eric McCorkle <eric.mccor...@oracle.com> wrote: > >> Hello, >> >> Please review this patch which fixes issues that arise with >> getGenericParameterTypes() and getAnnotatedParameterTypes() when there >> are generic signatures and synthetic parameters. >> >> Please note that a complete fix is not possible for all cases. See >> discussion on https://bugs.openjdk.java.net/browse/JDK-8062582 for details. >> >> This patch will cause Executable.getAnnotatedParameterTypes(), >> Parameter.getAnnotatedType(), and Parameter.getParameterizedType() to >> report the correct types in the following cases: >> >> * No generic signature is present. >> * Both a generic signature and method parameters information are present >> * A generic signature is present, but method parameters information is >> not present, but the number of parameters in the generic signature and >> the number of parameters in the method descriptor are the same. >> >> In the problematic case, where there is a generic signature, no method >> parameters information, and the generic signature does not match the >> method descriptor, these methods will return the correct /non/-generic >> type, as there is no general way of associating parameters in the >> generic signature with those in the method descriptor in this case. >> >> Please also note that there is currently a bug in javac which causes >> type annotations' parameter indexes to be wrong when synthetic >> parameters are generated: https://bugs.openjdk.java.net/browse/JDK-8029012. >> >> The bug report is here: >> https://bugs.openjdk.java.net/browse/JDK-8055063 >> >> The webrev is here: >> http://cr.openjdk.java.net/~emc/8055063/ >