Fix local const variables can be modified via loops

This commit is contained in:
AmazingPP 2022-07-18 20:31:21 +08:00
parent 1d2c12e980
commit 3312e19d5b

View file

@ -1911,6 +1911,9 @@ for_head:
{ {
if ( loop_var->IsGlobal() ) if ( loop_var->IsGlobal() )
loop_var->Error("global variable used in for loop"); loop_var->Error("global variable used in for loop");
if ( loop_var->IsConst() )
loop_var->Error("constant used in for loop");
} }
else else
@ -1945,6 +1948,9 @@ for_head:
{ {
if ( key_var->IsGlobal() ) if ( key_var->IsGlobal() )
key_var->Error("global variable used in for loop"); key_var->Error("global variable used in for loop");
if ( key_var->IsConst() )
key_var->Error("constant used in for loop");
} }
else else
key_var = install_ID($3, module, false, false); key_var = install_ID($3, module, false, false);
@ -1953,6 +1959,9 @@ for_head:
{ {
if ( val_var->IsGlobal() ) if ( val_var->IsGlobal() )
val_var->Error("global variable used in for loop"); val_var->Error("global variable used in for loop");
if ( val_var->IsConst() )
val_var->Error("constant used in for loop");
} }
else else
val_var = install_ID($5, module, false, false); val_var = install_ID($5, module, false, false);
@ -1975,6 +1984,9 @@ for_head:
{ {
if ( val_var->IsGlobal() ) if ( val_var->IsGlobal() )
val_var->Error("global variable used in for loop"); val_var->Error("global variable used in for loop");
if ( val_var->IsConst() )
val_var->Error("constant used in for loop");
} }
else else
val_var = install_ID($7, module, false, false); val_var = install_ID($7, module, false, false);
@ -2004,6 +2016,9 @@ local_id:
{ {
if ( $$->IsGlobal() ) if ( $$->IsGlobal() )
$$->Error("already a global identifier"); $$->Error("already a global identifier");
if ( $$->IsConst() )
$$->Error("already a const identifier");
delete [] $1; delete [] $1;
} }