summaryrefslogtreecommitdiff
path: root/gcc/java/parse.h
Commit message (Collapse)AuthorAgeFilesLines
...
* [multiple changes]Alexandre Petit-Bianco2000-03-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | 2000-03-06 Bryce McKinlay <bryce@albatross.co.nz> * typeck.c (lookup_do): Search superinterfaces first when looking up an interface method. From Godmar Back <gback@cs.utah.edu> 2000-03-02 Alexandre Petit-Bianco <apbianco@cygnus.com> * java-tree.h (lookup_argument_method2): Declared. (safe_layout_class): Prototype moved from parse.h. * parse.h (safe_layout_class): Prototype moved to java-tree.h. * parse.y (java_check_regular_methods): Local `super_class' gone. Call lookup_argument_method2 instead of lookup_argument_method. Perform modifier match for methods found declared in implemented interfaces. Fixed indentation problem. Overriding/hiding error report to take place only for methods found in classes. * typeck.c (lookup_argument_method): Changed leading comment. Re-written by calling lookup_do. (lookup_argument_method2): New function. (lookup_java_method): Re-written by calling lookup_do. (lookup_do): New function. From-SVN: r32376
* * Eliminate DECL_FIELD_SIZE.Richard Kenner2000-02-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * builtins.c (built_in_class_names, built_in_names): New variables. * c-decl.c (finish_struct): Set specified size in DECL_SIZE. * expr.c (expand_expr, case COMPONENT_REF): Get field size from DECL_SIZE, not DECL_FIELD_SIZE. * print-tree.c (print_node): Remove code that prints extra blank lines in some cases. Properly handle inline and builtin function cases. * stor-layout.c (layout_decl): Get specified size from DEC_SIZE. * tree.h (built_in_class_named, built_in_names): New declarations. (union tree_decl): Rename internal unions to u1 and u2 and change some of their components. Add new field built_in_class. (DECL_ALIGN, DECL_INCOMING_RTL, DECL_SAVED_INSNS, DECL_FRAME_SIZE): Reflect above changes. (DECL_FUNCTION_CODE, DECL_BUILT_IN_CLASS): Likewise. (DECL_SET_FUNCTION_CODE, DECL_FIELD_SIZE): Deleted. * objc/objc-act.c (objc_copy_list): Use DECL_SIZE, not DECL_FIELD_SIZE. (encode_field_decl): Likewise; also remove obsolete test for bitfield. * ch/ch-tree.h (DECL_ACTION_NESTING_LEVEL): Use new tree union name. * ch/decl.c (finish_struct): Don't clear DECL_FIELD_SIZE. * ch/typeck.c (make_chill_struct_type): Likewise. (apply_decl_field_layout): General cleanup. Set DECL_SIZE instead of DECL_FIELD_SIZE. * cp/class.c (build_vtbl_or_vbase_field, check_methods): Don't clear DECL_FIELD_SIZE. (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not DECL_FIELD_SIZE. * cp/rtti.c (expand_class_desc): Likewise. * cp/cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name. (THUNK_VCALL_OFFSET): Likewise. (THUNK_DELTA): Reflect changes in ../tree.h. * java/java-tree.h (LABEL_PC): Relect name changes in ../tree.h. (DECL_BIT_INDEX): Use underlying representation. * java/parse.h (DECL_INHERITED_SOURCE_LINE): Likewise. From-SVN: r32249
* parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string concatenation.Kaveh R. Ghazi2000-01-251-2/+9
| | | | | | | | | | | | | | | | * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string concatenation. (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args. * parse.y (register_fields): Don't pass a format specifier to OBSOLETE_MODIFIER_WARNING. (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2 instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format specifier. (check_modifiers): Change function into a macro. (check_class_interface_creation): Pass a literal format string. From-SVN: r31614
* buffer.h: PROTO -> PARAMS.Kaveh R. Ghazi2000-01-211-24/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * buffer.h: PROTO -> PARAMS. * check-init.c: Likewise. * class.c: Likewise. * constants.c: Likewise. * convert.h: Likewise. * decl.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * gjavah.c: Likewise. * java-except.h: Likewise. * java-tree.h: Likewise. * jcf-depend.c: Likewise. * jcf-dump.c: Likewise. * jcf-parse.c: Likewise. * jcf-path.c: Likewise. * jcf-reader.c: Likewise. * jcf-write.c: Likewise. * jcf.h: Likewise. * jv-scan.c: Likewise. * jvgenmain.c: Likewise. * jvspec.c: Likewise. * lang.c: Likewise. * lex.c: Likewise. * lex.h: Likewise. * parse-scan.y: Likewise. * parse.h: Likewise. * parse.y: Likewise. * typeck.c: Likewise. * verify.c: Likewise. * xref.c: Likewise. * xref.h: Likewise. * zextract.c: Likewise. * zipfile.h: Likewise. From-SVN: r31550
* Makefile.in (LIBDEPS): Added gcc's errors.oAlexandre Petit-Bianco2000-01-061-5/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fri Dec 24 00:25:29 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * Makefile.in (LIBDEPS): Added gcc's errors.o (../jcf-dump$(exeext):): Link with gcc's errors.o (../gcjh$(exeext):): Likewise. * expr.c (expand_java_NEW): Layout the entire target type instead of laying out its methods only. (lookup_field): Layout the class after having loaded it. * java-tree.h (java_debug_context): Declared. * jcf-io.c (toplev.h): Included. (find_class): Removed assignment to jcf's outofsynch field. Force source file to be read if newer than its matching class file. Tweaked debug messages. * jcf-parse.c (jcf_out_of_synch): Deleted. (read_class): Call to jcf_out_of_synch removed. * jcf.h (typedef struct JCF): Field `outofsynch' deleted. (jcf_out_of_synch): Prototype deleted. * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag', `deprecated' and `class_err': integer turned into bit fields. New bit fields `saved_data_ctx' and `saved_data'. Fixed comments. * parse.y (package_list): New global. (package_declaration:): Record newly parsed package name. (extra_ctxp_pushed_p): Static global deleted. (java_parser_context_save_global): Create buffer context for the purpose of saving globals, if necessary. (java_parser_context_restore_global): Pop context pushed for the purpose of saving globals, if necessary. (java_debug_context_do): New prototype and function. (java_debug_context): Likewise. (do_resolve_class): Use already parsed package names to qualify and lookup class candidate. (java_pre_expand_clinit): Removed unnecessary local variable. From-SVN: r31261
* class.c (assume_compiled, [...]): Add static prototype.Kaveh R. Ghazi1999-12-311-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * class.c (assume_compiled, assume_compiled_node): Add static prototype. (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup. * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch. * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN. * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier' to `__modifier' to avoid stringifying it. * parse.y (verify_constructor_circularity): Don't call a variadic function with a non-literal format string. (java_check_abstract_methods): Move unreachable code inside `continue' statement. (lookup_method_invoke): Call xstrdup, not strdup. * expr.c (expand_java_field_op): Avoid the use of ANSI string concatenation. * jcf-parse.c (yyparse): Likewise. * jv-scan.c (main): Likewise. From-SVN: r31148
* parse.h (ABSTRACT_CHECK, [...]): Avoid the use of ANSI string concatenation.Kaveh R. Ghazi1999-12-311-13/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string concatenation. * parse.y (synchronized, variable_redefinition_error, check_class_interface_creation, create_interface, create_class, method_header, finish_method_declaration, check_modifiers_consistency, method_declarator, complete_class_report_errors, check_abstract_method_definitions, java_check_regular_methods, check_throws_clauses, java_check_abstract_methods, read_import_dir, check_pkg_class_access, declare_local_variables, fix_constructors, cut_identifier_in_qualified, resolve_expression_name, resolve_qualified_expression_name, patch_method_invocation, java_complete_lhs, patch_assignment, try_builtin_assignconv, patch_binop, patch_array_ref, patch_newarray, build_labeled_block, patch_exit_expr, patch_exit_expr, patch_switch_statement, patch_try_statement, patch_synchronized_statement, patch_throw_statement, check_thrown_exceptions, patch_conditional_expr): Likewise. From-SVN: r31146
* class.c (class_depth): Return -1 if the class doesn't load properly.Alexandre Petit-Bianco1999-12-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-12-14 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (class_depth): Return -1 if the class doesn't load properly. * expr.c (can_widen_reference_to): Check for errors during depth computation and return 0 accordingly. * jcf-parse.c (parse_source_file): Call java_fix_constructors to create default constructors and add an other error check. * parse.h (java_fix_constructors): Prototyped. * parse.y (java_pre_expand_clinit): Likewise. (build_super_invocation): Re-prototyped to feature one argument. (java_check_circular_reference): Directly use `current'. (java_fix_constructors): New function. (java_check_regular_methods): Don't create default constructors here, but abort if none were found. (java_complete_expand_methods): Pre-process <clinit> calling java_pre_expand_clinit. (java_pre_expand_clinit): New function. (fix_constructors): build_super_invocation invoked with the current method declaration as an argument. (build_super_invocation): Use the context of the processed method decl argument instead of current_class. * typeck.c (lookup_java_method): Take WFLs in method names into account. From-SVN: r31144
* parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third operand of a WFL...Alexandre Petit-Bianco1999-12-121-1/+1
| | | | | | | | | | Fri Dec 10 16:13:48 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third operand of a WFL, until the Java front-end gets fixed with regard to Mark Mitchell's gcc/tree.h patch (1999-12-04.) From-SVN: r30878
* parse.h (BUILD_THROW): Add support for sjlj-exceptions.Andrew Haley1999-12-101-1/+1
| | | | | | | | | | | | 1999-11-17 Andrew Haley <aph@cygnus.com> * parse.h (BUILD_THROW): Add support for sjlj-exceptions. decl.c (init_decl_processing): Add _Jv_Sjlj_Throw. expr.c (build_java_athrow): Add support for sjlj-exceptions. java-tree.h: Ditto. jcf-write.c: Ditto. From-SVN: r30859
* jcf-dump.c (print_constant, [...]): Don't call a variadic function with a ↵Kaveh R. Ghazi1999-10-141-6/+13
| | | | | | | | | | | | | | | | | | | | non-literal format string. * jcf-dump.c (print_constant, disassemble_method): Don't call a variadic function with a non-literal format string. * parse-scan.y (report_main_declaration): Likewise. * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. * parse.y (read_import_dir, patch_assignment, patch_binop, patch_array_ref): Likewise. * typeck.c (build_java_array_type): Likewise. * verify.c (verify_jvm_instructions): Likewise. From-SVN: r29981
* gjavah.c (print_name, [...]): Add static prototype.Kaveh R. Ghazi1999-08-251-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gjavah.c (print_name, print_base_classname, utf8_cmp, cxx_keyword_subst, generate_access, name_is_method_p, get_field_name, print_field_name, super_class_name, print_include, decode_signature_piece, print_class_decls, usage, help, java_no_argument, version, add_namelet, print_namelet): Add static prototype. (print_base_classname, utf8_cmp, cxx_keyword_subst, name_is_method_p): Constify a char*. (get_field_name): Likewise. Prefer xstrdup over malloc/strcpy. Provide a final else clause in an if-else-if. (print_field_info): Add missing final arg in function call to `print_field_name'. (print_method_info, decompile_method, decode_signature_piece, print_c_decl, print_full_cxx_name, print_stub, print_mangled_classname, super_class_name, print_include, add_namelet, add_class_decl, print_class_decls, process_file, help): Constify a char*. * jcf-write.c (jcf_handler, push_constant1, push_constant2, push_int_const, find_constant_wide, find_constant_index, push_long_const, field_op, maybe_wide, emit_dup, emit_pop, emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop, emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc, emit_if, emit_goto, emit_jsr, call_cleanups, make_class_file_name): Add static prototypes. (generate_bytecode_return, generate_bytecode_insns): Pass a NULL_PTR, not a NULL_TREE. * jv-scan.c: Include "jcf.h". (main): Declare using DEFUN macro. * jvspec.c (find_spec_file, lang_specific_pre_link, lang_specific_driver): Add prototypes. (find_spec_file): Constify a char*. * keyword.gperf (hash, java_keyword): Add prototypes. * lang.c (lang_print_error): Add static prototype. (lang_init): Prefer memcpy over bcopy to avoid casts. * lex.c (yylex): Add static prototype. * parse-scan.y: Include "lex.c" earlier. * parse.h: Remove redundant declaration for `yylex'. * parse.y (java_decl_equiv, binop_compound_p, search_loop, labeled_block_contains_loop_p): Add static prototypes. (not_accessible_p): Make static to match prototype. * verify.c (start_pc_cmp): Don't needlessly cast away const. From-SVN: r28862
* Warning fixes:Kaveh R. Ghazi1999-08-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H). * expr.c (java_stack_pop, java_array_data_offset, build_java_throw_out_of_bounds_exception, case_identity, build_java_check_indexed_type): Add static prototypes. (linenumber_table, expand_invoke, expand_java_field_op, build_primtype_type_ref, expand_byte_code): Constify a char*. * java-tree.h (build_primtype_type_ref, linenumber_table): Constify a char*. (java_lang_expand_expr): Add prototype. * lang.c: Include rtl.h and expr.h. Remove extern prototype for `java_lang_expand_expr'. * lex.c (java_lex_error): Constify a char*. (java_get_unicode, java_read_char, java_allocate_new_line, java_unget_unicode, java_sneak_unicode): Prototype. * parse-scan.y (current_class, package_name, method_declarator, report_class_declaration, yyerror): Constify a char*. * parse.h (java_report_errors): Prototype. (yyerror): Constify a char*. * parse.y (classitf_redefinition_error, check_modifiers, parse_jdk1_1_error, lookup_package_type, lookup_package_type_and_set_next, get_printable_method_name, purify_type_name): Constify a char*. (build_super_invocation, maybe_generate_finit, verify_constructor_super, parser_add_interface, add_superinterfaces, jdep_resolve_class, note_possible_classname, java_complete_expand_methods, java_expand_finals, cut_identifier_in_qualified, java_stabilize_reference, do_unary_numeric_promotion, operator_string, do_merge_string_cste, merge_string_cste): Prototype. (single_type_import_declaration, yyerror, variable_redefinition_error, build_array_from_name, build_unresolved_array_type, check_class_interface_creation, resolve_class, complete_class_report_errors, note_possible_classname, read_import_dir, find_in_imports_on_demand, resolve_package, fix_constructors, check_deprecation, lookup_method_invoke, maybe_build_primttype_type_ref, array_constructor_check_entry): Constify a char*. (java_complete_expand_methods, java_expand_finals): Make static. (convert_narrow): Remove static prototype. From-SVN: r28498
* class.c (make_field_value): DECL_INITIAL may be a string literal...Per Bothner1999-05-051-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | d * class.c (make_field_value): DECL_INITIAL may be a string literal; temporarily zero it while calling rest_of_decl_compilation. * java-tree.h (string_ptr_type_node): Add declaration. * decl.c: Define and initialize string_ptr_type_node. * parse.y (patch_string_cst): Use string_ptr_type_node. * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P): Removed. * parse.y (for_statement): Now unconditionally exit_block. (finish_labeled_statement): No longer exit_block if for-loop. (patch_loop_statement): Check harder if the loop is already labeled. * parse.y (patch_initialized_static_field): Removed function. (maybe_generate_clinit): Removed special handling for interfaces. (java_complete_expand_methods): Do a preliminary java_complete_tree on <clinit> to determine if it can be removed. (java_complete_expand_method): Remove special handling for <clinit>. (java_complete_lhs): For BLOCK and EXPR_WITH_FILE_LOCATION optimize if we get back empty_stmt_node. For MODIFY_EXPR, re-do checking of static initializers. (fold_constant_for_init): Don't return immediate if VAR_DECL. For VAR_DECL, pass correct context. From-SVN: r26790
* check-init.c (check_init): Exclude a case of error when doing xrefs.Alexandre Petit-Bianco1999-05-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fri Apr 30 17:54:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * check-init.c (check_init): Exclude a case of error when doing xrefs. * class.c (layout_class_method): Don't generate the error message twice when compiling from source. * lang-options.h: Added `-Wredundant-modifers' and `-Wunusupported-jdk11' flags and help text. * lang.c (lang_decode_option): Added support for `-Wunsupported-jdk11' and `-Wredundant-modifiers'. flag_static_local_jdk11 and flag_redundant set accordingly. * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK. * parse.h (EXPR_WFL_ADD_COL): New macro. (DECL_END_SOURCE_LINE): Likewise. (DECL_INHERITED_SOURCE_LINE): Likewise. * parse.y (static_ref_err): New function, prototyped. (CCB_TK): Now tagged <operator>. (class_body:): Remember the location of the closing '}' of a class definition when doing xrefs. (block:): Likewise. (block_end:): Likewise. (create_class): Remember the location of the inherited class identifier when doing xrefs. (register_fields): Added test on first operand of `init' before testing it TREE_CODE. (method_header): Store the location of the class identifier in the class decl when doing xrefs. (finish_method_declaration): Don't combine first/last method line when doing xref. (java_check_regular_methods): Warning check on not overriding methods with default access on other packages move before check on static methods. Initialization of `aflags' also moved up. (resolve_expression_name): Call static_ref_err to report the error. (static_ref_err): New function, implemented. (resolve_field_access): Returned simplified static field access when doing xrefs. (resolve_qualified_expression_name): Check for illegal use of static fields in a non static context. Call static_ref_err to report error in various places. (java_complete_tree): To not fold initialized static fields when doing xrefs. (java_complete_lhs): Likewise. From-SVN: r26758
* class.c (layout_class_method): Generate <clinit>'s rtl for interfaces.Alexandre Petit-Bianco1999-04-261-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sat Apr 24 16:50:19 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (layout_class_method): Generate <clinit>'s rtl for interfaces. * decl.c (complete_start_java_method): Don't call _Jv_InitClass for interfaces' <clinit>. * expr.c (lookup_field): Search for fields in interfaces. (expand_invoke): Fixed indentation. (expand_java_field_op): Likewise. Use IS_CLINIT. * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed. (IS_CLINIT): New macro. * parse.y (type_declaration:): Call maybe_generate_clinit after an interface was parsed. (maybe_generate_clinit): Don't generate if the current class is an interface with only fields of primitive types. (reset_method_name): Use IS_CLINIT. (java_complete_expand_method): Expand <clinit> when it exists for interfaces. Use IS_CLINIT. (resolve_expression_name): Use DECL_CONTEXT instead of current_class to build static field references. (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on ARRAY_REF when doing xreferencing. (check_final_assignment): Fixed typo in leading comment. Use IS_CLINIT. (patch_array_ref): Don't fully expand array references when xreferencing. (patch_return): Use IS_CLINIT. (patch_throw_statement): Likewise. From-SVN: r26661
* decl.c (predef_filenames, [...]): New globalsAlexandre Petit-Bianco1999-04-211-0/+3
| | | | | | | | | | | | | | | | | | | | Wed Apr 21 11:13:36 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * decl.c (predef_filenames, predef_filenames_size): New globals (init_decl_processing): predef_filenames and predef_filenames_size initialized. * java-tree.h (predef_filenames, predef_filenames_size): Declared extern. * jcf-parse.c (predefined_filename_p): New function. (yyparse): Check that files on the command line are specified only once and issue a warning otherwise. * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro. * parse.y (source_end_java_method): Nullify NOP method bodies, to avoid a gcc warning with -W -Wall turned on. (java_expand_classes): Abort if errors were encountered. (java_complete_lhs): If the cross reference flag is set, wrap field DECL node around a WFL when resolving expression name. From-SVN: r26578
* [multiple changes]Alexandre Petit-Bianco1999-03-271-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sat Mar 27 15:13:21 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count using a WFL compound value. * parse.y (xref.h): Include. (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the WFL compound value. (register_fields): Set WFL compound value to lineno if doing xrefs. (java_complete_expand_method): Call expand_xref if flag_emit_xref is set. * xref.c (system.h, jcf.h, parse.h, obstack.h): Include. * xref.h (expand_xref): Prototype renamed from xref_generate. Sat Mar 27 14:16:32 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK. (GET_CURRENT_BLOCK): New macro. * parse.y (current_static_block): New global variable. (method_body:): Define action. (complete_method_declaration): Set current_function_decl to NULL when work on the current method is done. (declare_local_variables): Use GET_CURRENT_BLOCK. (java_method_add_stmt): Likewise. (java_complete_expand_method): Disable the use of `this' when expanding <clinit>. (enter_a_block): If no current method exist, use current_static_block to link static initializer blocks. (exit_block): Rewritten to use current_static_block when no current method decl exists. (lookup_name_in_blocks): Use GET_CURRENT_BLOCK. (patch_return): Forbid the use of `return' in static initializers. (patch_throw_statement): Fixed indentation. Issue specific error for uncaught thrown checked exception in static initializer blocks. Removed FIXME. From-SVN: r26018
* Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) $(srcdir)/../system.h and ↵Kaveh R. Ghazi1999-03-211-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | $(JAVA_TREE_H). * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H) $(srcdir)/../system.h and $(JAVA_TREE_H). (jcf-io.o): Depend on $(JAVA_TREE_H). (mangle.o): Likewise. * check-init.c (check_cond_init): Add static prototype. * class.c (build_java_method_type, hashUtf8String, make_field_value, get_dispatch_vector, get_dispatch_table, append_gpp_mangled_type, mangle_static_field): Likewise. (strLengthUtf8): Hide unused definition. (hashUtf8String): Const-ify. (make_field_value): Un-ANSI-fy. * constants.c: Move inclusion of jcf.h above java-tree.h. (set_constant_entry, find_class_or_string_constant, find_name_and_type_constant, get_tag_node, build_constant_data_ref): Add static prototype. * decl.c (push_jvm_slot, builtin_function, lookup_name_current_level): Likewise. (builtin_function): Const-ify. * except.c (expand_start_java_handler, expand_end_java_handler): Add static prototype. * expr.c (flush_quick_stack, push_value, pop_value, java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr, build_java_ret, expand_java_multianewarray, expand_java_arraystore, expand_java_arrayload, expand_java_array_length, build_java_monitor, expand_java_pushc, expand_java_return, expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label, expand_compare, expand_test, expand_cond, expand_java_goto, expand_java_call, expand_java_ret, pop_arguments, expand_invoke, expand_java_field_op, java_push_constant_from_pool): Likewise. (decode_newarray_type, expand_iinc): Un-ANSI-fy. (build_java_arraynull_check): Mark parameters `node' and `type' with ATTRIBUTE_UNUSED. (note_label): Likewise for parameter `current_pc'. (expand_java_call, expand_java_ret): Hide unused definition. * java-tree.h (make_class, build_constants_constructor, java_set_exception_lang_code, pop_labeled_block, emit_handlers, init_outgoing_cpool, register_class, emit_register_classes, java_layout_seen_class_methods): Prototype. (unicode_mangling_length): Const-ify. (append_gpp_mangled_name, append_gpp_mangled_classtype, emit_unicode_mangled_name, format_int, format_uint, jcf_trim_old_input, jcf_print_utf8, jcf_print_char, jcf_print_utf8_replace, open_class): Prototype. * jcf-dump.c: Include "config.h", not <config.h>. Don't include <stdio.h>. Include tree.h/java-tree.h. (utf8_equal_string usage, process_class): Add static prototype. (open_class): Don't prototype this here. (utf8_equal_string): Match arguments to format specifiers. (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH, TABLE_SWITCH, disassemble_method): Likewise. * jcf-io.c: Include tree.h/java-tree.h. (open_class, find_classfile, jcf_print_utf8, jcf_print_utf8_replace): Const-ify. * jcf-parse.c (parse_zip_file_entries, process_zip_dir, parse_class_file): Add static prototype. (find_in_current_zip): Match definition to existing static prototype. * jcf-write.c: Include jcf.h before tree.h/java-tree.h. (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label, finish_jcf_block, define_jcf_label, get_jcf_label_here, put_linenumber, localvar_alloc, localvar_free, get_access_flags, write_chunks, adjust_typed_op, generate_bytecode_conditional, generate_bytecode_return, perform_relocations, init_jcf_state, init_jcf_method, release_jcf_state, generate_classfile): Add static prototype. (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED. (make_class_file_name): Const-ify. * jcf.h (find_classfile): Const-ify. * jv-scan.c (reset_report): Remove prototype. * jvgenmain.c: Include jcf.h/tree.h/java-tree.h. (error): Rewrite to allow varargs. * lang.c (lang_f_options): Const-ify. * lex.c (java_parse_escape_sequence): Add static prototype. (java_allocate_new_line): Match definition to existing static prototype. * mangle.c Include tree.h/java-tree.h. (unicode_mangling_length, emit_unicode_mangled_name, append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify. * parse.h (jdep_code): Remove trailing comma in enumeration. (java_get_line_col): Move prototype outside of !JC1_LITE test. (reset_report): Add prototype. * verify.c (push_pending_label, merge_types): Add static prototypes. * zipfile.h (opendir_in_zip, open_in_zip): Prototype. From-SVN: r25878
* class.c (make_class): Don't set CLASS_P here (because this function is also ↵Per Bothner1999-03-151-2/+1
| | | | | | | | | | | | | | | | | | | called by... d * class.c (make_class): Don't set CLASS_P here (because this function is also called by build_java_array_type). (push_class): Set CLASS_P here instead. * parse.h (TYPE_CLASS_P): Check for TYPE_ARRAY_P is redundant. * jcf-dump.c (print_access_flags): Take extra parameter to indicate context. If the context is class, perfer "super" over "synchronized". * jcf-write.c (generate_classfile): Don't add ACC_SUPER if interface. * parse.y (create_class): Don't call parser_check_super here; it is not robust. Always wait until later. * parse.y (method_header): For interfaces, set ACC_ABSTRACT (to match what JDK 1.2 does), but don't set ACC_PUBLIC. From-SVN: r25784
* parse.y (java_stabilize_reference): Return NODE when patching a COMPOUND_EXPR.Alexandre Petit-Bianco1999-03-121-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (java_stabilize_reference): Return NODE when patching a COMPOUND_EXPR. (java_complete_lhs): Put parenthesis around truth values. 1999-03-12 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (layout_class_method): Don't make rtl for interface methods. * parse.h (GET_TYPE_NAME): New macro. * parse.y (if_then_statement:): Fixed indentation. (if_then_else_statement:): Likewise. (for_statement:): Fixed spacing. (try_statement:): Fixed indentation. (create_interface): Don't force interfaces to be abstract. (method_header): Abstract methods are OK in interfaces. (declare_local_variables): Fixed typo in comment. (java_complete_expand_method): Fixed indentation. (resolve_qualified_expression_name): Use GET_TYPE_NAME to report non accessible fields. (java_stabilize_reference): New function. (java_complete_lhs): Fixed indentation. Use java_stabilize_reference in compound assignement. Insert the cast. If not processing `+' fix string constants before processing binop. From-SVN: r25733
* Warning fixes:Kaveh R. Ghazi1999-03-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | * constants.c (find_class_or_string_constant): Cast variable `j' to a `jword' when comparing against one. * expr.c (java_lang_expand_expr): Remove unused variables `has_finally_p' and `op0'. * gjavah.c (print_field_info): Cast a value to jint when comparing against one. Likewise for a jlong. (add_namelet): Likewise cast a `sizeof' to an int when comparing against a signed quantity. * jcf-dump.c (print_signature_type): Remove unused variable `digit'. (print_signature): Don't needlessly dereference variable `str' * jcf-reader.c (get_attribute): Mark variables `max_stack' and `max_locals' with ATTRIBUTE_UNUSED. (jcf_parse_class): Likewise for variable `index'. * parse.h (reverse_jdep_list): Remove static prototype. * parse.y (build_jump_to_finally): Remove prototype and definition. (reverse_jdep_list): Add static prototype. * typeck.c (convert_ieee_real_to_integer): Remove unused variables `assignment' and `expr_decl'. * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'. From-SVN: r25731
* Makefile.in (jcf-parse.o): Depend on $(PARSE_H).Kaveh R. Ghazi1999-03-061-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). (parse-scan.o): Depend on toplev.h. * class.c (make_method_value): Add prototype. Make it static. Remove unused second argument, caller changed. * expr.c (java_lang_expand_expr): Remove unused variable `return_label'. * java-tree.h: Don't prototype find_in_current_zip. Add prototypes for verify_constant_pool, start_java_method, end_java_method, give_name_to_locals, expand_byte_code, open_in_zip, set_constant_value, find_constant1, find_constant2, find_utf8_constant, find_string_constant, find_class_constant, find_fieldref_index, find_methodref_index, write_constant_pool, count_constant_pool_bytes and encode_newarray_type. * jcf-dump.c: Remove unused variable `LONG_temp'. * jcf-parse.c: Include parse.h. (jcf_parse_source): Remove unused parameter, all callers changed. (jcf_figure_file_type): Add static prototype. (find_in_current_zip): Likewise. Also remove unused parameter, all callers changed. (read_class): Initialize variable `saved_pos'. * jcf-reader.c (jcf_parse_preamble): Mark variables `minor_version' and `major_version' with ATTRIBUTE_UNUSED. * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE. (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE. (java_parse_doc_section): Initialize variable `seen_star'. (java_lex): Wrap variable `number_beginning' in !JC1_LITE. (java_lex_error): Mark parameters `msg' and `forward' with ATTRIBUTE_UNUSED. (java_get_line_col): Mark parameters `filename' and `line' with ATTRIBUTE_UNUSED. * parse-scan.y: Include toplev.h. (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED. * parse.h: use `struct JCF', not plain `JCF'. (java_parser_context_save_global, java_expand_classes java_parser_context_restore_global, java_parse): Add prototypes. * typeck.c (convert_ieee_real_to_integer): Remove unused variable `node'. From-SVN: r25616
* decl.c (build_result_decl): New method.Per Bothner1999-02-211-18/+0
| | | | | | | | | | | | | | | | | | | d * decl.c (build_result_decl), java-tree.h: New method. (complete_start_java_method): Handle synchronized methods. Don't build DECL_RESULT here. (Ordering dependency problem.) (start_java_method): Call build_result_decl here instead ... * parse.y (java_complete_expand_method): ... and here. (expand_start_java_method): Don't call complete_start_java_method here. (java_complete_expand_method): Call it here instead. * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Moved to .. * java-tree.h: ... here. * expr.c (force_evaluation_order): Fix typo, don't handle ARRAY_REF. * parse.y (java_complete_lhs): Don't call force_evaluation_order for ARRAY_REF - it doesn't work when array bounds are checked. (patch_array_ref): Handle it here instead. From-SVN: r25346
* parse.y (obtain_incomplete_type): Don't wrap unknown types in TREE_LIST - ↵Per Bothner1999-02-191-9/+6
| | | | | | | | | | | | | | | | | | | just chain the POINTER_TYPEs together. d * parse.y (obtain_incomplete_type): Don't wrap unknown types in TREE_LIST - just chain the POINTER_TYPEs together. (resolve_class): If type already resolved, return decl. After resolving, update TREE_TYPE(class_type), and name (if array). * parse.h (do_resolve_class), parse.y: Make non-static. * class.c (maybe_layout_super_class): Take this_class argument. Do do_resolve_class if necessary. (layout_class, layout_class_methods): Adjust calls appropriately. * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P): Redefined for new TREE_LIST-less convention. * typeck.c (build_java_array_type): Don't call layout_class. From-SVN: r25324
* Use new TRY_FINALLY_EXPR tree node.Per Bothner1999-02-191-1/+0
| | | | | | | � Use new TRY_FINALLY_EXPR tree node. See ChangeLog. From-SVN: r25314
* parse.h: DECL_P renamed JDECL_P.Alexandre Petit-Bianco1999-02-081-3/+3
| | | | | | | | | | | | Mon Feb 8 11:50:50 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.h: DECL_P renamed JDECL_P. * parse.y: DECL_P replaced by JDECL_P. (build_array_from_name): Always use pointer's type. (patch_bc_statement): Extra code to search continue target in a for loop. Fixed comments. Continue target is current loop when unlabeled. From-SVN: r25082
* parse.h (BUILD_APPEND): If ARG is a non-String object reference...Tom Tromey1999-01-291-3/+10
| | | | | | | * parse.h (BUILD_APPEND): If ARG is a non-String object reference, then cast it to Object before calling `append' method. From-SVN: r24907
* class.c (maybe_layout_super_class): Fixed returned value.Alexandre Petit-Bianco1999-01-121-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | Wed Jan 13 01:24:54 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (maybe_layout_super_class): Fixed returned value. * lex.c: Added 1999 to the copyright. (java_init_lex): Initialize java_lang_imported. * lex.h: Added 1999 to the copyright. * parse.h: Added 1999 to the copyright. (REGISTER_IMPORT): Fixed typo in trailing macro. (CURRENT_OSB): New macro. (struct parser_ctxt): New fields osb_depth, osb_limit. * parse.y (java_lang_id): New global variable. (type_import_on_demand_declaration): Don't import java.lang.* twice. (array_creation_expression:): Use CURRENT_OSB. (dims:): Uses a stack to keep track of array dimensions. (cast_expression:): Use CURRENT_OSB. (find_expr_with_wfl): Return NULL if node found doesn't meet the conditions. (register_fields): Fixed typos in comment. (check_method_redefinition): Fixed comment indentation. (java_check_regular_methods): Set saved found wfl to NULL after having reinstalled it in the previously found DECL_NAME. Fix an array dimension counting bug and some random other ones. From-SVN: r24648
* Fix copyrights.Jeff Law1999-01-061-1/+1
| | | | From-SVN: r24538
* check-init.c: New file.Per Bothner1999-01-061-3/+0
| | | | | | | * check-init.c: New file. Checks for definite assignment. Various minor other changes; see ChangeLog. From-SVN: r24522
* java-tree.def (NEW_ARRAY_INIT): New Java tree code.Alexandre Petit-Bianco1998-12-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Wed Dec 9 15:37:05 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * java-tree.def (NEW_ARRAY_INIT): New Java tree code. * lex.c (java_lex): Remember column position before advancing one token. Retain location information on OCB_TK. * lex.h (typedef struct java_lc): Added new field. * parse.h (GET_SKIP_TYPE): New macro. (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE. * parse.y (build_new_array_init, patch_new_array_init, patch_array_constructor, maybe_build_array_element_wfl, array_constructor_check_entry): New function prototypes. (switch_block:): Tagged <node>. (OCB_TK): Tagged <operator>. (array_initializer:): Installed actions. (variable_initializer): Build location information on element if necessary. (switch_statement:): Fixed indentation typo. (switch_block:): Redefined default action. (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:. (patch_assignment): Removed duplicate code. (maybe_build_array_element_wfl, build_new_array_init, patch_new_array_init, patch_array_constructor, array_constructor_check_entry): New functions. Parse and walk array initializer nodes. From-SVN: r24224
* java-tree.h (java_layout_seen_class_methods): New function prototype.Alexandre Petit-Bianco1998-12-031-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Thu Dec 3 17:11:12 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * java-tree.h (java_layout_seen_class_methods): New function prototype. (LAYOUT_SEEN_CLASS_METHODS): Macro removed. * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods. * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro. * parse.y (method_declarator:): Defined action. (issue_warning_error_from_context): input_filename saved, set to the appropriate value and restored after java_error is called. (build_unresolved_array_type): Fixed comment. (register_fields): Use PROMOTE_RECORD_IF_COMPLETE. (method_header): Deal with return type the same way type are handled for fields and method's parameters and local variables types are handled. (check_method_redefinition): Removed extra CR. (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE. (java_layout_seen_class_methods): New function. (java_layout_classes): Call java_layout_seen_class_methods. Handles an obsolete way of declaring methods returning an array. Does a better job at laying out class methods before code generation. From-SVN: r24077
* class.c (layout_class_method): Don't report error on non-static overriding ↵Alexandre Petit-Bianco1998-12-011-164/+1
| | | | | | | | | | | | | | | | | | | | | | | | static if the method is private. Tue Dec 1 13:53:24 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (layout_class_method): Don't report error on non-static overriding static if the method is private. * java-tree.h (finish_class): Prototype added. * lex.c (java_get_line_col): Handle col argument -2 value. * parse.h: All static method declarations moved to parse.y. * parse.y: Now contains all static method declarations previously found in parse.h. (find_expr_with_wfl, missing_return_error, unreachable_stmt_error): New functions. (java_get_real_method_name): Identify constructors bearing class names in source code compiled classes only. (java_complete_expand_methods): Call missing_return_error. (invocation_mode): Private methods invoked as static methods. (java_complete_tree): Call unreachable_stmt_error. This patch corrects the way unreachable statement and missing return statement errors are reported. It also fixes random bugs. From-SVN: r24036
* [multiple changes]Alexandre Petit-Bianco1998-11-241-20/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tue Nov 24 17:06:38 1998 Per Bothner <bothner@cygnus.com> * (generate_classfile): Always write class access flag with ACC_SUPER set. Tue Nov 24 16:34:33 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (maybe_layout_super_class): New function. (layout_class): Reorganized. Loop on class methods dispatched into a new function. Call maybe_layout_super_class. (layout_class_methods, layout_class_method): New functions. * expr.c (expand_java_NEW): Call layout_class_methods on loaded class. (expand_invoke): Likewise. * java-tree.h (all_class_list): New global variable declared. (layout_class_methods, layout_class_method): New function prototypes. (LAYOUT_SEEN_CLASS_METHODS): New macro. * jcf-parse.c (all_class_list): New global variable. (load_class): Extended what class_or_name can be. Use parser context mechanism to save globals before calling jcf_parse. (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P is set on the file name. (jcf_parse): Layout class methods when Object is loaded, otherwise record class in all_class_list for delayed method layout. (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS. * lang.c (put_decl_node): Decode <init> into the decl context class name. * lex.c (java_allocate_new_line): Use xmalloc. * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete pointers, not TREE_LIST elements. (struct parser_ctxt): Fixed comment indentations, added comments and reordered some fields. (java_check_methods): Function prototype removed. * parse.y (java_push_parser_context): Use xmalloc. (java_parser_context_restore_global): Pop extra pushed ctxp only when there's nothing next. (maybe_create_class_interface_decl): Fixed comment, add new created class decl to all_class_list. (method_header): Use GET_REAL_TYPE on argument's types. (method_declarator): Use GET_REAL_TYPE, change type to the real type in TREE_LIST dependency node. Build argument list with the real type. (create_jdep_list): Use xmalloc. Removed allocation error message. (obtain_incomplete_type): Fixed leading comment. Broadened incoming argument meaning. (register_incomplete_type): Use xmalloc. Removed allocation error message. (safe_layout_class): Fixed leading comment. (jdep_resolve_class): Reversed if statement condition and switch if and else bodies. (resolve_and_layout): Fixed leading comment. Broadened incoming argument meaning. (complete_class_report_errors): New local variable name, for clarity. purify_type_name used for all error cases. (java_get_real_method_name): Stricter check on constructors. (java_check_regular_methods): Reverse methods list only if not already laid out. Layout artificial constructor. (java_check_methods): Deleted. (source_start_java_method): Obtain incomplete type for patchable method arguments. (java_layout_classes): Fixed leading comment. Use LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS before returning. Fixed comments. (java_expand_classes): Check for errors up front. (patch_method_invocation): Class to search is resolved and laid out. A step forward truly mixing .class and .java during package compilation. Includes a Per's patch. From-SVN: r23834
* class.c (unmangle_classname): Set QUALIFIED_P when appropriate.Alexandre Petit-Bianco1998-11-181-22/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wed Nov 18 23:54:53 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (unmangle_classname): Set QUALIFIED_P when appropriate. (layout_class): Cope with methods featuring WFL in decl names. * decl.c (unqualified_object_id_node): New global variable, initialized. (build_decl_no_layout): Removed. * expr.c (build_primtype_type_ref): Handle Double. (java_lang_expand_expr): Fixed indentations. * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted. (flag_wall, flag_redundant, flag_not_overriding, flag_static_local_jdk1_1, unqualified_object_id_node): Global variable declarations. (build_decl_no_layout): Removed prototype. (java_get_real_method_name): Added prototype. (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P. (java_parse_abort_on_error): Macro now just returns. * jcf-parse.c (jcf_parse_source): Check fclose returned value. Call emit_register_classes if java_report_errors returns zero. * lanc.c (flag_wall, flag_redundant, flag_not_overriding, flag_static_local_jdk1_1): New integer flags. (lang_decode_option): New flags set here. * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros. (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to the flag_redundant variable. (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object when parsing java.lang.Object class. (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal NULL_TREE to build. (resolve_qualified_expression_name): Fixed indentation. (patch_array_ref): Changed prototype. (not_initialized_as_it_should_p): Prototype removed. (java_report_errors): Added function prototype. * parse.y (formal_parameter:): Changed error message for not yet supported final parameters. (class_type_list:): Set both PURPOSE and VALUE of created TREE_LIST to be class_type. (primary_no_new_array:): Handle class literals on primitive types. (parse_warning_context): Reinstalled correct force_error and do_warning flags setups. (java_report_errors): Changed prototype. Return java_error_count value. (variable_redefinition_error): Consider treating variable type as a fake pointer. (create_interface): Warn about redundant abstract modifier if flag_redundant is set. Changed error message. (lookup_field_wrapper): Save/restore globals before/after looking up field. (duplicate_declaration_error_p): Consider treating declaration type as a fake pointer. (register_fields): Extract real type from dependency node. Check for duplicate field declaration after type adjustment. Use DECL_INITIAL to store static final initialized values. (method_header): Extract real function type from dependency node. (check_abstract_method_header): Use GET_METHOD_NAME. (obtain_incomplete_type): Layout fake pointer type. (safe_layout_class): Don't try to check for methods before layout. (java_complete_class): Don't check for correct throws clause elements inheritance here. (resolve_and_layout): Broadened name parameter meaning. (reset_method_name): Use GET_METHOD_NAME. (java_get_real_method_name): New function. (java_check_regular_methods): Don't check methods in java.lang.Object. Verify lineage of throws clause elements. Use flag_no_overriding in warning report. (check_throws_clauses): Don't check if class was from bytecode. Use IS_UNCHECKED_EXCEPTION_P macro. (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag. (declare_local_variables): Use flag_static_local_jdk1_1 to report warning on unsupported final local variables. Use build_decl instead of build_decl_no_layout. Get real local variable type from dependency node. (source_start_java_method): Get real parameter type from dependency node. Call build_decl instead of build_decl_no_layout. (java_layout_classes): Reverse tree and layout type and class as required. Mark class as loaded when done. (resolve_field_access): Fixed indentation. Restricted condition leading to static field access code generation. Set field_type decl's TREE_TYPE if QUAL_DECL_TYPE not available. (resolve_qualified_expression_name): Initialize type_found to null. Handle static field resolved during qualification. Fixed layout on non primitive field decl types. (not_accessible_p): Fixed typo in comment. (patch_method_invocation): Resolve and layout class to search from type. (lookup_method_invoke): Keep integer constant 0 as is. Resolve and layout non primitive type, if necessary. Make method node only to report errors. (find_applicable_accessible_methods_list): Consider WFL'ed method decl names. Fixed indentation. (argument_types_convertible): Resolve and layout target type if necessary. (java_complete_tree): Fixed indentation problems. Rewrote CALL_EXPR thrown exceptions check. Re-installed further processing of the assignment in certain cases. (patch_assignment): Call maybe_build_primttype_type_ref to perform inlining on class literals. (valid_builtin_assignconv_identity_widening_p): Cope with constant 0 literal. (valid_method_invocation_conversion_p): Likewise. (patch_string): Temporary disable forbidden use of `this' in explicit constructor invocations when doing string concatenation within their scope. (patch_unaryop): Added comment. Reinstalled code to disable further check on assignment operation with cast expression RHS. (patch_switch_statement): Fixed indentation. (build_try_statement): Call build_decl instead of build_decl_no_layout. (patch_synchronized_statement): Likewise. (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of IS_UNCHECKED_EXPRESSION_P. (check_thrown_exceptions_do): Changed leading comment. Resolve and layout argument exception type. (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead of IS_UNCHECKED_EXPRESSION_P. Fixed problems found when compiling a mixture of .class and .java files in the same package. Some support for the compilation of libjava. From-SVN: r23704
* Extensive changes.Per Bothner1998-11-121-6/+7
| | | | | | | � Extensive changes. See ChangeLog. From-SVN: r23621
* class.c (is_compiled_class): Call safe_layout_class for class compiled from ↵Alexandre Petit-Bianco1998-11-101-3/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | source. Tue Nov 10 12:34:03 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (is_compiled_class): Call safe_layout_class for class compiled from source. * conver.h (convert_to_integer, convert_to_real, convert_to_pointer): Added prototypes. * decl.c (init_decl_processing): Non longer push the decls of `methodtable', `constants', `Class', `Field', `dispatchTable' `jexception' and `Method'. * expr.c (build_invokeinterface): New function. (expand_invoke): static variable CLASS_IDENT now in build_invokeinterface. Use build_invokeinterface. (expand_java_field_op): Moved code to inline java.lang.PRIMTYPE.TYPE into a function. (build_primtype_type_ref): New function. * java-tree.def (INSTANCEOF_EXPR): New tree code. * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED, FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros. (DECL_CONSTRUCTOR_P): Fixed typo in comment. (DECL_LOCAL_STATIC_VALUE): New macro. (build_invokeinterface, build_primtype_type_ref): New function prototypes. (java_parse_abort_on_error): Macro rewritten. * jcf-parse.c (current_method): Add comment to declaration. (parse_zip_file_entries, process_zip_dir, void parse_source_file): Function prototypes fixed. (jcf_parse_source): push/pop parser context. save/restore global. (parse_source_file): Fixed leading comment. Now take a IDENTIFIER_NODE as an argument. Doesn't check methods, layout classes and pop the parser context anymore. (yyparse): Push parser context, save globals, parse the source file, restore globals and pop the parser context when processing a source file. * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. * lex.c (java_parse_doc_section): New function. (java_lex): Call java_parse_doc_section when appropriate. Build an operator around INSTANCEOF_TK. * lex.h (java_lineterminator, java_sprint_unicode, java_unicode_2_utf8, java_lex_error, java_store_unicode): Prototypes rewritten. (java_parse_escape_sequence, java_letter_or_digit_p, java_parse_doc_section, java_parse_end_comment, java_get_unicode, java_read_unicode, java_store_unicode, java_read_char, java_allocate_new_line, java_unget_unicode, java_sneak_unicode): Added function prototypes. * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define. (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT): New macros (struct parser_ctxt): New fields: deprecated, current_parsed_class_un, gclass_list. (fix_method_argument_names, issue_warning_error_from_context, resolve_package, lookup_package_type): New function prototypes. (resolve_expression_name): Fixed function prototype. (find_applicable_accessible_methods_list): Fixed indentation, added extra argument in prototype. (check_final_assignment, build_null_of_type, check_deprecation, check_method_redefinition, reset_method_name, java_check_regular_methods, java_check_abstract_methods, maybe_build_primttype_type_ref): New function prototype. * parse.y (conver.h): Include. (INSTANCEOF_TK): Tagged <operator>. (single_type_import_declaration): Use REGISTER_IMPORT macro. (relational_expression:): Build binop for instanceof. (java_push_parser_context): Remember ctxp->gclass_list across contexts. (java_pop_parser_context): Simply return if no context exists. Remember gclass_list across contexts. (issue_warning_error_from_context): New function. (parse_error_context): Don't setup ctxp->elc here. Call issue_warning_error_from_context instead. (parse_warning_context): Likewise. (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL setup. Link new class/interface to ctxp->gclass_list. (add_superinterfaces): Register interface as incomplete if not loaded. (create_class): Remember class unqualified name in ctxp->current_parsed_class_un. Check class deprecation. (register_fields): Check field deprecation. Remember static final field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part processing INIT. (method_header): New local variable ORIG_ARG. Use unqualified current class name for check on constructor errors. Promote return type if of record type. Argument list fix moved in fix_method_argument_names, called here. Check method deprecation. (fix_method_argument_names): New function. (method_declarator): Promote record typed arguments. (safe_layout_class): Check class methods before layout. (java_complete_class): Compute field layout when patched. (do_resolve_class): Try to load class after having it renamed after the package name. (get_printable_method_name): Use DECL_CONTEXT. (reset_method_name): New function. (check_method_redefinition): Use reset_method_name. (java_check_regular_methods): New local variable SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method names for error report. Check for compile-time error when method found has default (package) access. (java_check_abstract_methods): Now takes an interface DECL node as an argument. Also reinstall real name on unchecked overriding/hiding methods for error report. (java_check_methods): Fixed leading comment. Get classes to verify from ctxp->gclass_list. Use CHECK_METHODS macro and set CLASS_METHOD_CHECKED_P on class verification. (lookup_java_method2): Get real method name if necessary. (find_in_imports): Don't check package class access here. (resolve_package, lookup_package_type): New functions. (java_layout_classes): Fixed leading comment. Take classes to be laid out from ctxp->gclass_list. (java_complete_expand_methods): Don't expand native and abstract methods. (java_expand_classes): New function. (resolve_expression_name): Use additional argument ORIG. Retrieve values of static final field of primitive types. (resolve_field_access): Handles static final field of promotive type. (resolve_qualified_expression_name): Handle STRING_CST as primaries and package name resolution. Check deprecation on found decls. Set where_found and type_found on non static field resolved during qualification. Layout non primitive field decl types. (check_deprecation): New function. (maybe_access_field): Simplified. (patch_method_invocation_stmt): Local variable CLASS_TYPE removed. Reverse method's argument when primary is a type. Don't use CLASS_TYPE to report problems, use IDENTIFIER_WFL instead. Include abstract class in the list of class searchable for constructors. Use DECL_CONTEXT of found method for access checks. Check method deprecation. (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when converting arguments. Handle INVOKE_INTERFACE. (lookup_method_invoke): Search constructor using existing infrastructure (don't rely on lookup_java_constructor anymore). (find_applicable_accessible_methods_list): Extra argument flag LC. Now include constructor in the search. (qualify_ambiguous_name): Conditional expression are primaries. (not_initialized_as_it_should_p): static final are always initialized. (java_complete_tree): Pass extra NULL argument to resolve_expression_name. Stricter test to carry on patching assignments. New case for INSTANCEOF_EXPR. (complete_function_arguments): Inline PRIMTYPE.TYPE read access. (check_final_assignment, maybe_build_primttype_type_ref): New functions. (patch_assignment): Detect resolved static finals and carry normal assignment error check on them. Inline PRIMTYPE.TYPE read access. (try_builtin_assignconv): Access constant 0 on all primitive types. (valid_builtin_assignconv_identity_widening_p): Accept identical types. Accept all promoted type on int type. (valid_ref_assignconv_cast_p): Accept a null pointer to be assigned to a reference. (valid_method_invocation_conversion_p): Accept to check null pointers. (build_binop): Merge declaration and initialization of local variable BINOP. (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all numeric types. Improved validity test for qualify operators on references. (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR and PREINCREMENT_EXPR. Also detect resolved static finals of a primitive type and issue the appropriate error message. (resolve_type_during_patch): Mark class loaded when resolved. (patch_cast): Allow null to be cased to reference types. (build_null_of_type): New function. (patch_array_ref): Handle array on references correctly. (patch_return): Removed unused local variable MODIFY. Force boolean to be returned as integers. Allows null to be returned by a function returning a reference. * typeck.c (convert_to_integer, convert_to_real, convert_to_pointer): Prototypes moved to convert.h (lookup_argument_method): Use method real name, if necessary. This improves method checking, gets rid of a cross file type dependency bug and does a more robust job at laying out classes when necessary. It unifies the regular methods and constructors lookup. It implements the `instanceof' operator and interface method invocations. It also fixes random bugs. From-SVN: r23599
* class.c (layout_class): Don't mangle <finit>, produce __finit<class> instead.Alexandre Petit-Bianco1998-10-281-10/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wed Oct 28 08:03:31 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (layout_class): Don't mangle <finit>, produce __finit<class> instead. Don't verify artificial methods. * decl.c (finit_identifier_node): New declared global. (init_decl_processing): finit_identifier_node initialized. * java-tree.def (CONDITIONAL_EXPR): New Java tree code. * java-tree.h (finit_identifier_node): Declared as extern. (struct lang_decl): New field called_constructor. (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor. (CLASS_HAS_FINIT_P): New macro. (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks explicit constructor invocation. (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P): New macros. (write_classfile): Added prototype. * jcf-parse.c (jcf_parse_source): Parse and remember for generation if the file was seen on the command line. (parse_source_file): Don't write the class file here. (yyparse): Loop on files rewritten. Set current_jcf. (parse_zip_file_entries): Parse class file only if it was found. * lang.c (init_parse): Don't open command line provided filename here. (lang_parse): Don't set main_jcf anymore. * parse.h (ABSTRAC_CHECK): Capitalized arguments. (JCONSTRUCTOR_CHECK): New macro. (JBSC_TYPE_P): New macro. (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment. (COMPLETE_CHECK_OP_2): New macro. (struct parse_ctxt): New field explicit_constructor_p. (check_class_interface_creation): Fixed prototype indentation. (patch_method_invocation_stmt): Prototype reflects added argument. (patch_invoke): Likewise. (complete_method_declaration, build_super_invocation, verify_constructor_circularity, build_this_super_qualified_invocation, get_printable_method_name, patch_conditional_expr, maybe_generate_finit, fix_constructors, verify_constructor_super, create_artificial_method, start_artificial_method_body, end_artificial_method_body, generate_field_initialization_code): New function prototypes. * parse.y: Fixed leading comment (constructor_header:, constructor_body:, block_end:): Rules tagged <node>. (type_declaration:): Call maybe_generate_finit. (method_declaration:): Action for method_body: placed in new function complete_method_declaration, called here. (constructor_declaration:): Defined actions. Removed leading FIXME. (constructor_header:): New rule with action. (constructor_body:): Rule rewritten using block_begin: and block_end:. Defined actions. (constructor_declarator:, explicit_constructor_invocation:): Defined actions. (block:): Use new rules block_begin: block_end:. (block_begin:, block_end:): New rules and actions. (block_statements:): Fixed error message for explicit constructors. (method_invocation:): Call build_this_super_qualified_invocation if primary is `this' or `super' was seen. (conditional_expression:): Action defined. (extra_ctxp_pushed_p): New static global flag. (java_parser_context_save_global): Create parser context if necessary. Use extra_ctxp_pushed_p to remember it. (java_parser_context_restore_global): Pop extra parser context if one exists. (build_array_from_name): Array on primitive types are marked loaded. (register_fields): Restore new name in field initializer expression if type was altered. Non static fields initialized upon declaration marked initialized. (maybe_generate_finit): New function. (maybe_generate_clinit): Use create_artificial_method, start_artificial_method_body, end_artificial_method_body. Generate debug info for enclosed initialization statements. (method_header): Fixed leading comment. Check constructor flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P accordingly. (complete_method_declaration, constructor_circularity_msg, verify_constructor_circularity): New functions. (get_printable_method_name): New function. (check_method_redefinition): Don't rename <finit> methods. Fix declared constructor names. Error message for constructors modified. (java_check_regular_methods): Local variable seen_constructor renamed saw_constructor. Skip verification on constructors. Create default constructor with create_artificial_method. (java_check_methods): Removed unnecessary empty line. (create_artificial_method, start_artificial_method_body, end_artificial_method_body): New functions. (java_layout_classes): Changed leading comment. Reverse fields list if necessary. Always layout java.lang.Object if being defined. (java_complete_expand_methods): Verify constructor circularity. (java_complete_expand_method): Call fix_constructor on constructors. Local variable no_ac_found removed. Restore bindings if method body expansion failed. (fix_constructors, verify_constructor_super, generate_field_initialization_code): New function. (java_expand_classes): Fixed leading comment. Write class file here. (resolve_expression_name): Check for illegal instance variable usage within the argument scope of an explicit constructor invocation. (resolve_qualified_expression_name): Pass extra from_super flag when invoking patch_method_invocation_stmt. New case for conditional expression when used as a primary. Check for error when acquiring super. (patch_method_invocation_stmt): Added extra argument super. New local variable is_static_flag. Set class_to_search according to the nature of the constructor invocation. Don't add `this' argument when expanding NEW_CLASS_EXPR. Check for illegal method invocation within the argument scope of explicit constructor invocation. Set is_static according to is_static_flag. Provide extra `super' argument to patch_invoke invocation. (patch_invoke): New argument from_super. Loop on arguments indentation fixed. Pass from_super to invocation_mode. New switch case INVOKE_SUPER. Fixed error message in switch default case. Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node value. (invocation_mode): Return INVOKE_SUPER mode when appropriate. (lookup_method_invoke): Fixed prototypes in candidates list. Error message takes constructors into account. (find_applicable_accessible_methods_list): Fixed indentation. (qualify_ambiguous_name): Take explicit constructor invocation into account. Deal with a conditional expression as a primary to a method call. (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR case. Added extra argument to patch_method_invocation_stmt. Register calls made to explicit constructor `this'. Don't call save_expr in ARRAY_REF case when emitting class files. Check for illegal use of this when expanding explicit constructor invocation arguments. (complete_function_arguments): Set and reset parser context explicit_constructor_p field value when appropriate. (build_super_invocation, build_this_super_qualified_invocation): New functions. (patch_assignment): Fixed typo. (patch_unaryop): Check on final fields occurs only when a decl exits. (patch_return): Take constructors into account. (patch_conditional_expr): New function. * typeck.c (build_java_signature): Removed unnecessary empty line. This patch implements the conditional operator, fixes the super invokation mode, implements most of what is required for constructors and changes the way source files are handled by the front-end. From-SVN: r23403
* class.c (is_compiled_class): New local variable seen_in_zip.Alexandre Petit-Bianco1998-10-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tue Oct 20 09:15:38 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * class.c (is_compiled_class): New local variable seen_in_zip. Identify classes found in currently compiled source file(s). * decl.c (complete_start_java_method): Fixed typo. * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P, HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros. (CLASS_P): Moved around. (java_parse_abort_on_error): Macro moved from jcf-parse.c * jcf-parse.c (java_parse_abort_on_error): Macro moved to java-parse.h (jcf_parse_source): Changed leading comment. Removed unnecessary fclose and CLASS_FROM_SOURCE_P marking. (parse_source_file): New local variables remember_for_generation and filename. Mark parsed file name identifier node. Removed block executed when parse_only was null. Set remember_for_generation. Use it as an argument to java_pop_parser_context. (yyparse): New local variables several_files, list, next node and current_file_list. Split ampersand separated file names into current_file_list. Iterate through the list and parse accordingly. * parse.h (java_pop_parser_context): New function prototype. * parse.y (ctxp_for_generation): New static global variable. (java_pop_parser_context): New argument generate. Link popped ctxp to ctxp_for_generation list accordingly. (java_complete_expand_methods): Fixed indentation. (java_expand_classes): New function. Add support for the use of `&' as a file separator on the jc1 command line. From-SVN: r23201
* lex.c (setjmp.h): No longer included.Alexandre Petit-Bianco1998-10-161-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fri Oct 16 10:59:01 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * lex.c (setjmp.h): No longer included. * lex.h (setjmp.h): Included. * parse.h (SET_TYPE_FOR_RESOLUTION): New macro. (duplicate_declaration_error_p): Renamed from duplicate_declaration_error. (build_array_from_name): New function prototype. * parse.y (setjmp.h): No longer included. (variable_declarator_id): Define action. (build_array_from_name): New function. (duplicate_declaration_error_p): Renamed from duplicate_declaration_error. Fixed leading comment. (register_fields): Main `for' loop reorganized. Uses SET_TYPE_FOR_RESOLUTION and build_array_from_name. (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call build_array_from_name. (resolve_class): Set CLASS_LOADED_P on newly build array dimension types. (read_import_dir): Don't try to skip `.' and `..'. (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and build_array_from_name. Main `for' loop reorganized. (resolve_qualified_expression_name): When building access to a field, use the type where the field was found, not its own type. (maybe_access_field): Use field DECL_CONTEXT if the type where the field was found is null. (qualify_ambiguous_name): Sweep through all successive array dimensions. Implements the alternate form `T a[]' of array declarations. Fixes a bug when building access to certain fields. Fixed a compilation warning when lex.h is included from somewhere else than parse.y From-SVN: r23142
* java-tree.h (pop_labeled_block, [...]): New function prototypes.Alexandre Petit-Bianco1998-10-141-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wed Oct 14 18:21:29 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * java-tree.h (pop_labeled_block, lang_printable_name, maybe_add_interface, set_super_info, get_access_flags_from_decl, interface_of_p, inherits_from_p, fix_classpath, complete_start_java_method, emit_handlers, init_outgoing_cpool, make_class_data, register_class, alloc_name_constant): New function prototypes. * lang.c (lang_decode_option): Set argc argument unused. Fixed indentation. Added cast to remove warning. (lang_printable_name): Set v argument unused. (lang_print_error): Added argument to lang_printable_name call. (java_dummy_print, print_lang_decl, print_lang_type, print_lang_identifier, lang_print_xnode): All argument marked unused. * lex.c (java_unget_unicode): Removed unnecessary argument. (java_allocate_new_line): Unused local variable is gone. (java_read_char): Added parenthesis in expressions to remove warnings. Added final return statement. (java_read_unicode): Added parenthesis in expression to remove warning. (java_parse_end_comment): Fixed java_unget_unicode invocation. (java_parse_escape_sequence): Likewise. (java_lex): Unused local variables are gone. Fixed java_unget_unicode invocation. * lex.h (set_float_handler): Prototype added when JC1_LITE not defined. * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed lang_printable_name invocation in macro. (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise. (duplicate_declaration_error): Suppressed unused argument in prototype. (identical_subpath_p): Function declaration is gone. (patch_invoke): Suppressed unused argument in prototype. (patch_cast, build_labeled_block, check_thrown_exceptions): Likewise. * parse.y (setjmp.h): Included (toplev.h): Likewise. (field_declaration:): Suppressed unused local (label_decl:): Fixed build_labeled_block invocation. (java_pop_parser_context): Put extra parenthesis around assignment in if. (yyerror): Suppressed unused local variables. (variable_redefinition_error): Fixed lang_printable_name invocation. (create_interface): Suppressed unused local variables. (create_class): Likewise. (duplicate_declaration_error): Suppressed unused argument. Fixed lang_printable_name invocation. (register_fields): Suppressed unused local variable. Fixed duplicate_declaration_error invocation. (method_header): Suppressed unused local variable. (method_declarator, parser_check_super): Likewise. (java_complete_class): Suppressed unused local variable. Fixed fatal error message. (complete_class_report_errors): Added default: in switch. (java_check_regular_methods): Fixed lang_printable_name invocations. (check_throws_clauses): Likewise. (java_check_abstract_methods): Suppressed unused local variable. Fixed lang_printable_name invocation. (read_import_entry): Added supplemental return statement. (read_import_dir): Suppressed unused local variables. (check_pkg_class_access, declare_local_variables): Likewise. (source_start_java_method): Suppressed unused extern variable declarations (expand_start_java_method): Suppressed unused extern and local variable declarations. (java_complete_expand_methods): Likewise. (java_complete_expand_method): Suppressed unused local variables. (make_qualified_name): Likewise. (resolve_qualified_expression_name): Added default: in switch. Fixed lang_printable_name invocation. (class_instance_creation_expression): Added parenthesis around expressions. (patch_method_invocation_stmt): Fixed lang_printable_name and patch_invoke invocations. (check_for_static_method_reference): Fixed lang_printable_name invocation. (patch_invoke): Suppressed unused arguments and local variables. (lookup_method_invoke): Suppressed unused local variables. (qualify_ambiguous_name): Added default: in switch. (identical_subpath_p): Function removed. (patch_assignment): Suppressed unused local variables. Suppressed unnecessary if statement. Fixed lang_printable_name invocations. (try_builtin_assignconv): Fixed lang_printable_name invocations. (valid_ref_assignconv_cast_p): Parenthesis around expression. Suppressed unused local variables. (build_binop): Suppressed unused local variables. fixed lang_printable_name invocations. (string_constant_concatenation): Suppressed unused local variables. (patch_unaryop): Fixed lang_printable_name invocation. (patch_cast): Suppressed unnecessary argument. Fixed lang_printable_name invocation. (patch_array_ref): Fixed lang_printable_name invocation. (patch_newarray, patch_return, patch_if_else_statement): Likewise. (build_labeled_block): Suppressed unused argument. (generate_labeled_block): Fixed build_labeled_block invocation. (build_loop_body): Suppressed unused local variables. (patch_loop_statement): Likewise. (patch_exit): Fixed lang_printable_name invocation. (patch_switch_statement): Likewise. (case_identity): First argument marked unused. (patch_try_statement): Fixed lang_printable_name invocations. (patch_synchronized_statement, patch_throw_statement): Likewise. (check_thrown_exceptions): Fixed check_thrown_exceptions and lang_printable_name invocations. (check_thrown_exceptions_do): Suppressed unused argument. Suppresses warnings during the compilation of parse.y (including lex.c) and lang.c From-SVN: r23090
* decl.c (runtime_exception_type_node, [...]): New global variables.Alexandre Petit-Bianco1998-10-141-1/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tue Oct 13 03:50:28 1998 Alexandre Petit-Bianco <apbianco@cygnus.com> * decl.c (runtime_exception_type_node, error_exception_type_node): New global variables. (init_decl_processing): Initialized. * expr.c (java_lang_expand_expr): Set caught exception type to null if catch handler argument doesn't exit. * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific tree codes. * java-tree.h (runtime_exception_type_node, error_exception_type_node): Global variables declared. (DECL_FUNCTION_THROWS): New macro. (DECL_FUNCTION_BODY): Modified comment. (DECL_SPECIFIC_COUNT): Likewise. (struct lang_decl): New field throws_list. (IS_UNCHECKED_EXPRESSION_P): New macro. * lex.c (java_lex): Generate location information for THROW_TK. * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P, EXCEPTIONS_P): New macros. (enum jdep_code): New value JDEP_EXCEPTION. (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT, BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR, PATCH_METHOD_RETURN_ERROR): New macros. (patch_method_invocation_stmt): Added new argument to prototype. (patch_synchronized_statement, patch_throw_statement, check_thrown_exceptions, check_thrown_exceptions_do, purge_unchecked_exceptions, check_throws_clauses): New function prototypes. * parse.y Fixed typo in keyword section. (throw:): Rule tagged <node>. (THROW_TK): Keyword tagged <operator>. (method_header:): Last argument to call to method_header passed from throws: rule. (throws:, class_type_list:, throw_statement:, synchronized_statement:, synchronized:): Defined actions. (method_header): New local variable current. Register exceptions from throws clause. (java_complete_tree): Complete and verify exceptions from throws clause. (complete_class_report_errors): Error message on exceptions not found (java_check_regular_methods): Fixed typo. Shortcut on private overriding methods. Changed error message on method redefinition. Check for throws clause compatibility. (check_throws_clauses): New function. (java_check_abstract_methods): Use DECL_NAME for wfl or current method. Changed error message on method redefinition. (currently_caught_type_list): New static variable. (java_complete_expand_methods): Purge unchecked exceptions from throws clause list. Call PUSH_EXCEPTIONS before walk and POP_EXCEPTIONS after. (resolve_qualified_expression_name): Pass new argument as NULL to patch_method_invocation_stmt. (patch_method_invocation_stmt): New argument ref_decl. Invoke PATCH_METHOD_RETURN_ERROR when returning with error. Reverse argument list when appropriate. Use new argument if non null to store selected method decl. (patch_invoke): Convert if necessary args of builtin types before forming CALL_EXPR. Argument list no longer reversed here. (invocation_mode): Treat final methods as static methods. (java_complete_tree): New cases for THROW_EXPR: and SYNCHRONIZED_EXPR:. Check thrown exceptions when completing function call. (complete_function_arguments): No more RECORD_TYPE conversion. Function parameter nodes no longer saved. (valid_ref_assignconv_cast_p): Avoid handling null type. (patch_binop): Fixed null constant reference handling. (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and BUILD_THROW macros. (patch_try_statement): Fixed comments. Record caught types in list, push the list, expand try block and pop the list. (patch_synchronized_statement, patch_throw_statement, check_thrown_exceptions, check_thrown_exceptions_do, purge_unchecked_exceptions): New functions. * typeck.c (lookup_argument_method): Allow WFL in place of method DECL_NAME during method definition check Implements the `synchronized' statement, the `throw' statements and the `throws' clause. Fixes method invocation bugs. From-SVN: r23087
* Per Bothner1998-10-121-22/+60
| | | | | | Merge from Cygnus internal source tree. From-SVN: r23025
* Initial revisionAnthony Green1998-09-061-0/+599
From-SVN: r22299