Add fragment rules for RAISE_VARARGS and ...

Fix a fragment offset-sorting bug
This commit is contained in:
rocky
2018-02-01 00:43:46 -05:00
parent a753e2c08f
commit 555a1235b2
2 changed files with 42 additions and 1 deletions

View File

@@ -200,7 +200,7 @@ def main(in_base, out_base, files, codes, outfile=None,
for d in deparsed:
last_mod = None
offsets = d.offsets
for e in sorted(offsets.keys()):
for e in sorted([k for k in offsets.keys() if isinstance(k[1], int)]):
if e[0] != last_mod:
line = '=' * len(e[0])
outstream.write("%s\n%s\n%s\n" % (line, e[0], line))

View File

@@ -210,6 +210,47 @@ class FragmentsWalker(pysource.SourceWalker, object):
n_tryelsestmt = n_tryelsestmtc = n_tryelsestmtl = n_tryfinallystmt = n_try_except
def n_raise_stmt0(self, node):
assert node[0] == 'RAISE_VARARGS_0'
start = len(self.f.getvalue()) + len(self.indent)
try:
self.default(node)
except GenericASTTraversalPruningException:
pass
self.set_pos_info(node[0], start, len(self.f.getvalue()))
self.prune()
def n_raise_stmt1(self, node):
assert node[1] == 'RAISE_VARARGS_1'
start = len(self.f.getvalue()) + len(self.indent)
try:
self.default(node)
except GenericASTTraversalPruningException:
pass
self.set_pos_info(node[1], start, len(self.f.getvalue()))
self.prune()
def n_raise_stmt2(self, node):
assert node[2] == 'RAISE_VARARGS_2'
start = len(self.f.getvalue()) + len(self.indent)
try:
self.default(node)
except GenericASTTraversalPruningException:
pass
self.set_pos_info(node[2], start, len(self.f.getvalue()))
self.prune()
# FIXME: Isolate: only in Python 2.x.
def n_raise_stmt3(self, node):
assert node[3] == 'RAISE_VARARGS_3'
start = len(self.f.getvalue()) + len(self.indent)
try:
self.default(node)
except GenericASTTraversalPruningException:
pass
self.set_pos_info(node[3], start, len(self.f.getvalue()))
self.prune()
def n_return(self, node):
start = len(self.f.getvalue()) + len(self.indent)
if self.params['is_lambda']: