diff options
author | Alexandre Petit-Bianco <apbianco@cygnus.com> | 1998-11-19 01:54:44 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 1998-11-18 17:54:44 -0800 |
commit | c877974e79791c251316548175df8749ed657df9 (patch) | |
tree | 865a2a98275258f86565ef8f672d4b7845d11d54 /gcc/java/parse.h | |
parent | 423165659be7520d02a498334fab715718b4fab8 (diff) | |
download | gcc-c877974e79791c251316548175df8749ed657df9.zip gcc-c877974e79791c251316548175df8749ed657df9.tar.gz gcc-c877974e79791c251316548175df8749ed657df9.tar.bz2 |
class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
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
Diffstat (limited to 'gcc/java/parse.h')
-rw-r--r-- | gcc/java/parse.h | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/gcc/java/parse.h b/gcc/java/parse.h index dfa0560..b2b0644 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -122,11 +122,18 @@ extern tree stabilize_reference PROTO ((tree)); (s1 [0]=='S' ? "Supertype" : "supertype") : \ (s1 [0] > 'A' ? "Type" : "type"))) +#define GET_REAL_TYPE(TYPE) \ + (TREE_CODE (TYPE) == TREE_LIST ? TREE_PURPOSE (TYPE) : TYPE) + +#define GET_METHOD_NAME(METHOD) \ + (TREE_CODE (DECL_NAME (METHOD)) == EXPR_WITH_FILE_LOCATION ? \ + EXPR_WFL_NODE (DECL_NAME (METHOD)) : DECL_NAME (METHOD)) + /* Pedantic warning on obsolete modifiers. Note: when cl is NULL, flags was set artificially, such as for a interface method */ #define OBSOLETE_MODIFIER_WARNING(cl, flags, modifier, format, arg) \ { \ - if ((cl) && ((flags) & (modifier))) \ + if (flag_redundant && (cl) && ((flags) & (modifier))) \ parse_warning_context (cl, \ "Discouraged redundant use of `%s' modifier " \ "in declaration of " format, \ @@ -411,22 +418,31 @@ static jdeplist *reverse_jdep_list (); /* if TYPE can't be resolved, obtain something suitable for its resolution (TYPE is saved in SAVE before being changed). and set CHAIN to 1. Otherwise, type is set to something usable. CHAIN is - usually used to determine that a new DEP must be installed on TYPE. */ -#define SET_TYPE_FOR_RESOLUTION(TYPE, SAVE, CHAIN) \ - { \ - tree returned_type; \ - (CHAIN) = 0; \ - if (unresolved_type_p (type, &returned_type)) \ - { \ - if (returned_type) \ - (TYPE) = returned_type; \ - else \ - { \ - (SAVE) = (TYPE); \ - (TYPE) = obtain_incomplete_type (TYPE); \ - CHAIN = 1; \ - } \ - } \ + usually used to determine that a new DEP must be installed on TYPE. + Note that when compiling java.lang.Object, references to Object are + java.lang.Object. */ +#define SET_TYPE_FOR_RESOLUTION(TYPE, SAVE, CHAIN) \ + { \ + tree returned_type; \ + (CHAIN) = 0; \ + if (TREE_TYPE (ctxp->current_parsed_class) == object_type_node \ + && TREE_CODE (TYPE) == EXPR_WITH_FILE_LOCATION \ + && EXPR_WFL_NODE (TYPE) == unqualified_object_id_node) \ + (TYPE) = object_type_node; \ + else \ + { \ + if (unresolved_type_p (type, &returned_type)) \ + { \ + if (returned_type) \ + (TYPE) = returned_type; \ + else \ + { \ + (SAVE) = (TYPE); \ + (TYPE) = obtain_incomplete_type (TYPE); \ + CHAIN = 1; \ + } \ + } \ + } \ } /* Insert a DECL in the current block */ @@ -489,7 +505,8 @@ static jdeplist *reverse_jdep_list (); { \ (WHERE) = build (CALL_EXPR, int_type_node, \ build_address_of (soft_monitorenter_node), \ - build_tree_list (NULL_TREE, (ARG))); \ + build_tree_list (NULL_TREE, (ARG)), \ + NULL_TREE); \ TREE_SIDE_EFFECTS (WHERE) = 1; \ } @@ -497,7 +514,8 @@ static jdeplist *reverse_jdep_list (); { \ (WHERE) = build (CALL_EXPR, int_type_node, \ build_address_of (soft_monitorexit_node), \ - build_tree_list (NULL_TREE, (ARG))); \ + build_tree_list (NULL_TREE, (ARG)), \ + NULL_TREE); \ TREE_SIDE_EFFECTS (WHERE) = 1; \ } @@ -709,18 +727,18 @@ static tree try_reference_assignconv PROTO ((tree, tree)); static tree build_unresolved_array_type PROTO ((tree)); static tree build_array_from_name PROTO ((tree, tree, tree, tree *)); static tree build_array_ref PROTO ((int, tree, tree)); -static tree patch_array_ref PROTO ((tree, tree, tree)); +static tree patch_array_ref PROTO ((tree)); static tree make_qualified_name PROTO ((tree, tree, int)); static tree merge_qualified_name PROTO ((tree, tree)); static tree make_qualified_primary PROTO ((tree, tree, int)); -static int resolve_qualified_expression_name PROTO ((tree, tree *, tree *, tree *)); +static int resolve_qualified_expression_name PROTO ((tree, tree *, + tree *, tree *)); static void qualify_ambiguous_name PROTO ((tree)); static void maybe_generate_clinit PROTO ((void)); static tree resolve_field_access PROTO ((tree, tree *, tree *)); static tree build_newarray_node PROTO ((tree, tree, int)); static tree patch_newarray PROTO ((tree)); static tree resolve_type_during_patch PROTO ((tree)); -static int not_initialized_as_it_should_p PROTO ((tree)); static tree build_this PROTO ((int)); static tree build_return PROTO ((int, tree)); static tree patch_return PROTO ((tree)); @@ -791,6 +809,7 @@ tree java_method_add_stmt PROTO ((tree, tree)); char *java_get_line_col PROTO ((char *, int, int)); void java_expand_switch PROTO ((tree)); tree java_get_catch_block PROTO ((tree, int)); +int java_report_errors PROTO (()); #endif /* JC1_LITE */ /* Always in use, no matter what you compile */ |