aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs/protectedvf
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2004-02-19 22:09:16 +0000
committerjhugunin <jhugunin>2004-02-19 22:09:16 +0000
commit6ddae42579ceb781831e08f0fcf77a4ff4ffb5c0 (patch)
tree466c3b3a790f56c4985cbb78686342abe3447591 /tests/bugs/protectedvf
parent669cd7ce8634623c004cca5732c94a20fd7f57f7 (diff)
downloadaspectj-6ddae42579ceb781831e08f0fcf77a4ff4ffb5c0.tar.gz
aspectj-6ddae42579ceb781831e08f0fcf77a4ff4ffb5c0.zip
fix for Bugzilla Bug 51929
Advice calling protected super method causing java.lang.VerifyError 'Bad access to protected data' Also expanded test to cover protected field access as well as methods Fix required getting the correct receiver type for both field access and method calls to correspond to Java's complicated rules for accessing protected members (JLSv2 6.6.2 and mentioned in passing in JVMv2 5.4.4)
Diffstat (limited to 'tests/bugs/protectedvf')
-rw-r--r--tests/bugs/protectedvf/main/Driver.java4
-rw-r--r--tests/bugs/protectedvf/main/p1/ConcreteTest.aj6
-rw-r--r--tests/bugs/protectedvf/main/p2/AbstractTest.aj2
3 files changed, 8 insertions, 4 deletions
diff --git a/tests/bugs/protectedvf/main/Driver.java b/tests/bugs/protectedvf/main/Driver.java
index 6590760eb..5ca85cd32 100644
--- a/tests/bugs/protectedvf/main/Driver.java
+++ b/tests/bugs/protectedvf/main/Driver.java
@@ -9,10 +9,10 @@ public class Driver{
}
private void doOtherStuff() {
- System.out.println("doing other stuff");
+ //System.out.println("doing other stuff");
}
private void doStuff() {
- System.out.println("doing stuff");
+ //System.out.println("doing stuff");
}
}
diff --git a/tests/bugs/protectedvf/main/p1/ConcreteTest.aj b/tests/bugs/protectedvf/main/p1/ConcreteTest.aj
index be044e544..26f213b0c 100644
--- a/tests/bugs/protectedvf/main/p1/ConcreteTest.aj
+++ b/tests/bugs/protectedvf/main/p1/ConcreteTest.aj
@@ -10,14 +10,16 @@ final aspect ConcreteTest extends AbstractTest {
protected pointcut pc2(): execution(* Driver.doOtherStuff());
Object around(): pc2() {
- System.out.println("adding to the other stuff");
+ //System.out.println("adding to the other stuff");
/*If we comment out the next line we don't get a verify error.*/
+ ConcreteTest ct = this;
+ System.out.println("test: " + s + ", " + this.s + ", " + ct.s);
System.out.println("The value of the field when replacing is " + getField());
return proceed();
}
protected void hook() {
- /*This doesn't cause a verify error seemably because the advice calling it is in AbstractTest*/
+ /*This doesn't cause a verify error because this code is not inlined*/
System.out.println("The value of the field is " + getField());
}
} \ No newline at end of file
diff --git a/tests/bugs/protectedvf/main/p2/AbstractTest.aj b/tests/bugs/protectedvf/main/p2/AbstractTest.aj
index 0c8b040c4..748af744d 100644
--- a/tests/bugs/protectedvf/main/p2/AbstractTest.aj
+++ b/tests/bugs/protectedvf/main/p2/AbstractTest.aj
@@ -3,11 +3,13 @@ package main.p2;
public abstract aspect AbstractTest {
private int field;
+ protected String s = "test";
protected abstract pointcut pc();
Object around(): pc() {
this.field++;
+ s += "-1";
hook();
return proceed();
}