diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-09 15:26:46 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-09 15:26:46 +0100 |
commit | 2bf7c092225645d8c5b15e536afdce39e3593e42 (patch) | |
tree | e257514a3008411367ea5e62eaea4b101ccac257 /tests | |
parent | 11d8cd54c992eee55f27d3779738626bdc095c03 (diff) | |
download | micropython-2bf7c092225645d8c5b15e536afdce39e3593e42.tar.gz micropython-2bf7c092225645d8c5b15e536afdce39e3593e42.zip |
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')
-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 0000000000..1e7c0e41f4 --- /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 0000000000..05aa98b424 --- /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() |