aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorJeff Sturm <jsturm@one-point.com>2001-07-03 23:44:07 +0000
committerJeff Sturm <jsturm@gcc.gnu.org>2001-07-03 23:44:07 +0000
commit9be7529dbb9f3d2a9dee444230f65597a00780ff (patch)
tree349600e331227c75b50d39540f2068ebdcd7d248 /gcc/java/parse.y
parent1abd48ad23759d5b372e0e540f02247e35246bae (diff)
downloadgcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.zip
gcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.tar.gz
gcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.tar.bz2
parse.y (fix_constructors): Test if a CALL_EXPR invokes `this'.
* java/parse.y (fix_constructors): Test if a CALL_EXPR invokes `this'. If so, don't build instance initializers. From-SVN: r43743
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a56c8fc..ac062ad 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -8558,6 +8558,7 @@ fix_constructors (mdecl)
else
{
int found = 0;
+ int invokes_this = 0;
tree found_call = NULL_TREE;
tree main_block = BLOCK_EXPR_BODY (body);
tree ii; /* Instance Initializer */
@@ -8567,6 +8568,8 @@ fix_constructors (mdecl)
{
case CALL_EXPR:
found = CALL_EXPLICIT_CONSTRUCTOR_P (body);
+ if (CALL_THIS_CONSTRUCTOR_P (body))
+ invokes_this = 1;
body = NULL_TREE;
break;
case COMPOUND_EXPR:
@@ -8601,7 +8604,7 @@ fix_constructors (mdecl)
}
/* Insert the instance initializer block right after. */
- if ((ii = build_instance_initializer (mdecl)))
+ if (!invokes_this && (ii = build_instance_initializer (mdecl)))
compound = add_stmt_to_compound (compound, NULL_TREE, ii);
/* Fix the constructor main block if we're adding extra stmts */