From d4dffb52fe78e5b232240d4ff650322df82d8eaf Mon Sep 17 00:00:00 2001 From: apbianco Date: Mon, 7 May 2001 19:48:53 +0000 Subject: [PATCH] 2001-05-07 Alexandre Petit-Bianco * parse.y (fix_constructors): Removed unecessary assignment to local. Moved assignment to `this$', fixed comments and indentation. (build_wfl_wrap): Fixed indentation. Fixes PR java/2598, java/2579 and java/2658. (http://gcc.gnu.org/ml/gcc-patches/2001-05/msg00412.html ) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-3_0-branch@41903 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 8 ++++++++ gcc/java/parse.y | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index bdcdb1ef200..9c2bce44777 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,11 @@ +2001-05-07 Alexandre Petit-Bianco + + * parse.y (fix_constructors): Removed unecessary assignment to + local. Moved assignment to `this$', fixed comments and + indentation. + (build_wfl_wrap): Fixed indentation. + Fixes PR java/2598, java/2579 and java/2658. + 2001-05-03 Mo DeJong * lex.c (java_new_lexer): Call iconv_close on temp handle used to diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 56217765113..bf4249c6f6c 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -8514,7 +8514,7 @@ fix_constructors (mdecl) /* We don't generate a super constructor invocation if we're compiling java.lang.Object. build_super_invocation takes care of that. */ - compound = java_method_add_stmt (mdecl, build_super_invocation (mdecl)); + java_method_add_stmt (mdecl, build_super_invocation (mdecl)); /* Insert the instance initializer block right here, after the super invocation. */ @@ -8550,13 +8550,17 @@ fix_constructors (mdecl) found = 0; body = NULL_TREE; } + + /* Generate the assignment to this$, if necessary */ + if ((thisn_assign = build_thisn_assign ())) + compound = add_stmt_to_compound (compound, NULL_TREE, thisn_assign); + /* The constructor is missing an invocation of super() */ if (!found) compound = add_stmt_to_compound (compound, NULL_TREE, build_super_invocation (mdecl)); - - /* Explicit super() invokation should be kept as the first - statement, we move it. */ + /* Explicit super() invokation should take place before the + instance initializer blocks. */ else { compound = add_stmt_to_compound (compound, NULL_TREE, @@ -8564,10 +8568,6 @@ fix_constructors (mdecl) TREE_OPERAND (found_call, 0) = empty_stmt_node; } - /* Generate the assignment to this$, if necessary */ - if ((thisn_assign = build_thisn_assign ())) - compound = add_stmt_to_compound (compound, NULL_TREE, thisn_assign); - /* Insert the instance initializer block right after. */ if ((ii = build_instance_initializer (mdecl))) compound = add_stmt_to_compound (compound, NULL_TREE, ii); @@ -10122,7 +10122,7 @@ patch_method_invocation (patch, primary, where, from_super, /* Prepare to pass hidden parameters to finit$, if any. */ finit_parms = build_alias_initializer_parameter_list (AIPL_FUNCTION_FINIT_INVOCATION, current_class, NULL_TREE, NULL); - + finit_call = build_method_invocation (build_wfl_node (finit_identifier_node), finit_parms); @@ -11997,6 +11997,7 @@ maybe_absorb_scoping_blocks () are completing them. */ /* Wrap a non WFL node around a WFL. */ + static tree build_wfl_wrap (node, location) tree node; @@ -12017,7 +12018,6 @@ build_wfl_wrap (node, location) return wfl; } - /* Build a super() constructor invocation. Returns empty_stmt_node if we're currently dealing with the class java.lang.Object. */ -- 2.11.4.GIT