I've created a PR that repros at https://github.com/apache/commons-bcel/pull/205
Jason C On Wed, Feb 8, 2023 at 3:33 PM Gary Gregory <garydgreg...@gmail.com> wrote: > Hi Jason, > > The best path forward would be for you to create a PR on GitHub with a > failing unit test. That will let us reproduce your issue in the simplest > fashion. Also make sure you are using the last version, 6.7.0. > > Thank you, > Gary > > On Wed, Feb 8, 2023, 11:14 Jason Copenhaver > <jason.copenha...@charthop.com.invalid> wrote: > > > I've run into an issue when using BCEL on the results of the below Kotlin > > code. > > > > class test { > > fun takeABlock(a: () -> Unit) { > > a() > > } > > > > fun `method name with () in it`() { > > takeABlock { println("other test") } > > } > > > > fun `method name without parens`() { > > takeABlock { println("other test") } > > } > > } > > > > Three class files are produced. > > > > test$method name with () in it$1.class > > test$method name without parens$1.class > > test.class > > > > When i use the examples/JasminVisitor.java against `test$method name with > > () in it$1.class` with a small patch to add a `field.getType()` call to > the > > `visitField` method I get the below stack trace. > > > > Exception in thread "main" > org.apache.bcel.classfile.ClassFormatException: > > Invalid method signature: in it$1; > > at org.apache.bcel.classfile.Utility.typeOfSignature(Utility.java:1284) > > at org.apache.bcel.generic.Type.getType(Type.java:227) > > at org.apache.bcel.generic.Type.getReturnType(Type.java:151) > > at org.apache.bcel.classfile.Field.getType(Field.java:150) > > at JasminVisitor.visitField(JasminVisitor.java:287) > > at org.apache.bcel.classfile.Field.accept(Field.java:113) > > at > > > > > org.apache.bcel.classfile.DescendingVisitor.visitField(DescendingVisitor.java:311) > > at org.apache.bcel.classfile.Field.accept(Field.java:113) > > at > > > > > org.apache.bcel.classfile.DescendingVisitor.lambda$accept$0(DescendingVisitor.java:44) > > at > > > > > java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) > > at > > > > > java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) > > at > > > > > org.apache.bcel.classfile.DescendingVisitor.accept(DescendingVisitor.java:44) > > at > > > > > org.apache.bcel.classfile.DescendingVisitor.visitJavaClass(DescendingVisitor.java:335) > > at org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:251) > > at > > > > > org.apache.bcel.classfile.DescendingVisitor.visit(DescendingVisitor.java:77) > > at JasminVisitor.disassemble(JasminVisitor.java:109) > > at JasminVisitor.main(JasminVisitor.java:82) > > > > Thanks, > > Jason C > > >