- 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:
Guido van Rossum 2003-02-13 22:07:59 +00:00
parent 5aa3da6495
commit 4b499dd3fb
10 changed files with 47 additions and 13 deletions

View file

@ -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;

View file

@ -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)