diff options
Diffstat (limited to 'tests/pureJava/FinalStaticField.java')
-rw-r--r-- | tests/pureJava/FinalStaticField.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/pureJava/FinalStaticField.java b/tests/pureJava/FinalStaticField.java new file mode 100644 index 000000000..b1ae60dc5 --- /dev/null +++ b/tests/pureJava/FinalStaticField.java @@ -0,0 +1,40 @@ + +import java.lang.reflect.*; +import org.aspectj.testing.Tester; + + +class C{} + +class D { + public static final C public_c = new C(); + private static final C private_c = new C(); + protected static final C protected_c = new C(); + static final C default_c = new C(); +} + +/** @testcase PR#866 final static fields not marked as such in binaries */ +public class FinalStaticField { + public static final String[] FIELDS = new String[] + { "public_c", "private_c", "protected_c", "default_c" }; + + public static void main(String[] args) { + + Tester.expectEvents(FIELDS); + + Field[] fields = D.class.getDeclaredFields(); + StringBuffer failures = new StringBuffer(); + for (int i = 0; i < fields.length; i++) { + String fieldName = fields[i].getName(); + Tester.event(fieldName); + if (!fieldName.endsWith("_c")) { + Tester.check(false, "unexpected field: " + fieldName); + } else if (!(Modifier.isFinal(fields[i].getModifiers()))) { + failures.append(fieldName + " "); + } + } + Tester.checkAllEvents(); + if (0 < failures.length()) { + Tester.check(false, failures.toString()); + } + } +} |