Neil Girdhar added the comment: I assume this is the problem:
>>> dis.dis('f(*a(), b=b())') 1 0 LOAD_NAME 0 (f) 3 LOAD_NAME 1 (a) 6 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 9 LOAD_CONST 0 ('b') 12 LOAD_NAME 2 (b) 15 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 18 CALL_FUNCTION_VAR 256 (0 positional, 1 keyword pair) 21 RETURN_VALUE — looks fine. >>> dis.dis('f(b=b(), *a())') 1 0 LOAD_NAME 0 (f) 3 LOAD_NAME 1 (a) 6 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 9 LOAD_CONST 0 ('b') 12 LOAD_NAME 2 (b) 15 CALL_FUNCTION 0 (0 positional, 0 keyword pair) 18 CALL_FUNCTION_VAR 256 (0 positional, 1 keyword pair) 21 RETURN_VALUE Joshua, we could make function calls take: x lists y dictionaries one optional list z dictionaries but we as well do all the merging in advance: one optional list one optional dictionary one optional list one optional dictionary which is representable in three bits, but four is easier to decode I think. ---------- nosy: +neil.g _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue23316> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com