SignatureReader crashes on wildcard array element signatures
SignatureReader crashes on arrays whose element type is a wildcard.
This isn't permitted by the grammar in JVMS8 4.7.9.1, but javac and ecj produce code that
does this.
More discussion: http://mail.openjdk.java.net/pipermail/compiler-dev/2016-
October/010459.html
=== Test.java ===
class A<X> { class I {} }
class Test {
class B<Y> extends A<Y[]> {}
B<?>.I i;
}
===
$ javac Test.java
$ javap -v Test
...
A<?[]>.I i;
descriptor: LA$I;
flags:
Signature: #12 // LA<[*>.I;
$ java -cp asm-debug-all-5.1.jar:. org.objectweb.asm.util.Textifier Test
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of
range: 9
at java.lang.String.charAt(String.java:646)
at org.objectweb.asm.signature.SignatureReader.parseType(SignatureReader.java:206)
at org.objectweb.asm.signature.SignatureReader.acceptType(SignatureReader.java:130)
at org.objectweb.asm.util.Textifier.visitField(Textifier.java:359)
at org.objectweb.asm.util.Textifier.visitField(Textifier.java:52)
at org.objectweb.asm.util.TraceClassVisitor.visitField(TraceClassVisitor.java:195)
at org.objectweb.asm.ClassReader.readField(ClassReader.java:768)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:689)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:506)
at org.objectweb.asm.util.Textifier.main(Textifier.java:213)