summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-08-09 12:58:31 +0000
committeracolyer <acolyer>2005-08-09 12:58:31 +0000
commit52d810579f5055135ae8c4ce0a1f3a32a0612ba6 (patch)
treeceace7d8aec2a592afd378be772c79827f788a02 /weaver
parent23c9276e9c021d686376e57ae8cd255eeed5853c (diff)
downloadaspectj-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.java21
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() + ")";
+ }
}