aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2006-07-06 12:12:07 +0000
committeraclement <aclement>2006-07-06 12:12:07 +0000
commit369de870280d4ae4f1e984a7bd8a76affb4ed0a2 (patch)
tree29356950b15fbd6f875ada384ff7b52aa626e9e8 /weaver
parent00669de71fac80693af27127e2587c596c1cf3f1 (diff)
downloadaspectj-369de870280d4ae4f1e984a7bd8a76affb4ed0a2.tar.gz
aspectj-369de870280d4ae4f1e984a7bd8a76affb4ed0a2.zip
test and fix for 148409
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/UnresolvedType.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/UnresolvedType.java b/weaver/src/org/aspectj/weaver/UnresolvedType.java
index 328acdaf7..49834e148 100644
--- a/weaver/src/org/aspectj/weaver/UnresolvedType.java
+++ b/weaver/src/org/aspectj/weaver/UnresolvedType.java
@@ -346,8 +346,17 @@ public class UnresolvedType implements TypeVariableDeclaringElement {
ret.typeVariables = new TypeVariable[ftps.length];
for (int i = 0; i < ftps.length; i++) {
Signature.FormalTypeParameter parameter = ftps[i];
- Signature.ClassTypeSignature cts = (Signature.ClassTypeSignature)parameter.classBound;
- ret.typeVariables[i]=new TypeVariable(ftps[i].identifier,UnresolvedType.forSignature(cts.outerType.identifier+";"));
+ if (parameter.classBound instanceof Signature.ClassTypeSignature) {
+ Signature.ClassTypeSignature cts = (Signature.ClassTypeSignature)parameter.classBound;
+ ret.typeVariables[i]=new TypeVariable(ftps[i].identifier,UnresolvedType.forSignature(cts.outerType.identifier+";"));
+ } else if (parameter.classBound instanceof Signature.TypeVariableSignature) {
+ Signature.TypeVariableSignature tvs = (Signature.TypeVariableSignature)parameter.classBound;
+ UnresolvedTypeVariableReferenceType utvrt = new UnresolvedTypeVariableReferenceType(new TypeVariable(tvs.typeVariableName));
+ ret.typeVariables[i]=new TypeVariable(ftps[i].identifier,utvrt);
+ } else {
+ throw new BCException("UnresolvedType.forGenericTypeSignature(): Do not know how to process type variable bound of type '"+
+ parameter.classBound.getClass()+"'. Full signature is '"+sig+"'");
+ }
}
ret.signatureErasure = sig;
ret.signature = ret.signatureErasure;