diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/java/expr.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 7151645..0907e73 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2001-01-13 Per Bothner <per@bothner.com> + + * expr.c (expand_java_field_op): Assigning to a final field outside + an initializer does not violate JVM spec, so should be warning, not + error. (Sun's verifier does not complain - though MicroSoft's does.) + 2001-01-12 Joseph S. Myers <jsm28@cam.ac.uk> * gjavah.c (version), jcf-dump.c (version): Update copyright year diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 4ad903e..ddfc473 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -2215,7 +2215,7 @@ expand_java_field_op (is_static, is_putting, field_ref_index) else if (FIELD_STATIC (field_decl)) { if (!DECL_CLINIT_P (current_function_decl)) - error_with_decl (field_decl, + warning_with_decl (field_decl, "assignment to final static field `%s' not in class initializer"); } else @@ -2223,7 +2223,7 @@ expand_java_field_op (is_static, is_putting, field_ref_index) tree cfndecl_name = DECL_NAME (current_function_decl); if (! DECL_CONSTRUCTOR_P (current_function_decl) && !ID_FINIT_P (cfndecl_name)) - error_with_decl (field_decl, "assignment to final field `%s' not in constructor"); + warning_with_decl (field_decl, "assignment to final field `%s' not in constructor"); } } expand_assignment (field_ref, new_value, 0, 0); |