diff options
Diffstat (limited to 'tests/new/QualifiedSuperCall.java')
-rw-r--r-- | tests/new/QualifiedSuperCall.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/new/QualifiedSuperCall.java b/tests/new/QualifiedSuperCall.java new file mode 100644 index 000000000..c25fd3be8 --- /dev/null +++ b/tests/new/QualifiedSuperCall.java @@ -0,0 +1,93 @@ + +import org.aspectj.testing.*; + +// todo: package-qualified calls +/** PR651 PUREJAVA qualified super method calls */ +public class QualifiedSuperCall { + public static void main (String[] args) { + Super s; + s = new Super(); + Tester.check(null != s, "new Super()"); + s = new Sub(); + Tester.check(null != s, "new Sub()"); + s = new UnqualifiedSub(); + Tester.check(null != s, "new UnqualifiedSub()"); + s = new SubSub(); + Tester.check(null != s, "new SubSub()"); + s = new UnqualifiedSubSub(); + Tester.check(null != s, "new UnqualifiedSubSub()"); + s = new Mid(); + Tester.check(null != s, "new Mid()"); + s = new SubMid(); + Tester.check(null != s, "new SubMid()"); + s = new UnqualifiedSubMid(); + Tester.check(null != s, "new UnqualifiedSubMid()"); + } + static { + Tester.m("Super.duper=Sub()"); + Tester.m("Super.duper=UnqualifiedSub()"); + Tester.m("Super.duper=SubSub()"); + Tester.m("Super.duper=UnqualifiedSubSub()"); + Tester.m("Super.duper=SubMid()"); + Tester.m("Mid.duper=SubMid()"); + Tester.m("Mid.duper=UnqualifiedSubMid()"); + } + +} + +class Super { + Super() {} + void duper(String caller) { + Tester.event("Super.duper=" + caller); + } +} + +class Sub extends Super { + Sub() { + Super.super(); + Super.super.duper("Sub()"); + } +} +class UnqualifiedSub extends Super { + UnqualifiedSub() { + super(); + super.duper("UnqualifiedSub()"); + } +} + +class SubSub extends Sub { + SubSub() { + Sub.super(); + Sub.super.duper("SubSub()"); + } +} +class UnqualifiedSubSub extends UnqualifiedSub { + UnqualifiedSubSub() { + super(); + super.duper("UnqualifiedSubSub()"); + } +} + +class Mid extends Super { + Mid() { } + void duper(String caller) { + Tester.event("Mid.duper=" + caller); + } +} + +class SubMid extends Mid { + SubMid() { + Mid.super(); // XXX illegal ordering? + Super.super(); + Super.super.duper("SubMid()"); + Mid.super.duper("SubMid()"); + } +} +class UnqualifiedSubMid extends Mid { + UnqualifiedSubMid() { + super(); + super.duper("UnqualifiedSubMid()"); + } +} + + |