feature #247: handle extra parenthesis in generators

This commit is contained in:
x0ret
2019-06-06 02:38:32 +04:30
committed by rocky
parent c9cae2d09e
commit fd59879510
3 changed files with 57 additions and 0 deletions

View File

@@ -37,3 +37,22 @@ def customize_for_version26_27(self, version):
'testtrue_then': ( 'not %p', (0, 22) ),
})
def n_call(node):
mapping = self._get_mapping(node)
table = mapping[0]
key = node
for i in mapping[1:]:
key = key[i]
pass
if key.kind == 'CALL_FUNCTION_1':
args_node = node[-2]
if args_node == 'expr':
n = args_node[0]
if n == 'generator_exp':
template = ('%c%P', 0, (1, -1, ', ', 100))
self.template_engine(template, node)
self.prune()
self.default(node)
self.n_call = n_call

View File

@@ -227,9 +227,38 @@ def customize_for_version3(self, version):
-2, (-2-kwargs, -2, ', '))
self.template_engine(template, node)
self.prune()
elif key.kind == 'CALL_FUNCTION_1':
args_node = node[-2]
if args_node == 'pos_arg':
assert args_node[0] == 'expr'
n = args_node[0][0]
if n == 'generator_exp':
template = ('%c%P', 0, (1, -1, ', ', 100))
self.template_engine(template, node)
self.prune()
self.default(node)
self.n_call = n_call
elif version < 3.2:
def n_call(node):
mapping = self._get_mapping(node)
key = node
for i in mapping[1:]:
key = key[i]
pass
if key.kind == 'CALL_FUNCTION_1':
args_node = node[-2]
if args_node == 'pos_arg':
assert args_node[0] == 'expr'
n = args_node[0][0]
if n == 'generator_exp':
template = ('%c%P', 0, (1, -1, ', ', 100))
self.template_engine(template, node)
self.prune()
self.default(node)
self.n_call = n_call
def n_mkfunc_annotate(node):

View File

@@ -112,6 +112,15 @@ def customize_for_version35(self, version):
template = ('*%c)', nargs+1)
self.template_engine(template, node)
self.prune()
elif key.kind == 'CALL_FUNCTION_1':
args_node = node[-2]
if args_node == 'pos_arg':
assert args_node[0] == 'expr'
n = args_node[0][0]
if n == 'generator_exp':
template = ('%c%P', 0, (1, -1, ', ', 100))
self.template_engine(template, node)
self.prune()
self.default(node)
self.n_call = n_call