diff options
Diffstat (limited to 'org.aspectj.matcher')
-rw-r--r-- | org.aspectj.matcher/src/org/aspectj/weaver/TypeFactory.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/TypeFactory.java b/org.aspectj.matcher/src/org/aspectj/weaver/TypeFactory.java index 19baaacb0..f22d14a0f 100644 --- a/org.aspectj.matcher/src/org/aspectj/weaver/TypeFactory.java +++ b/org.aspectj.matcher/src/org/aspectj/weaver/TypeFactory.java @@ -144,7 +144,7 @@ public class TypeFactory { return new UnresolvedType(signature, signatureErasure, typeParams); } // can't replace above with convertSigToType - leads to stackoverflow - } else if ((firstChar == '?' || firstChar == '*') && signature.length() == 1) { + } else if ((firstChar == '?' || firstChar == '*') && signature.length()==1) { return WildcardedUnresolvedType.QUESTIONMARK; } else if (firstChar == '+') { // ? extends ... @@ -297,6 +297,21 @@ public class TypeFactory { case '>': anglies--; break; + case '*': + if (anglies==0) { + int nextCharPos = endOfSig+1; + if (nextCharPos>=remainingToProcess.length()) { + sigFound=true; + } else { + char nextChar = remainingToProcess.charAt(nextCharPos); + if (!(nextChar=='+' || nextChar=='-')) { + // dont need to set endOfSig as the loop will increment + // it to the right place before it exits + sigFound=true; + } + } + } + break; case '[': if (anglies == 0) { // the next char might be a [ or a primitive type ref (BCDFIJSZ) |