mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
63 lines
2.3 KiB
Java
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;
|
|
// }
|