org.aspectj/tests/new/IntroducedModifiers.java
2002-12-24 00:33:03 +00:00

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