mirror of
https://github.com/python/cpython.git
synced 2025-07-19 17:25:54 +00:00
- 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.)
This commit is contained in:
parent
5aa3da6495
commit
4b499dd3fb
10 changed files with 47 additions and 13 deletions
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue