summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/class_super_closure.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-03-27 11:29:11 +1100
committerDamien George <damien.p.george@gmail.com>2017-03-27 11:29:11 +1100
commit734775524e14a8ae3997933afba64a4ac6a3cd47 (patch)
treec6a73a9bf62f6788992727fb5e2e2fd493327fc9 /tests/basics/class_super_closure.py
parent40c1272e5516b8d847118c06c7d222410075fa09 (diff)
downloadmicropython-734775524e14a8ae3997933afba64a4ac6a3cd47.tar.gz
micropython-734775524e14a8ae3997933afba64a4ac6a3cd47.zip
tests/basics: Add test for super() when self is closed over.
Diffstat (limited to 'tests/basics/class_super_closure.py')
-rw-r--r--tests/basics/class_super_closure.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/basics/class_super_closure.py b/tests/basics/class_super_closure.py
new file mode 100644
index 0000000000..41acae90de
--- /dev/null
+++ b/tests/basics/class_super_closure.py
@@ -0,0 +1,18 @@
+# test that no-arg super() works when self is closed over
+
+class A:
+ def __init__(self):
+ self.val = 4
+ def foo(self):
+ # we access a member of self to check that self is correct
+ return list(range(self.val))
+class B(A):
+ def foo(self):
+ # self is closed over because it's referenced in the list comprehension
+ # and then super() must detect this and load from the closure cell
+ return [self.bar(i) for i in super().foo()]
+ def bar(self, x):
+ return 2 * x
+
+print(A().foo())
+print(B().foo())