Commit 5bf8aebc by Ranjit Mathew Committed by Ranjit Mathew

re PR java/19277 (allows array.length++ although it is final)

        PR java/19277
        * check-init.c (check_init): Take care of references that do not
        have an explicit final variable declaration (e.g. array length
        access) for pre/post in/de-crement operators.

From-SVN: r93144
parent 3e636396
2005-01-10 Ranjit Mathew <rmathew@hotmail.com>
PR java/19277
* check-init.c (check_init): Take care of references that do not
have an explicit final variable declaration (e.g. array length
access) for pre/post in/de-crement operators.
2005-01-08 Mark Wielaard <mark@klomp.org> 2005-01-08 Mark Wielaard <mark@klomp.org>
* parse.y (process_imports): Allocate (and free) original_name only * parse.y (process_imports): Allocate (and free) original_name only
......
/* Code to test for "definitive [un]assignment". /* Code to test for "definitive [un]assignment".
Copyright (C) 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation,
Inc.
This file is part of GCC. This file is part of GCC.
...@@ -832,7 +833,14 @@ check_init (tree exp, words before) ...@@ -832,7 +833,14 @@ check_init (tree exp, words before)
case POSTINCREMENT_EXPR: case POSTINCREMENT_EXPR:
tmp = get_variable_decl (TREE_OPERAND (exp, 0)); tmp = get_variable_decl (TREE_OPERAND (exp, 0));
if (tmp != NULL_TREE && DECL_FINAL (tmp)) if (tmp != NULL_TREE && DECL_FINAL (tmp))
final_assign_error (DECL_NAME (tmp)); final_assign_error (DECL_NAME (tmp));
else if (TREE_CODE (tmp = TREE_OPERAND (exp, 0)) == COMPONENT_REF)
{
/* Take care of array length accesses too. */
tree decl = TREE_OPERAND (tmp, 1);
if (DECL_FINAL (decl))
final_assign_error (DECL_NAME (decl));
}
/* Avoid needless recursion. */ /* Avoid needless recursion. */
exp = TREE_OPERAND (exp, 0); exp = TREE_OPERAND (exp, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment