aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/ResolvedTypeX.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java
index 16634af07..2779f7cdd 100644
--- a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java
+++ b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java
@@ -986,10 +986,17 @@ public abstract class ResolvedTypeX extends TypeX {
for (Iterator iter = getInterTypeMungersIncludingSupers().iterator(); iter.hasNext();) {
ConcreteTypeMunger element = (ConcreteTypeMunger) iter.next();
if (element.getSignature() != null && element.getSignature().isAbstract()) {
+ ISourceLocation xtraLocation = element.getSourceLocation();
+ if (xtraLocation == null) {
+ // Until intertype mungers remember where they came from, the source location
+ // for the element is null when binary weaving. In these cases uses the
+ // source location for the aspect containing the ITD
+ xtraLocation = element.getAspectType().getSourceLocation();
+ }
world.getMessageHandler().handleMessage(
new Message("must implement abstract inter-type declaration: " + element.getSignature(),
"", IMessage.ERROR, getSourceLocation(), null,
- new ISourceLocation[] { element.getSourceLocation() }));
+ new ISourceLocation[] { xtraLocation }));
}
}
}