diff options
| author | Damien George | 2014-04-09 15:26:46 +0100 |
|---|---|---|
| committer | Damien George | 2014-04-09 15:26:46 +0100 |
| commit | 2bf7c092225645d8c5b15e536afdce39e3593e42 (patch) | |
| tree | e257514a3008411367ea5e62eaea4b101ccac257 /tests/basics | |
| parent | 11d8cd54c992eee55f27d3779738626bdc095c03 (diff) | |
py: Properly implement deletion of locals and derefs, and detect errors.
Needed to reinstate 2 delete opcodes, to specifically check that a local
is not deleted twice.
Diffstat (limited to 'tests/basics')
| -rw-r--r-- | tests/basics/del-deref.py | 22 | ||||
| -rw-r--r-- | tests/basics/del-local.py | 25 |
2 files changed, 47 insertions, 0 deletions
diff --git a/tests/basics/del-deref.py b/tests/basics/del-deref.py new file mode 100644 index 000000000..1e7c0e41f --- /dev/null +++ b/tests/basics/del-deref.py @@ -0,0 +1,22 @@ +def f(): + x = 1 + y = 2 + def g(): + nonlocal x + print(y) + try: + print(x) + except NameError: + print("NameError") + def h(): + nonlocal x + print(y) + try: + del x + except NameError: + print("NameError") + print(x, y) + del x + g() + h() +f() diff --git a/tests/basics/del-local.py b/tests/basics/del-local.py new file mode 100644 index 000000000..05aa98b42 --- /dev/null +++ b/tests/basics/del-local.py @@ -0,0 +1,25 @@ +# delete local then try to reference it +def f(): + x = 1 + y = 2 + print(x, y) + del x + print(y) + try: + print(x) + except NameError: + print("NameError"); +f() + +# delete local then try to delete it again +def g(): + x = 3 + y = 4 + print(x, y) + del x + print(y) + try: + del x + except NameError: + print("NameError"); +g() |
