From ea6af95245d692048e0cc3aa10d6bdbdd931121c Mon Sep 17 00:00:00 2001 From: acolyer Date: Fri, 8 Jul 2005 15:59:24 +0000 Subject: fix in GenericSigParser when tokenising primitives --- .../bcel/classfile/GenericSignatureParser.java | 22 +++++++++++++++++++++ lib/bcel/bcel-src.zip | Bin 870388 -> 870505 bytes lib/bcel/bcel.jar | Bin 593360 -> 593492 bytes 3 files changed, 22 insertions(+) diff --git a/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java b/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java index 230a055c1..4ad1b9a1b 100644 --- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java +++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java @@ -301,6 +301,8 @@ public class GenericSignatureParser { int index = 0; List tokens = new ArrayList(); StringBuffer identifier = new StringBuffer(); + boolean inParens = false; + boolean couldSeePrimitive = false; do { switch (chars[index]) { case '<' : @@ -322,11 +324,13 @@ public class GenericSignatureParser { if (identifier.length() > 0) tokens.add(identifier.toString()); identifier = new StringBuffer(); tokens.add("/"); + couldSeePrimitive = false; break; case ';' : if (identifier.length() > 0) tokens.add(identifier.toString()); identifier = new StringBuffer(); tokens.add(";"); + couldSeePrimitive = true; break; case '^': if (identifier.length() > 0) tokens.add(identifier.toString()); @@ -349,13 +353,31 @@ public class GenericSignatureParser { break; case '(' : tokens.add("("); + inParens = true; + couldSeePrimitive = true; break; case ')' : tokens.add(")"); + inParens = false; break; case '[' : tokens.add("["); break; + case 'B' : + case 'C' : + case 'D' : + case 'F' : + case 'I' : + case 'J' : + case 'S' : + case 'V' : + case 'Z' : + if (inParens && couldSeePrimitive && identifier.length() == 0) { + tokens.add(new String("" + chars[index])); + } else { + identifier.append(chars[index]); + } + break; default : identifier.append(chars[index]); } diff --git a/lib/bcel/bcel-src.zip b/lib/bcel/bcel-src.zip index 0b90c2589..25278356c 100644 Binary files a/lib/bcel/bcel-src.zip and b/lib/bcel/bcel-src.zip differ diff --git a/lib/bcel/bcel.jar b/lib/bcel/bcel.jar index 5193c9778..735e2fc80 100644 Binary files a/lib/bcel/bcel.jar and b/lib/bcel/bcel.jar differ -- cgit v1.2.3