RFR: 8299183: Invokers.checkExactType passes parameters to create WMTE in opposite order

Mandy Chung mchung at openjdk.org
Fri Jan 6 21:17:52 UTC 2023


On Fri, 6 Jan 2023 01:05:40 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> Trivial fix.  Fix `Invokers.checkExactType` to call `newWrongMethodTypeException(actual, expected)` with parameters in right order.
>
> Hello Mandy, this looks good to me. The copyright year on the file will need an update.
> 
> There's another call to this `newWrongMethodTypeException` method on line 515 and I am guessing that one is already passing the params in the correct order. If I go by that same logic, then there appears to be a direct construction of `WrongMethodTypeException` on line 497 and I suspect the `String` passed to it is perhaps using the wrong order? It currently says:
> 
> 
> if (handle.hasInvokeExactBehavior() && handle.accessModeType(ad.type) != ad.symbolicMethodTypeExact) {
>      throw new WrongMethodTypeException("expected " + handle.accessModeType(ad.type) + " but found "
>                     + ad.symbolicMethodTypeExact);
> }
> 
> Should it instead say:
> 
> if (handle.hasInvokeExactBehavior() && handle.accessModeType(ad.type) != ad.symbolicMethodTypeExact) {
>     throw new WrongMethodTypeException("expected " + ad.symbolicMethodTypeExact + " but found "
>                     + handle.accessModeType(ad.type));
> }

@jaikiran good observation. 

"expected" and "actual" parameters are confusing. "expected" is ambiguous and it could refer to handle's method type or symbolic type descriptor.  I decide to rename the parameters and the exception message for clarity.

-------------

PR: https://git.openjdk.org/jdk/pull/11870


More information about the core-libs-dev mailing list