fix ++ for global names

This commit is contained in:
blueloveTH 2023-10-08 20:55:31 +08:00
parent e26f389182
commit 0caa14172d
2 changed files with 13 additions and 1 deletions

View File

@ -775,7 +775,10 @@ __EAT_DOTS_END:
case TK("++"):{ case TK("++"):{
consume(TK("@id")); consume(TK("@id"));
StrName name(prev().sv()); StrName name(prev().sv());
switch(name_scope()){ NameScope scope = name_scope();
bool is_global = ctx()->global_names.count(name.sv());
if(is_global) scope = NAME_GLOBAL;
switch(scope){
case NAME_LOCAL: case NAME_LOCAL:
ctx()->emit(OP_INC_FAST, ctx()->add_varname(name), prev().line); ctx()->emit(OP_INC_FAST, ctx()->add_varname(name), prev().line);
break; break;

View File

@ -70,3 +70,12 @@ try:
exit(1) exit(1)
except UnboundLocalError: except UnboundLocalError:
pass pass
g = 1
def f():
global g
++g
f(); f()
assert g == 3