diff options
author | Guido van Rossum <guido@python.org> | 2003-02-13 22:07:59 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-02-13 22:07:59 (GMT) |
commit | 4b499dd3fb49181efbd99f87e45ff923146cba8a (patch) | |
tree | 2e70f5af9af45cf05d7cfa7eb8306b6dde1d001c /Python | |
parent | 5aa3da649554f155dd0c82bfdcc92b1577c6935d (diff) | |
download | cpython-4b499dd3fb49181efbd99f87e45ff923146cba8a.zip cpython-4b499dd3fb49181efbd99f87e45ff923146cba8a.tar.gz cpython-4b499dd3fb49181efbd99f87e45ff923146cba8a.tar.bz2 |
- Finally fixed the bug in compile() and exec where a string ending
with an indented code block but no newline would raise SyntaxError.
This would have been a four-line change in parsetok.c... Except
codeop.py depends on this behavior, so a compilation flag had to be
invented that causes the tokenizer to revert to the old behavior;
this required extra changes to 2 .h files, 2 .c files, and 2 .py
files. (Fixes SF bug #501622.)
Diffstat (limited to 'Python')
-rw-r--r-- | Python/bltinmodule.c | 4 | ||||
-rw-r--r-- | Python/pythonrun.c | 8 |
2 files changed, 5 insertions, 7 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 338e38d..62aa512 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -380,7 +380,9 @@ builtin_compile(PyObject *self, PyObject *args) return NULL; } - if (supplied_flags & ~(PyCF_MASK | PyCF_MASK_OBSOLETE)) { + if (supplied_flags & + ~(PyCF_MASK | PyCF_MASK_OBSOLETE | PyCF_DONT_IMPLY_DEDENT)) + { PyErr_SetString(PyExc_ValueError, "compile(): unrecognised flags"); return NULL; diff --git a/Python/pythonrun.c b/Python/pythonrun.c index fa72fe8..1faab50 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -548,13 +548,9 @@ PyRun_InteractiveOne(FILE *fp, const char *filename) } /* compute parser flags based on compiler flags */ -#if 0 /* future keyword */ #define PARSER_FLAGS(flags) \ - (((flags) && (flags)->cf_flags & CO_GENERATOR_ALLOWED) ? \ - PyPARSE_YIELD_IS_KEYWORD : 0) -#else -#define PARSER_FLAGS(flags) 0 -#endif + (((flags) && (flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \ + PyPARSE_DONT_IMPLY_DEDENT : 0) int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags) |