diff options
author | Damien George <damien.p.george@gmail.com> | 2015-10-08 13:02:00 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-10-08 13:02:00 +0100 |
commit | 7e12a601b8e9d90e5a7498523a9023c8c47bc4ca (patch) | |
tree | 12f14c1241de3b889746cb12bbd142beb4aa2bb6 /tests/basics/int_constfolding.py | |
parent | 2a8d7ee0f89b43fb2e65452343891897837f8231 (diff) | |
download | micropython-7e12a601b8e9d90e5a7498523a9023c8c47bc4ca.tar.gz micropython-7e12a601b8e9d90e5a7498523a9023c8c47bc4ca.zip |
py/compile: Fix edge case when constant-folding negation of integer.
Also adds tests specifically for testing constant folding.
Diffstat (limited to 'tests/basics/int_constfolding.py')
-rw-r--r-- | tests/basics/int_constfolding.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/basics/int_constfolding.py b/tests/basics/int_constfolding.py new file mode 100644 index 0000000000..c01f964daa --- /dev/null +++ b/tests/basics/int_constfolding.py @@ -0,0 +1,40 @@ +# tests int constant folding in compiler + +# positive +print(+1) +print(+100) + +# negation +print(-1) +print(-(-1)) +print(-0x3fffffff) # 32-bit edge case +print(-0x3fffffffffffffff) # 64-bit edge case +print(-(-0x3fffffff - 1)) # 32-bit edge case +print(-(-0x3fffffffffffffff - 1)) # 64-bit edge case + +# 1's complement +print(~0) +print(~1) +print(~-1) +print(~0x3fffffff) # 32-bit edge case +print(~0x3fffffffffffffff) # 64-bit edge case +print(~(-0x3fffffff - 1)) # 32-bit edge case +print(~(-0x3fffffffffffffff - 1)) # 64-bit edge case + +# addition +print(1 + 2) + +# subtraction +print(1 - 2) +print(2 - 1) + +# multiplication +print(1 * 2) +print(123 * 456) + +# floor div and modulo +print(123 // 7, 123 % 7) +print(-123 // 7, -123 % 7) +print(123 // -7, 123 % -7) +print(-123 // -7, -123 % -7) + |