Skip to content

Commit 25675f2

Browse files
committed
Sync fragments with pysource (a little bit)
1 parent 915ff5e commit 25675f2

File tree

1 file changed

+43
-22
lines changed

1 file changed

+43
-22
lines changed

uncompyle6/semantics/fragments.py

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,9 +1520,9 @@ def print_super_classes3(self, node):
15201520
self.write("(")
15211521
if kwargs:
15221522
# Last arg is tuple of keyword values: omit
1523-
l = n - 1
1523+
m = n - 1
15241524
else:
1525-
l = n
1525+
m = n
15261526

15271527
if kwargs:
15281528
# 3.6+ does this
@@ -1534,15 +1534,15 @@ def print_super_classes3(self, node):
15341534
j += 1
15351535

15361536
j = 0
1537-
while i < l:
1537+
while i < m:
15381538
self.write(sep)
15391539
value = self.traverse(node[i])
15401540
self.write("%s=%s" % (kwargs[j], value))
15411541
sep = line_separator
15421542
j += 1
15431543
i += 1
15441544
else:
1545-
while i < l:
1545+
while i < m:
15461546
value = self.traverse(node[i])
15471547
i += 1
15481548
self.write(sep, value)
@@ -1794,12 +1794,12 @@ def n_list(self, node):
17941794

17951795
def template_engine(self, entry, startnode):
17961796
"""The format template interpretation engine. See the comment at the
1797-
beginning of this module for the how we interpret format
1797+
beginning of this module for how we interpret format
17981798
specifications such as %c, %C, and so on.
17991799
"""
18001800

18011801
# print("-----")
1802-
# print(startnode)
1802+
# print(startnode.kind)
18031803
# print(entry[0])
18041804
# print('======')
18051805

@@ -1854,14 +1854,27 @@ def template_engine(self, entry, startnode):
18541854

18551855
index = entry[arg]
18561856
if isinstance(index, tuple):
1857-
assert (
1858-
node[index[0]] == index[1]
1859-
), "at %s[%d], expected %s node; got %s" % (
1860-
node.kind,
1861-
arg,
1862-
node[index[0]].kind,
1863-
index[1],
1864-
)
1857+
if isinstance(index[1], str):
1858+
# if node[index[0]] != index[1]:
1859+
# from trepan.api import debug; debug()
1860+
assert (
1861+
node[index[0]] == index[1]
1862+
), "at %s[%d], expected '%s' node; got '%s'" % (
1863+
node.kind,
1864+
arg,
1865+
index[1],
1866+
node[index[0]].kind,
1867+
)
1868+
else:
1869+
assert (
1870+
node[index[0]] in index[1]
1871+
), "at %s[%d], expected to be in '%s' node; got '%s'" % (
1872+
node.kind,
1873+
arg,
1874+
index[1],
1875+
node[index[0]].kind,
1876+
)
1877+
18651878
index = index[0]
18661879
assert isinstance(
18671880
index, int
@@ -1881,14 +1894,21 @@ def template_engine(self, entry, startnode):
18811894
assert isinstance(tup, tuple)
18821895
if len(tup) == 3:
18831896
(index, nonterm_name, self.prec) = tup
1884-
assert (
1885-
node[index] == nonterm_name
1886-
), "at %s[%d], expected '%s' node; got '%s'" % (
1887-
node.kind,
1888-
arg,
1889-
nonterm_name,
1890-
node[index].kind,
1891-
)
1897+
if isinstance(tup[1], str):
1898+
assert (
1899+
node[index] == nonterm_name
1900+
), "at %s[%d], expected '%s' node; got '%s'" % (
1901+
node.kind,
1902+
arg,
1903+
nonterm_name,
1904+
node[index].kind,
1905+
)
1906+
else:
1907+
assert node[tup[0]] in tup[1], (
1908+
f"at {node.kind}[{tup[0]}], expected to be in '{tup[1]}' "
1909+
f"node; got '{node[tup[0]].kind}'"
1910+
)
1911+
18921912
else:
18931913
assert len(tup) == 2
18941914
(index, self.prec) = entry[arg]
@@ -2099,6 +2119,7 @@ def code_deparse(
20992119
# Build Syntax Tree from tokenized and massaged disassembly.
21002120
# deparsed = pysource.FragmentsWalker(out, scanner, showast=showast)
21012121
show_tree = debug_opts.get("tree", False)
2122+
linestarts = dict(scanner.opc.findlinestarts(co))
21022123
deparsed = walker(
21032124
version,
21042125
scanner,

0 commit comments

Comments
 (0)