You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Remove redundant list_comp() fn
This commit is contained in:
1
test/simple_source/bug26/.gitignore
vendored
Normal file
1
test/simple_source/bug26/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/.python-version
|
@@ -38,17 +38,14 @@ SKIP_TESTS=(
|
|||||||
[test_winreg.py]=1 # it fails on its own
|
[test_winreg.py]=1 # it fails on its own
|
||||||
[test_winsound.py]=1 # it fails on its own
|
[test_winsound.py]=1 # it fails on its own
|
||||||
[test_zlib.py]=1 # it fails on its own
|
[test_zlib.py]=1 # it fails on its own
|
||||||
|
[test_decimal.py]=1 # fails on its own - no module named test_support
|
||||||
[test_decimal.py]=1 #
|
|
||||||
[test_dis.py]=1 # We change line numbers - duh!
|
[test_dis.py]=1 # We change line numbers - duh!
|
||||||
[test_generators.py]=1 # Investigate
|
[test_generators.py]=1 # fails on its own - no module named test_support
|
||||||
# [test_grammar.py]=1 # fails on its own - no module tests.test_support
|
# [test_grammar.py]=1 # fails on its own - no module tests.test_support
|
||||||
[test_grp.py]=1 # Long test - might work Control flow?
|
[test_grp.py]=1 # Long test - might work Control flow?
|
||||||
[test_pep247.py]=1 # Long test - might work? Control flow?
|
|
||||||
[test_socketserver.py]=1 # -- test takes too long to run: 40 seconds
|
[test_socketserver.py]=1 # -- test takes too long to run: 40 seconds
|
||||||
[test_threading.py]=1 # test takes too long to run: 11 seconds
|
[test_threading.py]=1 # test takes too long to run: 11 seconds
|
||||||
[test_thread.py]=1 # test takes too long to run: 36 seconds
|
[test_thread.py]=1 # test takes too long to run: 36 seconds
|
||||||
[test_trace.py]=1 # Long test - works
|
[test_trace.py]=1 # Long test - works
|
||||||
[test_zipfile64.py]=1 # Runs ok but takes 204 seconds
|
|
||||||
)
|
)
|
||||||
# About 243 files, 0 in 19 minutes
|
# About 243 files, 0 in 19 minutes
|
||||||
|
@@ -926,66 +926,18 @@ class NonterminalActions:
|
|||||||
n_set = n_build_set = n_tuple = n_list
|
n_set = n_build_set = n_tuple = n_list
|
||||||
|
|
||||||
def n_list_comp(self, node):
|
def n_list_comp(self, node):
|
||||||
"""List comprehensions"""
|
self.write("[")
|
||||||
p = self.prec
|
if node[0].kind == "load_closure":
|
||||||
self.prec = 100
|
assert self.version >= (3, 0)
|
||||||
if self.version >= (2, 7):
|
self.listcomp_closure3(node)
|
||||||
if self.is_pypy:
|
|
||||||
self.n_list_comp_pypy27(node)
|
|
||||||
return
|
|
||||||
n = node[-1]
|
|
||||||
elif node[-1] == "delete":
|
|
||||||
if node[-2] == "JUMP_BACK":
|
|
||||||
n = node[-3]
|
|
||||||
else:
|
else:
|
||||||
n = node[-2]
|
if node == "listcomp_async":
|
||||||
|
list_iter_index = 5
|
||||||
assert n == "list_iter"
|
|
||||||
|
|
||||||
# Find the list comprehension body. It is the inner-most
|
|
||||||
# node that is not list_.. .
|
|
||||||
# FIXME: DRY with other use
|
|
||||||
while n == "list_iter":
|
|
||||||
n = n[0] # iterate one nesting deeper
|
|
||||||
if n == "list_for":
|
|
||||||
n = n[3]
|
|
||||||
elif n == "list_if":
|
|
||||||
n = n[2]
|
|
||||||
elif n == "list_if_not":
|
|
||||||
n = n[2]
|
|
||||||
assert n == "lc_body"
|
|
||||||
self.write("[ ")
|
|
||||||
|
|
||||||
if self.version >= (2, 7):
|
|
||||||
expr = n[0]
|
|
||||||
list_iter = node[-1]
|
|
||||||
else:
|
else:
|
||||||
expr = n[1]
|
list_iter_index = 1
|
||||||
if node[-2] == "JUMP_BACK":
|
self.comprehension_walk_newer(node, list_iter_index, 0)
|
||||||
list_iter = node[-3]
|
self.write("]")
|
||||||
else:
|
self.prune()
|
||||||
list_iter = node[-2]
|
|
||||||
|
|
||||||
assert expr == "expr"
|
|
||||||
assert list_iter == "list_iter"
|
|
||||||
|
|
||||||
# FIXME: use source line numbers for directing line breaks
|
|
||||||
|
|
||||||
line_number = self.line_number
|
|
||||||
last_line = self.f.getvalue().split("\n")[-1]
|
|
||||||
l = len(last_line)
|
|
||||||
indent = " " * (l - 1)
|
|
||||||
|
|
||||||
self.preorder(expr)
|
|
||||||
line_number = self.indent_if_source_nl(line_number, indent)
|
|
||||||
self.preorder(list_iter)
|
|
||||||
l2 = self.indent_if_source_nl(line_number, indent)
|
|
||||||
if l2 != line_number:
|
|
||||||
self.write(" " * (len(indent) - len(self.indent) - 1) + "]")
|
|
||||||
else:
|
|
||||||
self.write(" ]")
|
|
||||||
self.prec = p
|
|
||||||
self.prune() # stop recursing
|
|
||||||
|
|
||||||
def n_list_comp_pypy27(self, node):
|
def n_list_comp_pypy27(self, node):
|
||||||
"""List comprehensions in PYPY."""
|
"""List comprehensions in PYPY."""
|
||||||
@@ -1036,20 +988,6 @@ class NonterminalActions:
|
|||||||
self.prec = p
|
self.prec = p
|
||||||
self.prune() # stop recursing
|
self.prune() # stop recursing
|
||||||
|
|
||||||
def n_list_comp(self, node):
|
|
||||||
self.write("[")
|
|
||||||
if node[0].kind == "load_closure":
|
|
||||||
assert self.version >= (3, 0)
|
|
||||||
self.listcomp_closure3(node)
|
|
||||||
else:
|
|
||||||
if node == "listcomp_async":
|
|
||||||
list_iter_index = 5
|
|
||||||
else:
|
|
||||||
list_iter_index = 1
|
|
||||||
self.comprehension_walk_newer(node, list_iter_index, 0)
|
|
||||||
self.write("]")
|
|
||||||
self.prune()
|
|
||||||
|
|
||||||
def n_mkfunc(self, node):
|
def n_mkfunc(self, node):
|
||||||
code_node = find_code_node(node, -2)
|
code_node = find_code_node(node, -2)
|
||||||
code = code_node.attr
|
code = code_node.attr
|
||||||
|
Reference in New Issue
Block a user