mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
Merge ast-branch to head
This change implements a new bytecode compiler, based on a transformation of the parse tree to an abstract syntax defined in Parser/Python.asdl. The compiler implementation is not complete, but it is in stable enough shape to run the entire test suite excepting two disabled tests.
This commit is contained in:
parent
2cb94aba12
commit
3e0055f8c6
54 changed files with 13675 additions and 6810 deletions
|
@ -411,10 +411,32 @@ class IllegalSyntaxTestCase(unittest.TestCase):
|
|||
(0, ''))
|
||||
self.check_bad_tree(tree, "malformed global ast")
|
||||
|
||||
|
||||
class CompileTestCase(unittest.TestCase):
|
||||
|
||||
# These tests are very minimal. :-(
|
||||
|
||||
def test_compile_expr(self):
|
||||
st = parser.expr('2 + 3')
|
||||
code = parser.compilest(st)
|
||||
self.assertEquals(eval(code), 5)
|
||||
|
||||
def test_compile_suite(self):
|
||||
st = parser.suite('x = 2; y = x + 3')
|
||||
code = parser.compilest(st)
|
||||
globs = {}
|
||||
exec code in globs
|
||||
self.assertEquals(globs['y'], 5)
|
||||
|
||||
def test_compile_error(self):
|
||||
st = parser.suite('1 = 3 + 4')
|
||||
self.assertRaises(SyntaxError, parser.compilest, st)
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(
|
||||
RoundtripLegalSyntaxTestCase,
|
||||
IllegalSyntaxTestCase
|
||||
IllegalSyntaxTestCase,
|
||||
CompileTestCase,
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue