]> source.dussan.org Git - aspectj.git/commitdiff
fix in GenericSigParser when tokenising primitives
authoracolyer <acolyer>
Fri, 8 Jul 2005 15:59:24 +0000 (15:59 +0000)
committeracolyer <acolyer>
Fri, 8 Jul 2005 15:59:24 +0000 (15:59 +0000)
bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java
lib/bcel/bcel-src.zip
lib/bcel/bcel.jar

index 230a055c16bd8001f7685fb504da65525929e77a..4ad1b9a1b996f13e61ed1d549f58c0f0cd220c80 100644 (file)
@@ -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]);
                        }
index 0b90c2589fd5ed16800f8719801b490e023973e7..25278356c01d02b2c7df79712a91e37891a84191 100644 (file)
Binary files a/lib/bcel/bcel-src.zip and b/lib/bcel/bcel-src.zip differ
index 5193c97785a47f21a2c142aca6696cbacf3fb061..735e2fc80cab365a767d7d223d0eecd98a4c9d11 100644 (file)
Binary files a/lib/bcel/bcel.jar and b/lib/bcel/bcel.jar differ