Commit Graph

535 Commits

Author SHA1 Message Date
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
Michael Hansen
96b5dd1d02 Modernize and simplify FastStack with a vector. 2019-10-09 15:39:37 -07:00
Michael Hansen
15da179173 Merge print nodes in the AST rather than attempting to manage it during
print statement output. Fixes numerous bugs with mangled print statements.
2019-10-09 14:20:46 -07:00
Michael Hansen
cbbffd28e6 Modernize ASTNode.h 2019-10-08 13:34:15 -07:00
Michael Hansen
8713b3b05f Merge 'pass' node into existing ASTKeyword node type 2019-10-08 13:12:31 -07:00
Michael Hansen
c928df906b Fix applyEquiv test by writing the correct name from the call object. 2019-10-08 11:44:52 -07:00
Michael Hansen
9309effba9 Support Python 3.x kw-only arguments. 2019-10-08 11:36:12 -07:00
Michael Hansen
3e379c114e Don't emit a 'pass' statement on an empty top-level module code object
Fixes test_empty test case.
2019-10-08 09:04:41 -07:00
Michael Hansen
3009ea38d2 Handle Python 3.3's automatic __qualname__ assignment.
Fixes loadbuild_class.py test.
2019-10-08 08:53:53 -07:00
Michael Hansen
66d6c190ac Make PycRef<T> movable 2019-10-08 08:42:33 -07:00
Michael Hansen
44af6a2c04 Finish removing old tests and old "test" framework. 2019-10-07 20:57:43 -07:00
Michael Hansen
391ba6502d Migrate additional tests which previously didn't have reference source to
the new test system, including new reference source.
2019-10-07 17:06:08 -07:00
Michael Hansen
9524099488 Migrate test_tuple_params to new test framework.
This test relies on some old syntax for tuples that may need to get
cleaned up before the test can pass on both old and new Pythons.
2019-10-07 13:54:46 -07:00
Michael Hansen
86b88091df Unify test_prettyprint variations and add to passing tests. 2019-10-07 13:42:39 -07:00
Michael Hansen
ab58fba23b Move more tests into the new framework, including current xfails. 2019-10-07 13:38:19 -07:00
Michael Hansen
0dc49b5872 Add support for expected test failures 2019-10-07 11:36:09 -07:00
Michael Hansen
8014ac2b14 Print unicode as default in Python 2.x when CO_FUTURE_UNICODE_LITERALS
is set.

Fixes #141.
2019-10-06 14:34:24 -07:00
Michael Hansen
892616b560 Add tests for unicode/bytes string literals 2019-10-06 13:50:53 -07:00
Michael Hansen
b5696c8398 Port Python 2.7 list comprehension fixes by @ReDucTor from #78 2019-10-04 16:35:58 -07:00
Michael Hansen
314f4a1a0d Fix several cases of name shadowing, and greatly simplify some
unnecessary stack operations with tuple appending.
2019-10-04 16:16:10 -07:00
Michael Hansen
5c896fa743 Clean up some loops with range-based for. 2019-10-04 15:56:24 -07:00
Michael Hansen
727da48ba5 Display the diff when a test doesn't match the expected output. 2019-10-04 14:57:59 -07:00
Michael Hansen
646213ef4f Add a test for unpack assignment 2019-10-04 14:33:38 -07:00
Michael Hansen
2e93d29233 Don't write parens around for loop value tuples 2019-10-04 14:08:47 -07:00
Michael Hansen
fc1cb06926 Add Github Actions CI build 2019-10-04 11:32:27 -07:00
Michael Hansen
154b80b2fe Migrate several more passing tests to new test framework 2019-10-04 11:05:52 -07:00
Michael Hansen
7cd576280e Move equivalent reference sources to the input directory 2019-10-03 22:08:44 -07:00
Michael Hansen
7a7b4623b6 Migrate a couple more passing tests, and handle end-of-line comments
in token_dump.
2019-10-03 20:56:52 -07:00
Michael Hansen
1cf1977a40 Move test_class.pyc to the new test framwork, and fix tokenization
of multi-line strings.
2019-10-03 17:12:52 -07:00
Michael Hansen
697aa5d2c3 Simplify the output of decompyle_test.sh, and actually fail the
check target when a test fails.
2019-10-03 16:05:30 -07:00
Michael Hansen
0c0a0231a9 Fix dict literals in Python 3.5+ to make the new test case pass. 2019-10-03 15:48:44 -07:00
Michael Hansen
31d907118a Add a new unit test framework that actually checks the output of
decompiled sources against an expected result.
2019-10-03 15:33:52 -07:00
Michael Hansen
18f94c4094 Use pymultic for executing the rt_test 2019-10-02 21:18:35 -07:00
Michael Hansen
619f584bd2 Simplify CMakeLists slightly, and correctly handle AppleClang 2019-10-02 16:27:27 -07:00
Michael Hansen
f88869fb17 Use std::string instead of manual character buffers where applicable. 2019-10-02 16:01:54 -07:00
Michael Hansen
8d3752b4f0 Start requring C++11 with explicit virtual overrides. 2019-10-02 14:41:49 -07:00
Michael Hansen
f02a339072 Move fetch and build of Python versions into pymultic, and remove
acquire_pythons script.

pymultic now accepts an arbitrary list of python versions, instead
of requiring all of a specific class to be included.
2019-10-02 14:41:49 -07:00
Michael Hansen
f77f287b1d Backport Python 2.7.15 fix for GCC 8 optimizations to other Pythons
it applies to.
2019-09-30 16:29:04 -07:00
Michael Hansen
104c3c0b42 Update magic for 3.7.0 release 2018-07-02 13:13:58 -07:00
Michael Hansen
1c01ca7ee6 Better name for this script, since it doesn't do anything in parallel. 2018-04-28 12:22:14 -07:00
Michael Hansen
56e442605a Remove unnecessary complexity and just use the base sequence type common
to both 1.0 and later versions in PyCodeObject.
2018-04-28 11:37:13 -07:00
Michael Hansen
1b01af45fd Add some scripts for fetching/building many Python versions and compiling
python sources to bytecode in each of them.
2018-04-27 16:28:23 -07:00
Michael Hansen
7f63529d49 Fix PycCode incompatibility with Python 1.0 2018-04-26 15:13:52 -07:00
Michael Hansen
0c3955883f Fix bytecode compatibility with Python 3.7 beta3 2018-04-26 14:38:02 -07:00
Michael Hansen
bf60a5831b Fix several undefined behavior issues identified by @nrathaus.
Fixes #147.
2018-01-28 15:37:44 -08:00
Michael Hansen
a9a362254e Use fputs instead of fprintf when no formatting is required 2018-01-28 15:37:44 -08:00
Michael Hansen
98ad031109 Add initial 3.7 alpha support, and fix 3.6 opcode map 2017-12-20 13:49:28 -08:00