diff options
author | aclement <aclement> | 2006-07-06 12:12:07 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-07-06 12:12:07 +0000 |
commit | 369de870280d4ae4f1e984a7bd8a76affb4ed0a2 (patch) | |
tree | 29356950b15fbd6f875ada384ff7b52aa626e9e8 /weaver | |
parent | 00669de71fac80693af27127e2587c596c1cf3f1 (diff) | |
download | aspectj-369de870280d4ae4f1e984a7bd8a76affb4ed0a2.tar.gz aspectj-369de870280d4ae4f1e984a7bd8a76affb4ed0a2.zip |
test and fix for 148409
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/UnresolvedType.java | 13 |
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; |