diff options
author | acolyer <acolyer> | 2005-08-09 12:58:31 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-08-09 12:58:31 +0000 |
commit | 52d810579f5055135ae8c4ce0a1f3a32a0612ba6 (patch) | |
tree | ceace7d8aec2a592afd378be772c79827f788a02 /weaver | |
parent | 23c9276e9c021d686376e57ae8cd255eeed5853c (diff) | |
download | aspectj-52d810579f5055135ae8c4ce0a1f3a32a0612ba6.tar.gz aspectj-52d810579f5055135ae8c4ce0a1f3a32a0612ba6.zip |
a shadow now remembers the resolved version of its signature
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/Shadow.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/Shadow.java b/weaver/src/org/aspectj/weaver/Shadow.java index 0b6186928..27ef06c38 100644 --- a/weaver/src/org/aspectj/weaver/Shadow.java +++ b/weaver/src/org/aspectj/weaver/Shadow.java @@ -46,6 +46,7 @@ public abstract class Shadow { private final Kind kind; private final Member signature; + private ResolvedMember resolvedSignature; protected final Shadow enclosingShadow; protected List mungers = new ArrayList(1); @@ -139,6 +140,11 @@ public abstract class Shadow { return getSignature().getParameterTypes(); } + public UnresolvedType[] getGenericArgTypes() { + if (getKind() == FieldSet) return new UnresolvedType[] { getResolvedSignature().getGenericReturnType() }; + return getResolvedSignature().getGenericParameterTypes(); + } + public UnresolvedType getArgType(int arg) { if (getKind() == FieldSet) return getSignature().getReturnType(); return getSignature().getParameterTypes()[arg]; @@ -181,6 +187,17 @@ public abstract class Shadow { return signature; } + /** + * returns the resolved signature of the thing under this shadow + * + */ + public ResolvedMember getResolvedSignature() { + if (resolvedSignature == null) { + resolvedSignature = signature.resolve(getIWorld()); + } + return resolvedSignature; + } + public UnresolvedType getReturnType() { if (kind == ConstructorCall) return getSignature().getDeclaringType(); @@ -511,4 +528,8 @@ public abstract class Shadow { public String toString() { return getKind() + "(" + getSignature() + ")"; // + getSourceLines(); } + + public String toResolvedString(World world) { + return getKind() + "(" + world.resolve(getSignature()).toGenericString() + ")"; + } } |