re PR java/4715 (Tree check failure in check_inner_circular_reference)

2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

	Fix for PR java/4715:
	* jcf-parse.c (parse_source_file_3): New function.
	(read_class): Call it.
	(java_parse_file): Likewise.

(http://gcc.gnu.org/ml/gcc-patches/2002-03/msg01917.html)

From-SVN: r51535
This commit is contained in:
Alexandre Petit-Bianco 2002-03-28 16:14:00 -08:00 committed by Alexandre Petit-Bianco
parent 3830f7ab9a
commit 1df75b77ed
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2002-03-28 Alexandre Petit-Bianco <apbianco@redhat.com>
Fix for PR java/4715:
* jcf-parse.c (parse_source_file_3): New function.
(read_class): Call it.
(java_parse_file): Likewise.
2002-03-28 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* parse.y (resolve_package): Initialize "decl".

View File

@ -96,6 +96,7 @@ static void parse_zip_file_entries PARAMS ((void));
static void process_zip_dir PARAMS ((FILE *));
static void parse_source_file_1 PARAMS ((tree, FILE *));
static void parse_source_file_2 PARAMS ((void));
static void parse_source_file_3 PARAMS ((void));
static void parse_class_file PARAMS ((void));
static void set_source_filename PARAMS ((JCF *, int));
static void ggc_mark_jcf PARAMS ((void**));
@ -565,6 +566,7 @@ read_class (name)
fatal_io_error ("can't reopen %s", input_filename);
parse_source_file_1 (file, finput);
parse_source_file_2 ();
parse_source_file_3 ();
if (fclose (finput))
fatal_io_error ("can't close %s", input_filename);
}
@ -898,6 +900,12 @@ parse_source_file_2 ()
int save_error_count = java_error_count;
java_complete_class (); /* Parse unsatisfied class decl. */
java_parse_abort_on_error ();
}
static void
parse_source_file_3 ()
{
int save_error_count = java_error_count;
java_check_circular_reference (); /* Check on circular references */
java_parse_abort_on_error ();
java_fix_constructors (); /* Fix the constructors */
@ -1147,6 +1155,13 @@ yyparse ()
input_filename = ctxp->filename;
parse_source_file_2 ();
}
for (ctxp = ctxp_for_generation; ctxp; ctxp = ctxp->next)
{
input_filename = ctxp->filename;
parse_source_file_3 ();
}
for (node = current_file_list; node; node = TREE_CHAIN (node))
{
input_filename = IDENTIFIER_POINTER (TREE_VALUE (node));