org.aspectj/tests/new/RestrictingVisibilityCF.java
2002-12-16 18:51:06 +00:00

63 lines
2.3 KiB
Java

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;
// }