summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-08-17 20:47:47 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-08-17 20:47:47 (GMT)
commite2c18e90dace36a90b5aa83b8974a5fac8f67e43 (patch)
tree8f3f491a98f8a8bc04f123140d8edb9760644787
parent9676b22cd70ba83b8f03c5d2191892236d9dbd0d (diff)
downloadcpython-e2c18e90dace36a90b5aa83b8974a5fac8f67e43.zip
cpython-e2c18e90dace36a90b5aa83b8974a5fac8f67e43.tar.gz
cpython-e2c18e90dace36a90b5aa83b8974a5fac8f67e43.tar.bz2
ceval, PyEval_MergeCompilerFlags: wasn't merging in the
CO_FUTURE_DIVISION flag. Redid this to use Jeremy's PyCF_MASK #define instead, so we dont have to remember to fiddle individual feature names here again. pythonrun.h: Also #define a PyCF_MASK_OBSOLETE mask. This isn't used yet, but will be as part of the PEP 264 implementation (compile() mustn't raise an error just because old code uses a flag name that's become obsolete; a warning may be appropriate, but not an error; so compile() has to know about obsolete flags too, but nobody is going to remember to update compile() with individual obsolete flag names across releases either -- i.e., this is the flip side of PyEval_MergeCompilerFlags's oversight).
-rw-r--r--Include/pythonrun.h2
-rw-r--r--Python/ceval.c9
2 files changed, 5 insertions, 6 deletions
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index 95ac15c..6d3a6d8 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -8,6 +8,8 @@ extern "C" {
#endif
#define PyCF_MASK (CO_GENERATOR_ALLOWED | CO_FUTURE_DIVISION)
+#define PyCF_MASK_OBSOLETE (CO_NESTED)
+
typedef struct {
int cf_flags; /* bitmask of CO_xxx flags relevant to future */
} PyCompilerFlags;
diff --git a/Python/ceval.c b/Python/ceval.c
index 6ee8ae3..d3898fb 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2928,13 +2928,10 @@ PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
if (current_frame != NULL) {
const int codeflags = current_frame->f_code->co_flags;
- if (codeflags & CO_NESTED) {
+ const int compilerflags = codeflags & PyCF_MASK;
+ if (compilerflags) {
result = 1;
- cf->cf_flags |= CO_NESTED;
- }
- if (codeflags & CO_GENERATOR_ALLOWED) {
- result = 1;
- cf->cf_flags |= CO_GENERATOR_ALLOWED;
+ cf->cf_flags |= compilerflags;
}
}
return result;