re PR java/2598 (Runtime crash regression accessing field from enclosing class from inner class)
2001-05-07 Alexandre Petit-Bianco <apbianco@redhat.com> * parse.y (fix_constructors): Removed unecessary assignment to local. Moved assignment to `this$<n>', 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 ) From-SVN: r41905
This commit is contained in:
parent
5c8cfcd63d
commit
41ee087715
@ -1,3 +1,11 @@
|
||||
2001-05-07 Alexandre Petit-Bianco <apbianco@redhat.com>
|
||||
|
||||
* parse.y (fix_constructors): Removed unecessary assignment to
|
||||
local. Moved assignment to `this$<n>', fixed comments and
|
||||
indentation.
|
||||
(build_wfl_wrap): Fixed indentation.
|
||||
Fixes PR java/2598, java/2579 and java/2658.
|
||||
|
||||
2001-05-03 Mo DeJong <mdejong@redhat.com>
|
||||
|
||||
* lex.c (java_new_lexer): Call iconv_close on temp handle used to
|
||||
|
@ -8500,7 +8500,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. */
|
||||
@ -8536,13 +8536,17 @@ fix_constructors (mdecl)
|
||||
found = 0;
|
||||
body = NULL_TREE;
|
||||
}
|
||||
|
||||
/* Generate the assignment to this$<n>, 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,
|
||||
@ -8550,10 +8554,6 @@ fix_constructors (mdecl)
|
||||
TREE_OPERAND (found_call, 0) = empty_stmt_node;
|
||||
}
|
||||
|
||||
/* Generate the assignment to this$<n>, 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);
|
||||
@ -10110,7 +10110,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);
|
||||
@ -11973,6 +11973,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;
|
||||
@ -11993,7 +11994,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. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user