On Wed, 28 Oct 2020 09:20:54 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:
>> Hi, >> >> Currently, if MethodHandles::permuteArguments is used with a reorder array >> that is the wrong size, or one of the indexes in it is out of bounds of the >> new type, we simply get the exception message: >> >> bad reorder array [...] >> >> I think we can improve the exception message by splitting these two error >> cases, and saying in the message exactly what went wrong. >> >> permuteArguments is a tricky API, so improving the error message here should >> help to improve developer productivity. >> >> This PR proposes splits the error message into e.g.: >> >> old type parameter count and reorder array length do not match: >> (int,int,String)int, [0, 0] >> >> For an incorrect reorder array length, and: >> >> index is out of bounds for new type: 2, (int,String)int >> >> For an out of bounds index. >> >> Thanks, >> Jorn > > This looks okay to me. Someone from core-libs should take a look as well. > > As the follow-up, maybe reconcile that method returns normally only with > `true`, and throws exceptions otherwise. There are some uses like > `assert(permuteArgumentChecks(...))` that apparently depend on this, how > necessary are those? Seems like a reasonable change. Is there an already existing test for "bad" permute args that could be expanded to discern the new exception message? ------------- PR: https://git.openjdk.java.net/jdk/pull/878