diff options
author | Per Bothner <bothner@cygnus.com> | 1999-03-08 13:34:12 +0000 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 1999-03-08 05:34:12 -0800 |
commit | 30ca27b4751fd68cb31758d01f309b13144b1cc2 (patch) | |
tree | d51147db527f31da8d998c1a963c2cbb9027228f | |
parent | c0d87ff6f9eaecba3c1e1936cd52074385131a96 (diff) | |
download | gcc-30ca27b4751fd68cb31758d01f309b13144b1cc2.zip gcc-30ca27b4751fd68cb31758d01f309b13144b1cc2.tar.gz gcc-30ca27b4751fd68cb31758d01f309b13144b1cc2.tar.bz2 |
lex.c (java_parse_end_comment): Take extra parameter (next char).
�
* lex.c (java_parse_end_comment): Take extra parameter (next char).
* class.c (build_utf8_ref): Fix possible name class/ambiguity.
* class.c (layout_class_method): A static method in a base class
is never overridden, so treat it like it doesn't exist.
However, do complain about private non-static method overriding
public static method.
* parse.y: Don't set unused INITIALIZED_P flag.
* java-tree.h (INITIALIZED_P): Removed no-longer needed flag.
* parse.y (find_expr_with_wfl): Optimize tail-calls.
(build_array_from_name): Re-order &index[string] to &string[index].
* parse.y (java_complete_tree): Don't call patch_assignment if rhs is
error_mark (it might catch more errors, but it is more likely to lose).
From-SVN: r25641
-rw-r--r-- | gcc/java/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/java/class.c | 7 | ||||
-rw-r--r-- | gcc/java/java-tree.h | 5 | ||||
-rw-r--r-- | gcc/java/lex.c | 18 |
4 files changed, 33 insertions, 17 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index b33a387..db553f2 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,23 @@ +Fri Mar 5 15:17:29 1999 Per Bothner <bothner@cygnus.com> + + * lex.c (java_parse_end_comment): Take extra parameter (next char). + + * class.c (build_utf8_ref): Fix possible name class/ambiguity. + + * class.c (layout_class_method): A static method in a base class + is never overridden, so treat it like it doesn't exist. + However, do complain about private non-static method overriding + public static method. + + * parse.y: Don't set unused INITIALIZED_P flag. + * java-tree.h (INITIALIZED_P): Removed no-longer needed flag. + + * parse.y (find_expr_with_wfl): Optimize tail-calls. + (build_array_from_name): Re-order &index[string] to &string[index]. + + * parse.y (java_complete_tree): Don't call patch_assignment if rhs is + error_mark (it might catch more errors, but it is more likely to lose). + Sat Mar 6 11:17:16 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * Makefile.in (jcf-parse.o): Depend on $(PARSE_H). diff --git a/gcc/java/class.c b/gcc/java/class.c index d92d4c3..e4f4224 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -569,6 +569,8 @@ build_utf8_ref (name) /* Build a unique identifier based on buf. */ sprintf(buf, "_Utf%d", ++utf8_count); buf_ptr = &buf[strlen (buf)]; + if (name_len > 0 && name_ptr[0] >= '0' && name_ptr[0] <= '9') + *buf_ptr++ = '_'; while (--name_len >= 0) { unsigned char c = *name_ptr++; @@ -1627,11 +1629,10 @@ layout_class_method (this_class, super_class, method_decl, dtable_count) build_java_argument_signature (TREE_TYPE (method_decl)); tree super_method = lookup_argument_method (super_class, method_name, method_sig); - if (super_method != NULL_TREE) + if (super_method != NULL_TREE && ! METHOD_PRIVATE (super_method)) { DECL_VINDEX (method_decl) = DECL_VINDEX (super_method); - if (DECL_VINDEX (method_decl) == NULL_TREE && - ! TREE_PRIVATE (method_decl)) + if (DECL_VINDEX (method_decl) == NULL_TREE) error_with_decl (method_decl, "non-static method '%s' overrides static method"); #if 0 diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index b246306..62b69f4 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -90,7 +90,6 @@ struct JCF; 6: METHOD_TRANSIENT (in FUNCTION_DECL) LABEL_CHANGED (in LABEL_DECL) CLASS_SUPER (in TYPE_DECL, ACC_SUPER flag) - INITIALIZED_P (in FIELD_DECL, VAR_DECL, PARM_DECL) 7: DECL_CONSTRUCTOR_P (in FUNCTION_DECL). */ @@ -634,10 +633,6 @@ extern int encode_newarray_type PROTO ((tree)); #define FIELD_VOLATILE(DECL) DECL_LANG_FLAG_4 (DECL) #define FIELD_TRANSIENT(DECL) DECL_LANG_FLAG_5 (DECL) -/* Initialized flag on variable/field/parm decl */ - -#define INITIALIZED_P(DECL) DECL_LANG_FLAG_6 (DECL) - /* Access flags etc for a class (a TYPE_DECL): */ #define CLASS_PUBLIC(DECL) DECL_LANG_FLAG_1 (DECL) diff --git a/gcc/java/lex.c b/gcc/java/lex.c index be5c849..8c40d47 100644 --- a/gcc/java/lex.c +++ b/gcc/java/lex.c @@ -64,7 +64,7 @@ static void java_store_unicode PROTO ((struct java_line *, unicode_t, int)); static unicode_t java_parse_escape_sequence PROTO (()); static int java_letter_or_digit_p PROTO ((unicode_t)); static int java_parse_doc_section PROTO ((unicode_t)); -static void java_parse_end_comment PROTO (()); +static void java_parse_end_comment PROTO ((unicode_t)); static unicode_t java_get_unicode PROTO (()); static unicode_t java_read_unicode PROTO ((int, int *)); static void java_store_unicode PROTO ((struct java_line *, unicode_t, int)); @@ -366,13 +366,14 @@ java_lineterminator (c) return 0; } -/* Parse the end of a C style comment */ +/* Parse the end of a C style comment. + * C is the first character after the '/*'. */ static void -java_parse_end_comment () +java_parse_end_comment (c) + unicode_t c; { - unicode_t c; - for (c = java_get_unicode ();; c = java_get_unicode ()) + for ( ;; c = java_get_unicode ()) { switch (c) { @@ -559,8 +560,9 @@ java_lex (java_lval) switch (c = java_get_unicode ()) { case '/': - for (c = java_get_unicode ();;c = java_get_unicode ()) + for (;;) { + c = java_get_unicode (); if (c == UEOF) java_lex_error ("Comment not terminated at end of input", 0); if (c == '\n') /* ULT */ @@ -576,10 +578,8 @@ java_lex (java_lval) else if (java_parse_doc_section (c)) goto step1; } - else - java_unget_unicode (); - java_parse_end_comment (); + java_parse_end_comment (c); goto step1; break; default: |