I want to learn about writing a CSR, and need a sponsor teaching me the
ropes. ---- Bug: https://bugs.openjdk.java.net/browse/JDK-8262003 Currently, Class.arrayType() will throw an IllegalArgumentException if the maximum number of dimensions will be exceeded. Throwing an IllegalArgumentException from a method that doesn't take an argument is, at least, strange. Therefore I would like to update the specification to allow this method to throw an IllegalStateException, similar to what ClassDesc.arrayType() does. ---- The current plan is: * Create a CSR detailing the spec changes: https://bugs.openjdk.java.net/browse/JDK-8262211 * Surround the code with a try-catch block. Checking for the error case is hard, and somewhat rare, so I think this is appropriate. * Copy the @throws javadoc line from ClassDesc.arrayType to Class.arrayType But there are a few questions I would love to get the answer on: * Both Class.arrayType() and ClassDesc.arrayType() are specified by TypeDescriptor.OfField. Should the specification of TypeDescriptor.OfField.arrayType() changed as well? * Is the draft of my CSR fine? Should I add some details, or omit things? Rephrase things? In advance, thanks for any support and feedback on this. - Johannes |
Hi Johannes,
Changing Class::arrayType to throw ISA makes sense to me. I think `TypeDescriptor.ofField::arrayType` spec should also be updated to throw ISA to follow what JVM checks for array dimension because it's a static constraint check [1] (rather than a resolution error) for `anewarray` instruction to create an array no more than 255 dimensions. The CSR looks okay. I agree that the compatibility risk is low. I'd like to review PR along with CSR together. Mandy [1] https://docs.oracle.com/javase/specs/jvms/se15/html/jvms-4.html#jvms-4.9.1 On 2/23/21 6:38 AM, Johannes Kuhn wrote: > I want to learn about writing a CSR, and need a sponsor teaching me > the ropes. > > ---- > > Bug: https://bugs.openjdk.java.net/browse/JDK-8262003 > > Currently, Class.arrayType() will throw an IllegalArgumentException if > the maximum number of dimensions will be exceeded. > > Throwing an IllegalArgumentException from a method that doesn't take > an argument is, at least, strange. > > Therefore I would like to update the specification to allow this > method to throw an IllegalStateException, similar to what > ClassDesc.arrayType() does. > > ---- > > The current plan is: > > * Create a CSR detailing the spec changes: > https://bugs.openjdk.java.net/browse/JDK-8262211 > * Surround the code with a try-catch block. Checking for the error > case is hard, and somewhat rare, so I think this is appropriate. > * Copy the @throws javadoc line from ClassDesc.arrayType to > Class.arrayType > > But there are a few questions I would love to get the answer on: > > * Both Class.arrayType() and ClassDesc.arrayType() are specified by > TypeDescriptor.OfField. Should the specification of > TypeDescriptor.OfField.arrayType() changed as well? > * Is the draft of my CSR fine? Should I add some details, or omit > things? Rephrase things? > > In advance, thanks for any support and feedback on this. > > - Johannes |
Thanks Mandy.
Will amend the CSR to cover TypeDescriptor.OfField::arrayType as well, and create a patch. Where should I put the tests? Didn't find any tests that exercise Class::arrayType in test/jdk/java/lang/. Any wishes for tests that I should add w.r.t. Class::arrayType? - Johannes On 24-Feb-21 20:54, Mandy Chung wrote: > Hi Johannes, > > Changing Class::arrayType to throw ISA makes sense to me. I think > `TypeDescriptor.ofField::arrayType` spec should also be updated to throw > ISA to follow what JVM checks for array dimension because it's a static > constraint check [1] (rather than a resolution error) for `anewarray` > instruction to create an array no more than 255 dimensions. > > The CSR looks okay. I agree that the compatibility risk is low. > > I'd like to review PR along with CSR together. > > Mandy > [1] > https://docs.oracle.com/javase/specs/jvms/se15/html/jvms-4.html#jvms-4.9.1 > > On 2/23/21 6:38 AM, Johannes Kuhn wrote: >> I want to learn about writing a CSR, and need a sponsor teaching me >> the ropes. >> >> ---- >> >> Bug: https://bugs.openjdk.java.net/browse/JDK-8262003 >> >> Currently, Class.arrayType() will throw an IllegalArgumentException if >> the maximum number of dimensions will be exceeded. >> >> Throwing an IllegalArgumentException from a method that doesn't take >> an argument is, at least, strange. >> >> Therefore I would like to update the specification to allow this >> method to throw an IllegalStateException, similar to what >> ClassDesc.arrayType() does. >> >> ---- >> >> The current plan is: >> >> * Create a CSR detailing the spec changes: >> https://bugs.openjdk.java.net/browse/JDK-8262211 >> * Surround the code with a try-catch block. Checking for the error >> case is hard, and somewhat rare, so I think this is appropriate. >> * Copy the @throws javadoc line from ClassDesc.arrayType to >> Class.arrayType >> >> But there are a few questions I would love to get the answer on: >> >> * Both Class.arrayType() and ClassDesc.arrayType() are specified by >> TypeDescriptor.OfField. Should the specification of >> TypeDescriptor.OfField.arrayType() changed as well? >> * Is the draft of my CSR fine? Should I add some details, or omit >> things? Rephrase things? >> >> In advance, thanks for any support and feedback on this. >> >> - Johannes > |
On 2/25/21 6:52 AM, Johannes Kuhn wrote: > Thanks Mandy. > > Will amend the CSR to cover TypeDescriptor.OfField::arrayType as well, > and create a patch. > > Where should I put the tests? > Didn't find any tests that exercise Class::arrayType in > test/jdk/java/lang/. > Any wishes for tests that I should add w.r.t. Class::arrayType? > Yes, I suggest to put it under test/jdk/java/lang/Class/arrayType. Mandy > - Johannes > > On 24-Feb-21 20:54, Mandy Chung wrote: >> Hi Johannes, >> >> Changing Class::arrayType to throw ISA makes sense to me. I think >> `TypeDescriptor.ofField::arrayType` spec should also be updated to >> throw ISA to follow what JVM checks for array dimension because it's >> a static constraint check [1] (rather than a resolution error) for >> `anewarray` instruction to create an array no more than 255 dimensions. >> >> The CSR looks okay. I agree that the compatibility risk is low. >> >> I'd like to review PR along with CSR together. >> >> Mandy >> [1] >> https://docs.oracle.com/javase/specs/jvms/se15/html/jvms-4.html#jvms-4.9.1 >> >> On 2/23/21 6:38 AM, Johannes Kuhn wrote: >>> I want to learn about writing a CSR, and need a sponsor teaching me >>> the ropes. >>> >>> ---- >>> >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8262003 >>> >>> Currently, Class.arrayType() will throw an IllegalArgumentException >>> if the maximum number of dimensions will be exceeded. >>> >>> Throwing an IllegalArgumentException from a method that doesn't take >>> an argument is, at least, strange. >>> >>> Therefore I would like to update the specification to allow this >>> method to throw an IllegalStateException, similar to what >>> ClassDesc.arrayType() does. >>> >>> ---- >>> >>> The current plan is: >>> >>> * Create a CSR detailing the spec changes: >>> https://bugs.openjdk.java.net/browse/JDK-8262211 >>> * Surround the code with a try-catch block. Checking for the error >>> case is hard, and somewhat rare, so I think this is appropriate. >>> * Copy the @throws javadoc line from ClassDesc.arrayType to >>> Class.arrayType >>> >>> But there are a few questions I would love to get the answer on: >>> >>> * Both Class.arrayType() and ClassDesc.arrayType() are specified by >>> TypeDescriptor.OfField. Should the specification of >>> TypeDescriptor.OfField.arrayType() changed as well? >>> * Is the draft of my CSR fine? Should I add some details, or omit >>> things? Rephrase things? >>> >>> In advance, thanks for any support and feedback on this. >>> >>> - Johannes >> |
Free forum by Nabble | Edit this page |