Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 581:bae1494f2ec8 legacy-trunk
Added UNPACK_VARARG code.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 14 Jan 1992 18:29:20 +0000 |
| parents | 8c179d023583 |
| children | 0214bbf47bf6 |
line wrap: on
line diff
--- a/Python/ceval.c Tue Jan 14 18:28:36 1992 +0000 +++ b/Python/ceval.c Tue Jan 14 18:29:20 1992 +0000 @@ -639,6 +639,42 @@ err_setstr(NameError, getstringvalue(w)); break; + case UNPACK_VARARG: + if (EMPTY()) { + err_setstr(TypeError, + "no argument list"); + why = WHY_EXCEPTION; + break; + } + v = POP(); + if (!is_tupleobject(v)) { + err_setstr(TypeError, + "bad argument list"); + why = WHY_EXCEPTION; + } + else if (gettuplesize(v) < oparg) { + err_setstr(TypeError, + "not enough arguments"); + why = WHY_EXCEPTION; + } + else if (oparg == 0) { + PUSH(v); + break; + } + else { + x = gettupleslice(v, oparg, gettuplesize(v)); + if (x != NULL) { + PUSH(x); + for (; --oparg >= 0; ) { + w = gettupleitem(v, oparg); + INCREF(w); + PUSH(w); + } + } + } + DECREF(v); + break; + case UNPACK_ARG: /* Implement various compatibility hacks: (a) f(a,b,...) should accept f((1,2,...))
