mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2024-11-26 22:50:40 +00:00
MAKE_FUNCTION_8 -> MAKE_FUNCTION_CLOSURE
Clarity is important.
This commit is contained in:
parent
ce5207333f
commit
219cb0606a
@ -1,5 +1,5 @@
|
||||
# Python 3.6, uses rule:
|
||||
# genexpr ::= load_closure load_genexpr LOAD_CONST
|
||||
# MAKE_FUNCTION_8 expr GET_ITER CALL_FUNCTION_1
|
||||
# MAKE_FUNCTION_CLOSURE expr GET_ITER CALL_FUNCTION_1
|
||||
def __sub__(self, other): # SList()-other
|
||||
return self.__class__(i for i in self if i not in other)
|
||||
|
@ -4,8 +4,8 @@ def __init__(self, msg = None, digestmod = None):
|
||||
self.digest_cons = lambda d='': digestmod.new(d)
|
||||
|
||||
# From Python 3.6 functools.py
|
||||
# Bug was handling lambda for MAKE_FUNCTION_8 (closure)
|
||||
# vs to MAKE_FUNCTION_9 (pos_args + closure)
|
||||
# Bug was handling lambda for MAKE_FUNCTION_CLOSURE (closure)
|
||||
# vs to MAKE_FUNCTION_CLOSURE_POS (pos_args + closure)
|
||||
def bug():
|
||||
def register(cls, func=None):
|
||||
return lambda f: register(cls, f)
|
||||
|
@ -220,19 +220,19 @@ class Python36Parser(Python35Parser):
|
||||
formatted_value2 ::= expr expr FORMAT_VALUE_ATTR
|
||||
"""
|
||||
self.add_unique_doc_rules(rules_str, customize)
|
||||
elif opname == 'MAKE_FUNCTION_8':
|
||||
elif opname == 'MAKE_FUNCTION_CLOSURE':
|
||||
if 'LOAD_DICTCOMP' in self.seen_ops:
|
||||
# Is there something general going on here?
|
||||
rule = """
|
||||
dict_comp ::= load_closure LOAD_DICTCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
elif 'LOAD_SETCOMP' in self.seen_ops:
|
||||
rule = """
|
||||
set_comp ::= load_closure LOAD_SETCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
|
@ -1205,19 +1205,19 @@ class Python37Parser(Python37BaseParser):
|
||||
formatted_value2 ::= expr expr FORMAT_VALUE_ATTR
|
||||
"""
|
||||
self.add_unique_doc_rules(rules_str, customize)
|
||||
elif opname == "MAKE_FUNCTION_8":
|
||||
elif opname == "MAKE_FUNCTION_CLOSURE":
|
||||
if "LOAD_DICTCOMP" in self.seen_ops:
|
||||
# Is there something general going on here?
|
||||
rule = """
|
||||
dict_comp ::= load_closure LOAD_DICTCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
elif "LOAD_SETCOMP" in self.seen_ops:
|
||||
rule = """
|
||||
set_comp ::= load_closure LOAD_SETCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
|
@ -947,19 +947,19 @@ class Python37BaseParser(PythonParser):
|
||||
)
|
||||
self.add_unique_rule(rule, opname, token.attr, customize)
|
||||
|
||||
elif opname == "MAKE_FUNCTION_8":
|
||||
elif opname == "MAKE_FUNCTION_CLOSURE":
|
||||
if "LOAD_DICTCOMP" in self.seen_ops:
|
||||
# Is there something general going on here?
|
||||
rule = """
|
||||
dict_comp ::= load_closure LOAD_DICTCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
elif "LOAD_SETCOMP" in self.seen_ops:
|
||||
rule = """
|
||||
set_comp ::= load_closure LOAD_SETCOMP LOAD_STR
|
||||
MAKE_FUNCTION_8 expr
|
||||
MAKE_FUNCTION_CLOSURE expr
|
||||
GET_ITER CALL_FUNCTION_1
|
||||
"""
|
||||
self.addRule(rule, nop_func)
|
||||
|
@ -391,7 +391,13 @@ class Scanner3(Scanner):
|
||||
if self.version >= (3, 6):
|
||||
# 3.6+ doesn't have MAKE_CLOSURE, so opname == 'MAKE_FUNCTION'
|
||||
flags = argval
|
||||
opname = "MAKE_FUNCTION_%d" % (flags)
|
||||
# FIXME: generalize this
|
||||
if flags == 8:
|
||||
opname = "MAKE_FUNCTION_CLOSURE"
|
||||
elif flags == 9:
|
||||
opname = "MAKE_FUNCTION_CLOSURE_POS"
|
||||
else:
|
||||
opname = f"MAKE_FUNCTION_{flags}"
|
||||
attr = []
|
||||
for flag in self.MAKE_FUNCTION_FLAGS:
|
||||
bit = flags & 1
|
||||
|
Loading…
Reference in New Issue
Block a user