summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2011-04-26 16:10:56 +0000
committeraclement <aclement>2011-04-26 16:10:56 +0000
commita1c251df1f0ade186946b18d68a16c10bcbc84f2 (patch)
treee9448b92155d2d4d37957ee2015c0a205d1f792e /weaver
parent813c038cb5bb67faa82bd34bde9493766968c25b (diff)
downloadaspectj-a1c251df1f0ade186946b18d68a16c10bcbc84f2.tar.gz
aspectj-a1c251df1f0ade186946b18d68a16c10bcbc84f2.zip
343001: testcode and fix: when faulting in binary aspects, fill in decp parents
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java b/weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java
index 6971cc9e0..3fe24739b 100644
--- a/weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java
+++ b/weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java
@@ -50,6 +50,7 @@ import org.aspectj.weaver.bcel.BcelTypeMunger;
import org.aspectj.weaver.patterns.DeclareErrorOrWarning;
import org.aspectj.weaver.patterns.DeclareParents;
import org.aspectj.weaver.patterns.Pointcut;
+import org.aspectj.weaver.patterns.TypePatternList;
public class AsmRelationshipProvider {
@@ -786,9 +787,19 @@ public class AsmRelationshipProvider {
IProgramElement decpElement = new ProgramElement(model, "declare parents", IProgramElement.Kind.DECLARE_PARENTS,
getBinarySourceLocation(decp.getDeclaringType(), decp.getSourceLocation()), Modifier.PUBLIC, null,
Collections.EMPTY_LIST);
+ setParentTypesOnDeclareParentsNode(decp, decpElement);
return decpElement;
}
+ private static void setParentTypesOnDeclareParentsNode(DeclareParents decp, IProgramElement decpElement) {
+ TypePatternList tpl = decp.getParents();
+ List<String> parents = new ArrayList<String>();
+ for (int i = 0; i < tpl.size(); i++) {
+ parents.add(tpl.get(i).getExactType().getName().replaceAll("\\$", "."));
+ }
+ decpElement.setParentTypes(parents);
+ }
+
public static String getHandle(AsmManager asm, Advice advice) {
if (null == advice.handle) {
ISourceLocation sl = advice.getSourceLocation();