patch_throw_statement, check_thrown_exceptions,
patch_conditional_expr): Likewise.
+1999-12-17 Tom Tromey <tromey@cygnus.com>
+
+ * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This
+ fixes PR gcj/119.
+ (process_file): Use `\n\' at end of each line in string.
+
+Thu Dec 16 00:09:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * expr.c (expand_invoke): Layout the loaded class before
+ attempting to use it.
+ (expand_java_field_op): Allow final field assignments to take
+ place in $finit$.
+ * typeck.c (convert): Return error_mark_node if expr is null.
+
1999-12-14 Alexandre Petit-Bianco <apbianco@cygnus.com>
* class.c (class_depth): Return -1 if the class doesn't load
* typeck.c (lookup_java_method): Take WFLs in method names into
account.
-1999-12-17 Tom Tromey <tromey@cygnus.com>
-
- * gjavah.c (decode_signature_piece): Print "::" in JArray<>. This
- fixes PR gcj/119.
- (process_file): Use `\n\' at end of each line in string.
-
Tue Dec 14 14:20:16 1999 Per Bothner <per@bothner.com>
* class.c (make_class_data): flag_keep_inline_functions to keep
if (! CLASS_LOADED_P (self_type))
{
load_class (self_type, 1);
+ safe_layout_class (self_type);
if (TREE_CODE (TYPE_SIZE (self_type)) == ERROR_MARK)
fatal ("failed to find class '%s'", self_name);
}
}
else
{
- if (! DECL_CONSTRUCTOR_P (current_function_decl))
+ tree cfndecl_name = DECL_NAME (current_function_decl);
+ if (! DECL_CONSTRUCTOR_P (current_function_decl)
+ && (cfndecl_name != finit_identifier_node))
error_with_decl (field_decl, "assignment to final field `%s' "
"not in constructor");
}
{
register enum tree_code code = TREE_CODE (type);
+ if (!expr)
+ return error_mark_node;
+
if (do_not_fold)
return build1 (NOP_EXPR, type, expr);