Fix handling py3 annotation args + defparam comma issue

This commit is contained in:
x0ret
2019-07-01 01:28:32 +04:30
parent 50e46531ce
commit 7b7f794913
3 changed files with 49 additions and 21 deletions

View File

@@ -1016,26 +1016,48 @@ class Python3Parser(PythonParser):
# Note order of kwargs and pos args changed between 3.3-3.4
if self.version <= 3.2:
rule = "mkfunc ::= %s%s%sload_closure LOAD_CODE %s" % (
kwargs_str,
"expr " * args_pos,
"expr " * annotate_args,
opname,
)
if annotate_args > 0:
rule = "mkfunc_annotate ::= %s%s%sannotate_tuple load_closure LOAD_CODE %s" % (
kwargs_str,
"pos_arg " * args_pos,
"annotate_arg " * (annotate_args - 1),
opname,
)
else:
rule = "mkfunc ::= %s%sload_closure LOAD_CODE %s" % (
kwargs_str,
"pos_arg " * args_pos,
opname,
)
elif self.version == 3.3:
rule = "mkfunc ::= %s%s%sload_closure LOAD_CODE LOAD_STR %s" % (
kwargs_str,
"expr " * args_pos,
"expr " * annotate_args,
opname,
)
if annotate_args > 0:
rule = "mkfunc_annotate ::= %s%s%sannotate_tuple load_closure LOAD_CODE LOAD_STR %s" % (
kwargs_str,
"pos_arg " * args_pos,
"annotate_arg " * (annotate_args - 1),
opname,
)
else:
rule = "mkfunc ::= %s%sload_closure LOAD_CODE LOAD_STR %s" % (
kwargs_str,
"pos_arg " * args_pos,
opname,
)
elif self.version >= 3.4:
rule = "mkfunc ::= %s%s%s load_closure LOAD_CODE LOAD_STR %s" % (
"expr " * args_pos,
kwargs_str,
"expr " * annotate_args,
opname,
)
if annotate_args > 0:
rule = "mkfunc_annotate ::= %s%s%sannotate_tuple load_closure LOAD_CODE LOAD_STR %s" % (
"pos_arg " * args_pos,
kwargs_str,
"annotate_arg " * (annotate_args - 1),
opname,
)
else:
rule = "mkfunc ::= %s%s load_closure LOAD_CODE LOAD_STR %s" % (
"pos_arg " * args_pos,
kwargs_str,
opname,
)
self.add_unique_rule(rule, opname, token.attr, customize)