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>
* parse.y (process_imports): Allocate (and free) original_name only
......
/* 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.
......@@ -832,7 +833,14 @@ check_init (tree exp, words before)
case POSTINCREMENT_EXPR:
tmp = get_variable_decl (TREE_OPERAND (exp, 0));
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. */
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