diff options
author | Damien George <damien.p.george@gmail.com> | 2017-03-27 11:29:11 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-03-27 11:29:11 +1100 |
commit | 734775524e14a8ae3997933afba64a4ac6a3cd47 (patch) | |
tree | c6a73a9bf62f6788992727fb5e2e2fd493327fc9 /tests/basics/class_super_closure.py | |
parent | 40c1272e5516b8d847118c06c7d222410075fa09 (diff) | |
download | micropython-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.py | 18 |
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()) |