# HG changeset patch # User vromero # Date 1558467840 14400 # Node ID e022b9cb35a5b7b5cc9f76a5b0a7accdb04f871a # Parent ec7d6d8effc7cf1b37ffbdeaaed3936eb5569ae3 8223723: j.l.c.MethodTypeDesc.dropParameterTypes​ throws the undocumented exception: IllegalArgumentException Reviewed-by: rriggs diff -r ec7d6d8effc7 -r e022b9cb35a5 src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java --- a/src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java Tue May 21 20:53:27 2019 +0200 +++ b/src/java.base/share/classes/java/lang/constant/MethodTypeDesc.java Tue May 21 15:44:00 2019 -0400 @@ -141,8 +141,8 @@ * @param end the index after the last parameter to remove * @return a {@linkplain MethodTypeDesc} describing the desired method type * @throws IndexOutOfBoundsException if {@code start} is outside the half-open - * range {[0, parameterCount)}, or {@code end} is outside the closed range - * {@code [0, parameterCount]} + * range {@code [0, parameterCount)}, or {@code end} is outside the closed range + * {@code [0, parameterCount]}, or if {@code start > end} */ MethodTypeDesc dropParameterTypes(int start, int end); diff -r ec7d6d8effc7 -r e022b9cb35a5 src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java --- a/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java Tue May 21 20:53:27 2019 +0200 +++ b/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java Tue May 21 15:44:00 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -111,10 +111,8 @@ @Override public MethodTypeDesc dropParameterTypes(int start, int end) { - if (start < 0 || start >= argTypes.length || end < 0 || end > argTypes.length) + if (start < 0 || start >= argTypes.length || end < 0 || end > argTypes.length || start > end) throw new IndexOutOfBoundsException(); - else if (start > end) - throw new IllegalArgumentException(String.format("Range (%d, %d) not valid for size %d", start, end, argTypes.length)); ClassDesc[] newArgs = new ClassDesc[argTypes.length - (end - start)]; System.arraycopy(argTypes, 0, newArgs, 0, start); System.arraycopy(argTypes, end, newArgs, start, argTypes.length - end); diff -r ec7d6d8effc7 -r e022b9cb35a5 test/jdk/java/lang/constant/MethodTypeDescTest.java --- a/test/jdk/java/lang/constant/MethodTypeDescTest.java Tue May 21 20:53:27 2019 +0200 +++ b/test/jdk/java/lang/constant/MethodTypeDescTest.java Tue May 21 15:44:00 2019 -0400 @@ -237,7 +237,7 @@ try { MethodTypeDesc newDesc = mtDesc.dropParameterTypes(1, 0); fail("start index > end index should have failed"); - } catch (IllegalArgumentException ex) { + } catch (IndexOutOfBoundsException ex) { // good } }