diff options
Diffstat (limited to 'Include/code.h')
| -rw-r--r-- | Include/code.h | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/Include/code.h b/Include/code.h index 7c7e5bf8dc..56e6ec18af 100644 --- a/Include/code.h +++ b/Include/code.h @@ -21,7 +21,12 @@ typedef struct {      PyObject *co_varnames;	/* tuple of strings (local variable names) */      PyObject *co_freevars;	/* tuple of strings (free variable names) */      PyObject *co_cellvars;      /* tuple of strings (cell variable names) */ -    /* The rest doesn't count for hash or comparisons */ +    /* The rest aren't used in either hash or comparisons, except for +       co_name (used in both) and co_firstlineno (used only in +       comparisons).  This is done to preserve the name and line number +       for tracebacks and debuggers; otherwise, constant de-duplication +       would collapse identical functions/lambdas defined on different lines. +    */      unsigned char *co_cell2arg; /* Maps cell vars which are arguments. */      PyObject *co_filename;	/* unicode (where it was loaded from) */      PyObject *co_name;		/* unicode (name, for reference) */ @@ -46,6 +51,11 @@ typedef struct {  */  #define CO_NOFREE       0x0040 +/* The CO_COROUTINE flag is set for coroutine functions (defined with +   ``async def`` keywords) */ +#define CO_COROUTINE            0x0080 +#define CO_ITERABLE_COROUTINE   0x0100 +  /* These are no longer used. */  #if 0  #define CO_GENERATOR_ALLOWED    0x1000 @@ -57,6 +67,7 @@ typedef struct {  #define CO_FUTURE_UNICODE_LITERALS 0x20000  #define CO_FUTURE_BARRY_AS_BDFL  0x40000 +#define CO_FUTURE_GENERATOR_STOP  0x80000  /* This value is found in the co_cell2arg array when the associated cell     variable does not correspond to an argument. The maximum number of | 
