summaryrefslogtreecommitdiffstats
path: root/bcel-builder/src
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-08-24 19:20:56 +0000
committeracolyer <acolyer>2005-08-24 19:20:56 +0000
commit803616d373f1c366e133f87342b88514cc5f74c3 (patch)
tree43b3947fd8c10b79781ffcaf88b6fbe387af1435 /bcel-builder/src
parentcc6e6812fa6908d315e2f07195bca3914438cb1a (diff)
downloadaspectj-803616d373f1c366e133f87342b88514cc5f74c3.tar.gz
aspectj-803616d373f1c366e133f87342b88514cc5f74c3.zip
fix for pr107784, failure to parse an array of a primitive type when used as a type variable
Diffstat (limited to 'bcel-builder/src')
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java8
1 files changed, 7 insertions, 1 deletions
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 9c7ef4e81..fac5f506b 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/classfile/GenericSignatureParser.java
@@ -306,6 +306,7 @@ public class GenericSignatureParser {
List tokens = new ArrayList();
StringBuffer identifier = new StringBuffer();
boolean inParens = false;
+ boolean inArray = false;
boolean couldSeePrimitive = false;
do {
switch (chars[index]) {
@@ -335,6 +336,7 @@ public class GenericSignatureParser {
identifier = new StringBuffer();
tokens.add(";");
couldSeePrimitive = true;
+ inArray = false;
break;
case '^':
if (identifier.length() > 0) tokens.add(identifier.toString());
@@ -366,6 +368,8 @@ public class GenericSignatureParser {
break;
case '[' :
tokens.add("[");
+ couldSeePrimitive = true;
+ inArray = true;
break;
case 'B' :
case 'C' :
@@ -376,11 +380,13 @@ public class GenericSignatureParser {
case 'S' :
case 'V' :
case 'Z' :
- if (inParens && couldSeePrimitive && identifier.length() == 0) {
+ if ((inParens || inArray) && couldSeePrimitive && identifier.length() == 0) {
tokens.add(new String("" + chars[index]));
} else {
identifier.append(chars[index]);
}
+ couldSeePrimitive = false;
+ inArray = false;
break;
default :
identifier.append(chars[index]);