mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 19:31:06 +08:00
re GNATS gcj/94 (compiler allows assignment to interface constants)
2000-02-22 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (check_final_assignment): Extended to process COMPOUND_EXPR. (patch_assignment): Have check_final_assignment called only once. (This fixes the Java PR #94: http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00125.html) From-SVN: r32396
This commit is contained in:
parent
15f1a7952b
commit
6632dcdd41
@ -1,3 +1,9 @@
|
||||
2000-03-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* parse.y (check_final_assignment): Extended to process
|
||||
COMPOUND_EXPR.
|
||||
(patch_assignment): Have check_final_assignment called only once.
|
||||
|
||||
2000-03-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
|
||||
|
||||
* java-tree.h (IS_INIT_CHECKED): New flag.
|
||||
|
@ -11771,6 +11771,10 @@ static int
|
||||
check_final_assignment (lvalue, wfl)
|
||||
tree lvalue, wfl;
|
||||
{
|
||||
if (TREE_CODE (lvalue) == COMPOUND_EXPR
|
||||
&& JDECL_P (TREE_OPERAND (lvalue, 1)))
|
||||
lvalue = TREE_OPERAND (lvalue, 1);
|
||||
|
||||
if (JDECL_P (lvalue)
|
||||
&& FIELD_FINAL (lvalue) && !IS_CLINIT (current_function_decl))
|
||||
{
|
||||
@ -11850,7 +11854,7 @@ patch_assignment (node, wfl_op1, wfl_op2)
|
||||
else if (TREE_CODE (wfl_op1) == EXPR_WITH_FILE_LOCATION
|
||||
&& resolve_expression_name (wfl_op1, &llvalue))
|
||||
{
|
||||
if (check_final_assignment (llvalue, wfl_op1))
|
||||
if (!error_found && check_final_assignment (llvalue, wfl_op1))
|
||||
{
|
||||
/* What we should do instead is resetting the all the flags
|
||||
previously set, exchange lvalue for llvalue and continue. */
|
||||
@ -13516,9 +13520,11 @@ patch_newarray (node)
|
||||
for (cdim = dims; cdim; cdim = TREE_CHAIN (cdim))
|
||||
{
|
||||
type = array_type;
|
||||
array_type = build_java_array_type (type,
|
||||
TREE_CODE (cdim) == INTEGER_CST ?
|
||||
TREE_INT_CST_LOW (cdim) : -1);
|
||||
array_type
|
||||
= build_java_array_type (type,
|
||||
TREE_CODE (cdim) == INTEGER_CST
|
||||
? (HOST_WIDE_INT) TREE_INT_CST_LOW (cdim)
|
||||
: -1);
|
||||
array_type = promote_type (array_type);
|
||||
}
|
||||
dims = nreverse (dims);
|
||||
|
@ -9081,6 +9081,10 @@ static int
|
||||
check_final_assignment (lvalue, wfl)
|
||||
tree lvalue, wfl;
|
||||
{
|
||||
if (TREE_CODE (lvalue) == COMPOUND_EXPR
|
||||
&& JDECL_P (TREE_OPERAND (lvalue, 1)))
|
||||
lvalue = TREE_OPERAND (lvalue, 1);
|
||||
|
||||
if (JDECL_P (lvalue)
|
||||
&& FIELD_FINAL (lvalue) && !IS_CLINIT (current_function_decl))
|
||||
{
|
||||
@ -9160,7 +9164,7 @@ patch_assignment (node, wfl_op1, wfl_op2)
|
||||
else if (TREE_CODE (wfl_op1) == EXPR_WITH_FILE_LOCATION
|
||||
&& resolve_expression_name (wfl_op1, &llvalue))
|
||||
{
|
||||
if (check_final_assignment (llvalue, wfl_op1))
|
||||
if (!error_found && check_final_assignment (llvalue, wfl_op1))
|
||||
{
|
||||
/* What we should do instead is resetting the all the flags
|
||||
previously set, exchange lvalue for llvalue and continue. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user