From 4394d46f64503e427184060aa9c8eecb41d53c87 Mon Sep 17 00:00:00 2001 From: rocky Date: Thu, 11 Jul 2024 20:10:41 -0400 Subject: [PATCH] Remove redundant list_comp() fn --- test/simple_source/bug26/.gitignore | 1 + test/stdlib/2.4-exclude.sh | 7 +-- uncompyle6/semantics/n_actions.py | 82 ++++------------------------- 3 files changed, 13 insertions(+), 77 deletions(-) create mode 100644 test/simple_source/bug26/.gitignore diff --git a/test/simple_source/bug26/.gitignore b/test/simple_source/bug26/.gitignore new file mode 100644 index 00000000..183700bc --- /dev/null +++ b/test/simple_source/bug26/.gitignore @@ -0,0 +1 @@ +/.python-version diff --git a/test/stdlib/2.4-exclude.sh b/test/stdlib/2.4-exclude.sh index 664f6da5..3bb058ec 100644 --- a/test/stdlib/2.4-exclude.sh +++ b/test/stdlib/2.4-exclude.sh @@ -38,17 +38,14 @@ SKIP_TESTS=( [test_winreg.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_decimal.py]=1 # + [test_decimal.py]=1 # fails on its own - no module named test_support [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_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_threading.py]=1 # test takes too long to run: 11 seconds [test_thread.py]=1 # test takes too long to run: 36 seconds [test_trace.py]=1 # Long test - works - [test_zipfile64.py]=1 # Runs ok but takes 204 seconds ) # About 243 files, 0 in 19 minutes diff --git a/uncompyle6/semantics/n_actions.py b/uncompyle6/semantics/n_actions.py index ab4c2713..cdb6ffa9 100644 --- a/uncompyle6/semantics/n_actions.py +++ b/uncompyle6/semantics/n_actions.py @@ -926,66 +926,18 @@ class NonterminalActions: n_set = n_build_set = n_tuple = n_list def n_list_comp(self, node): - """List comprehensions""" - p = self.prec - self.prec = 100 - if self.version >= (2, 7): - 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: - n = node[-2] - - 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] + self.write("[") + if node[0].kind == "load_closure": + assert self.version >= (3, 0) + self.listcomp_closure3(node) else: - expr = n[1] - if node[-2] == "JUMP_BACK": - list_iter = node[-3] + if node == "listcomp_async": + list_iter_index = 5 else: - 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 + list_iter_index = 1 + self.comprehension_walk_newer(node, list_iter_index, 0) + self.write("]") + self.prune() def n_list_comp_pypy27(self, node): """List comprehensions in PYPY.""" @@ -1036,20 +988,6 @@ class NonterminalActions: self.prec = p 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): code_node = find_code_node(node, -2) code = code_node.attr