1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import org.aspectj.testing.Tester;
-
- /** @testcase PR#536 expecting compile failures with subclass narrowing scope of superclass methods or accessing private superclass variables */
- public class RestrictingVisibilityCF {
- public static void main(String[] args) {
- Tester.check(false, "compile should fail");
- }
- }
-
- class Parent {
- public int publicAccess;
- protected int protectedAccess;
- int defaultAccess;
- private int privateAccess;
-
- public void publicAccess() {}
- protected void protectedAccess() {}
- void defaultAccess() {}
- private void privateAccess() {}
- void drivePrivateAccess() {
- privateAccess();
- }
- }
-
- class InValidChild extends Parent {
- /** @testcase subclass private implementation of public method */
- private void publicAccess() { } // errLine 27
- /** @testcase subclass private implementation of method with default access */
- private void defaultAccess() { } // errLine 29
- /** @testcase subclass private implementation of protected method */
- private void protectedAccess() { } // errLine 31
-
- // todo: sep package, attempt package acces
- int defaultAccessSub = defaultAccess;
- }
-
- class InValidChild2 extends Parent {
- /** @testcase subclass private implementation of method with default access */
- private void defaultAccess() { } // errLine 39
- /** @testcase subclass protected implementation of public method */
- protected void publicAccess() { } // errLine 41
- }
-
- class InValidChild3 extends Parent {
- /** @testcase subclass default implementation of method with protected access */
- void protectedAccess() { } // errLine 46
- /** @testcase subclass default implementation of public method */
- void publicAccess() { } // errLine 48
- }
-
- class InValidChild4 extends Parent {
- /** @testcase private access members unavailable in subclass */
- private int foo = new Parent().privateAccess; // errLine 53
- }
-
- // /** todo: separate package test */
- // class Invalid {
- // /** @testcase default access members unavailable from separate package */
- // private int bar = new Parent().defaultAccess;
- // /** @testcase protected access members unavailable from separate package */
- // private int foo = new Parent().protectedAccess;
- // }
|