mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
51 lines
1.7 KiB
Java
51 lines
1.7 KiB
Java
import org.aspectj.testing.Tester;
|
|
|
|
import java.lang.reflect.*;
|
|
|
|
public class IntroducedModifiers {
|
|
public static void main(String[] args) throws Exception {
|
|
Field f = C.class.getField("cf");
|
|
Tester.check(Modifier.isVolatile(f.getModifiers()), "volatile");
|
|
Tester.check(Modifier.isTransient(f.getModifiers()), "transient");
|
|
|
|
Method m = C.class.getMethod("m", new Class[0]);
|
|
Tester.check(Modifier.isSynchronized(m.getModifiers()), "synchronized");
|
|
Tester.check(Modifier.isStrict(m.getModifiers()), "strictfp");
|
|
|
|
f = C.class.getField("scf");
|
|
Tester.check(Modifier.isVolatile(f.getModifiers()), "volatile");
|
|
Tester.check(Modifier.isTransient(f.getModifiers()), "transient");
|
|
Tester.check(Modifier.isStatic(f.getModifiers()), "static");
|
|
|
|
//XXX this name depends on implementation details for field intro on interfaces
|
|
try {
|
|
f = C.class.getField("ajc$interField$A$I$iField");
|
|
} catch (NoSuchFieldException e) {
|
|
f = C.class.getField("iField");
|
|
}
|
|
Tester.check(Modifier.isVolatile(f.getModifiers()), "volatile");
|
|
Tester.check(Modifier.isTransient(f.getModifiers()), "transient");
|
|
|
|
m = C.class.getMethod("im", new Class[0]);
|
|
Tester.check(Modifier.isSynchronized(m.getModifiers()), "synchronized");
|
|
Tester.check(Modifier.isStrict(m.getModifiers()), "strictfp");
|
|
}
|
|
}
|
|
|
|
|
|
interface I {
|
|
}
|
|
|
|
class C implements I {
|
|
}
|
|
|
|
aspect A {
|
|
public transient volatile int C.cf = 0;
|
|
public synchronized strictfp int C.m() { return 0; }
|
|
|
|
public transient volatile static int C.scf = 0;
|
|
|
|
public synchronized strictfp int I.im() { return 0; }
|
|
public transient volatile int I.iField = 1;
|
|
}
|