Commit Graph

531 Commits

Author SHA1 Message Date
Aralox
bd7439485f CRA 2020-10-26 15:18:43 +11:00
Aralox
23beda48d7 CRAs 2020-10-26 15:15:45 +11:00
Aralox
a987c34e65 Merge remote-tracking branch 'upstream/master' into Issue-185-chained-assignment 2020-10-25 12:13:37 +11:00
Michael Hansen
0a82954c58 Merge pull request #184 from Aralox/Issue-183-support-unpack-empty
Support unpacking empty list.
2020-10-24 14:15:47 -07:00
Aralox
7a89b72260 Support chained assignment statements, e.g. a = b = c.
We know when we have begun a chained assignment when we process a DUP_TOP with non-null on the stack. Push a NODE_CHAINSTORE onto the stack when this happens, and keep it 'floating' on top of the stack for all STORE_X operations until the stack is empty.
To support versions of Python <= 2.5 which use DUP_TOP in more places, I modified ROT_TWO, ROT_THREE and ROT_FOUR to get rid of NODE_CHAINSTORE on the stack if it is present.
2020-10-23 21:19:01 +11:00
Aralox
1db8d28729 Add compiled test for python 2.7 2020-10-23 14:30:42 +11:00
Aralox
db94f3c257 CRLF -> LF 2020-10-23 11:28:42 +11:00
Aralox
8e8bb95592 Support unpacking empty list.
If UNPACK_SEQUENCE with operand 0 is encountered, treat it like a STORE_X and either assign the TOS to it or set it as the for-loop index.
Issue #183.
2020-10-23 11:23:46 +11:00
Michael Hansen
8eb18de269 Update tests to show that #39 is resolved, and add dummy support for
STORE_LOCALS used in Python 3.0-3.3.

Closes #39
Closes #63
2020-10-22 09:06:57 -07:00
Michael Hansen
0540b3991c Merge pull request #181 from Aralox/Issue-124-handle-async-for-GET_AITER_GET_ANEXT
Add support for `async for`
2020-10-22 08:24:56 -07:00
Michael Hansen
378c25685b Merge pull request #182 from dotjrich/issue-169
Adds support for SETUP_ANNOTATION op and variable annotations
2020-10-22 08:21:28 -07:00
Aralox
7022db1bf6 Modify async for test to avoid known try-except problem with trailing unnecessary continue when the try-except is not followed by any other statements.
Add an xfail test to capture this failing scenario.
2020-10-22 15:35:59 +11:00
John Richards
7ba44361fe Addresses code review comments 2020-10-21 23:45:51 -04:00
John Richards
345035b544 Adds support for SETUP_ANNOTATION op and variable annotations
Tests have also been added.

Fixes #169
2020-10-21 21:42:13 -04:00
Aralox
abf8501ccf CRAs 2020-10-22 10:57:49 +11:00
Aralox
e80aa996fa Only initialize the async for once. 2020-10-22 09:11:51 +11:00
Aralox
5bdc0b5baf Merge remote-tracking branch 'upstream/master' into Issue-124-handle-async-for-GET_AITER_GET_ANEXT
Conflicts:
	ASTree.cpp
2020-10-21 19:34:37 +11:00
Aralox
91a23f914d Implement better handling for async for.
Instead of ignoring boilerplate when decompiling `async for`, build the loop semantically by deconstructing the BLK_WHILE -> BLK_CONTAINER -> BLK_TRY that python generates when compiling an `async for` (see https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for).
When reading GET_AITER, convert the BLK_WHILE into a BLK_ASYNCFOR in the same way as a `for` loop.
Ignore GET_ANEXT.
Use END_FINALLY as the trigger to finish building the BLK_ASYNCFOR:
-> Extract the loop variable from the contents of the BLK_TRY.
-> Throw away the BLK_TRY and BLK_CONTAINER, leave the BLK_ASYNCFOR on top of the stack.
2020-10-21 19:32:20 +11:00
Michael Hansen
d3a46f711f Merge remote-tracking branch 'dotjrich/issue-172' into master 2020-10-20 21:10:55 -07:00
Michael Hansen
e616471003 Merge branch 'Issue-165-literal-string-interpolation-f-strings' into master 2020-10-20 21:08:19 -07:00
Michael Hansen
568867c80a Minor style adjustments 2020-10-20 21:08:02 -07:00
Aralox
db12d15e08 Fix token_dump for strings with single quotes in them. Update f-string test tokens. 2020-10-21 10:38:58 +11:00
John Richards
50dea39975 Addresses a couple performance related comments 2020-10-20 18:07:39 -04:00
Aralox
8933c9a4a9 Add support for async for. Issue #124
Ignore 'boilerplate' opcodes that set up the async iteration logic internally (https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for) - We don’t need any of this as GET_AITER is enough to tell us that we are in an `async for`.
2020-10-20 20:39:23 +11:00
John Richards
5b819fa23e Adds support for BUILD_CONST_KEY_MAP opcode
Tests have also been added.

