aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelSourceContext.java6
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/Utility.java4
2 files changed, 9 insertions, 1 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelSourceContext.java b/weaver/src/org/aspectj/weaver/bcel/BcelSourceContext.java
index 72a7939e1..f8c4c3c9a 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelSourceContext.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelSourceContext.java
@@ -29,6 +29,12 @@ public class BcelSourceContext implements ISourceContext {
public BcelSourceContext(BcelObjectType inObject) {
this.inObject = inObject;
+ sourceFileName = inObject.getJavaClass().getSourceFileName();
+
+ String pname = inObject.getResolvedTypeX().getPackageName();
+ if (pname != null) {
+ sourceFileName = pname.replace('.', '/') + '/' + sourceFileName;
+ }
}
private File getSourceFile() {
diff --git a/weaver/src/org/aspectj/weaver/bcel/Utility.java b/weaver/src/org/aspectj/weaver/bcel/Utility.java
index 4d54a786e..402c85b2f 100644
--- a/weaver/src/org/aspectj/weaver/bcel/Utility.java
+++ b/weaver/src/org/aspectj/weaver/bcel/Utility.java
@@ -421,6 +421,8 @@ public class Utility {
/** returns -1 if no source line attribute */
public static int getSourceLine(InstructionHandle ih) {
+ if (ih == null) return -1;
+
InstructionTargeter[] ts = ih.getTargeters();
if (ts != null) {
for (int j = ts.length - 1; j >= 0; j--) {
@@ -430,7 +432,7 @@ public class Utility {
}
}
}
- return -1;
+ return getSourceLine(ih.getNext());
}
// assumes that there is no already extant source line tag. Otherwise we'll have to be better.