diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-28 23:49:17 +0000 |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-28 23:49:17 +0000 |
commit | 7690151c7e95f38b91a9c572ce29b4d8a4ca671d (patch) | |
tree | fb8eb51104f6aaa895c37c4c144072be016674f5 /Include/opcode.h | |
parent | 93a7c0fe6b2186448ebe35a5af0ac3880d8f16fc (diff) | |
download | cpython-git-7690151c7e95f38b91a9c572ce29b4d8a4ca671d.tar.gz |
slightly modified version of Greg Ewing's extended call syntax patch
executive summary:
Instead of typing 'apply(f, args, kwargs)' you can type 'f(*arg, **kwargs)'.
Some file-by-file details follow.
Grammar/Grammar:
simplify varargslist, replacing '*' '*' with '**'
add * & ** options to arglist
Include/opcode.h & Lib/dis.py:
define three new opcodes
CALL_FUNCTION_VAR
CALL_FUNCTION_KW
CALL_FUNCTION_VAR_KW
Python/ceval.c:
extend TypeError "keyword parameter redefined" message to include
the name of the offending keyword
reindent CALL_FUNCTION using four spaces
add handling of sequences and dictionaries using extend calls
fix function import_from to use PyErr_Format
Diffstat (limited to 'Include/opcode.h')
-rw-r--r-- | Include/opcode.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Include/opcode.h b/Include/opcode.h index 8b6890fe27..0e15497e08 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -138,10 +138,17 @@ PERFORMANCE OF THIS SOFTWARE. for new opcodes. */ #define RAISE_VARARGS 130 /* Number of raise arguments (1, 2 or 3) */ +/* CALL_FUNCTION_XXX opcodes defined below depend on this definition */ #define CALL_FUNCTION 131 /* #args + (#kwargs<<8) */ #define MAKE_FUNCTION 132 /* #defaults */ #define BUILD_SLICE 133 /* Number of items */ +/* The next 3 opcodes must be contiguous and satisfy + (CALL_FUNCTION_STAR - CALL_FUNCTION) & 3 == 1 */ +#define CALL_FUNCTION_VAR 140 /* #args + (#kwargs<<8) */ +#define CALL_FUNCTION_KW 141 /* #args + (#kwargs<<8) */ +#define CALL_FUNCTION_VAR_KW 142 /* #args + (#kwargs<<8) */ + /* Comparison operator codes (argument to COMPARE_OP) */ enum cmp_op {LT, LE, EQ, NE, GT, GE, IN, NOT_IN, IS, IS_NOT, EXC_MATCH, BAD}; |