Fixes #172
2020-10-20 01:46:38 -04:00
Aralox
7af40a779f CRAs 2020-10-20 16:42:19 +11:00
Michael Hansen
8fdfe170fc Ensure tarball directory is created before trying to download to it 2020-10-19 22:04:56 -07:00
Michael Hansen
0a54e40c8d Merge pull request #179 from dotjrich/debug-docs
Adds ability to control block and stack debug output via CMake
2020-10-19 22:02:20 -07:00
John Richards
0573318528 Renames options for BLOCK/STACK debugging and fixes indentation 2020-10-20 00:42:44 -04:00
John Richards
05c373b07a Adds ability to control block and stack debug output via CMake
Also updates README to detail how to enable various debug options.

A typo related to running tests has also been fixed.
2020-10-19 20:55:20 -04:00
Aralox
1f07a24451 Fix up some dodgy spacing 2020-10-17 21:04:39 +11:00
Aralox
0c9fbd9caf Issue-165 Added support for f-strings (literal string interpolation https://www.python.org/dev/peps/pep-0498/)
Opcodes handled: FORMAT_VALUE, BUILD_STRING.
Added AST node classes for FormattedValue and JoinedStr.
2020-10-17 20:52:57 +11:00
Michael Hansen
9407b29451 Merge pull request #175 from dotjrich/issue-136
Handle NaN and infinity values
2020-10-15 19:19:55 -07:00
John Richards
ed11ba3fe4 Refactors how we handle NaN and infinity
The previous approach didn't work properly under MSVC. The wrong
output would be produced for NaN values.

This new approach will directly print out "nan" and "inf" with the
appropriate sign, rather than just wrapping the value in float('').
2020-10-15 21:35:19 -04:00
John Richards
870ecdc430 Handle NaN and infinity values
Right now, NaN/infinity values will produce "nan" and "inf", but
Python doesn't allow those in source code. This change will wrap
those values in float(''), which is allowed.

Tests for Python 2.7 and 3.8 have been added as well.

Fixes #136
2020-10-15 21:04:57 -04:00
Michael Hansen
36d93bd1a5 Add support for Python 3.9 in pymultic.
Also updates versions for several other Python releases.
2020-10-12 16:52:38 -07:00
Michael Hansen
8460d119fd Add bytecode support for Python 3.9 rc2 2020-09-29 09:28:15 -07:00
Michael Hansen
045b624f55 Merge pull request #171 from Almamu/fix-empty-stack-history
Fixed crash on stack_history being empty
2020-02-10 07:53:56 -08:00
Michael Hansen
e20e3b2f9f Merge pull request #170 from Almamu/fix-stringrefs-length0
Fixed a crash when a Stringref was an empty string (length 0)
2020-02-10 07:51:02 -08:00
Alexis Maiquez Murcia
eae19d7a81 Fixed crash on stack_history being empty
Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
2020-02-10 11:02:26 +01:00
Alexis Maiquez Murcia
5437c3294f Fixed a crash when a Stringref was an empty string (length 0)
Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
2020-02-10 10:40:17 +01:00
Michael Hansen
3d3719f844 GH Actions apparently use PowerShell by default now -- fix syntax error. 2020-01-03 14:38:36 -08:00
Michael Hansen
937520abcc Update pymultic python versions 2020-01-03 12:16:39 -08:00
Michael Hansen
428d11c4b5 Add bytecode and disassembly support for Python 3.8.
Also fixes running pymultic from outside of its source directory.
2019-10-14 14:48:26 -07:00
Michael Hansen
de78e1b882 Unmangle private names ('__' prefix) in class declarations.
Fixes #166.
2019-10-10 14:47:48 -07:00
Michael Hansen
375b8b0c68 Fix non-inplace matrix multiplication operator. 2019-10-10 11:47:48 -07:00
Michael Hansen
de3f7982c3 Support 'yield from' (Python 3.3) and await (Python 3.5) expressions.
Currently unsupported are yield from in newer Python versions, and
yield/yield from into an assignment expression.
2019-10-10 10:59:10 -07:00
Michael Hansen
881a200ab0 Change handling of POP_TOP to explicitly mark already-processed nodes. 2019-10-10 10:55:28 -07:00
Michael Hansen
13397c940e Don't emit statements for null values on the stack.
Fixes several test cases with extraneous None lines.
2019-10-10 10:26:19 -07:00
Michael Hansen
c71d41efb6 Add MSVC-based CI build 2019-10-09 20:33:39 -07:00