diff options
author | Damien George <damien.p.george@gmail.com> | 2017-10-03 17:56:27 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-10-03 17:56:27 +1100 |
commit | 2ac1364688cd3ee313661e82a336663551986fc8 (patch) | |
tree | 4e69bc7e8d09cb3e4456275e7eba8fcffcd4de0c /tests | |
parent | 01978648fdc317c13b17ba186c82df4fb8a5cbac (diff) | |
download | micropython-2ac1364688cd3ee313661e82a336663551986fc8.tar.gz micropython-2ac1364688cd3ee313661e82a336663551986fc8.zip |
py/objset: Check that RHS of a binary op is a set/frozenset.
CPython docs explicitly state that the RHS of a set/frozenset binary op
must be a set to prevent user errors. It also preserves commutativity of
the ops, eg: "abc" & set() is a TypeError, and so should be set() & "abc".
This change actually decreases unix (x64) code by 160 bytes; it increases
stm32 by 4 bytes and esp8266 by 28 bytes (but previous patch already
introduced a much large saving).
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basics/set_binop.py | 12 | ||||
-rw-r--r-- | tests/misc/non_compliant.py | 12 | ||||
-rw-r--r-- | tests/misc/non_compliant.py.exp | 2 |
3 files changed, 12 insertions, 14 deletions
diff --git a/tests/basics/set_binop.py b/tests/basics/set_binop.py index 7848920b6a..bc76533b1f 100644 --- a/tests/basics/set_binop.py +++ b/tests/basics/set_binop.py @@ -47,6 +47,18 @@ s1 = s2 = set('abc') s1 -= set('ad') print(s1 is s2, len(s1)) +# RHS must be a set +try: + print(set('12') >= '1') +except TypeError: + print('TypeError') + +# RHS must be a set +try: + print(set('12') <= '123') +except TypeError: + print('TypeError') + # unsupported operator try: set('abc') * 2 diff --git a/tests/misc/non_compliant.py b/tests/misc/non_compliant.py index b4c90e9fcf..152633c3b7 100644 --- a/tests/misc/non_compliant.py +++ b/tests/misc/non_compliant.py @@ -39,18 +39,6 @@ try: except NotImplementedError: print('NotImplementedError') -# should raise type error -try: - print(set('12') >= '1') -except TypeError: - print('TypeError') - -# should raise type error -try: - print(set('12') <= '123') -except TypeError: - print('TypeError') - # uPy raises TypeError, shold be ValueError try: '%c' % b'\x01\x02' diff --git a/tests/misc/non_compliant.py.exp b/tests/misc/non_compliant.py.exp index ba5590acc0..9c157fd5bd 100644 --- a/tests/misc/non_compliant.py.exp +++ b/tests/misc/non_compliant.py.exp @@ -3,8 +3,6 @@ AttributeError TypeError NotImplementedError NotImplementedError -True -True TypeError, ValueError NotImplementedError NotImplementedError |