mirror of
https://github.com/python/cpython.git
synced 2025-07-27 05:04:15 +00:00
make sure the parser flags and passed onto the compiler
This fixes "from __future__ import unicode_literals" in an exec statment See #4225
This commit is contained in:
parent
44a90c95ce
commit
dcee09d920
5 changed files with 65 additions and 13 deletions
|
@ -1417,16 +1417,19 @@ PyParser_ASTFromString(const char *s, const char *filename, int start,
|
|||
PyCompilerFlags *flags, PyArena *arena)
|
||||
{
|
||||
mod_ty mod;
|
||||
PyCompilerFlags localflags;
|
||||
perrdetail err;
|
||||
int iflags = PARSER_FLAGS(flags);
|
||||
|
||||
node *n = PyParser_ParseStringFlagsFilenameEx(s, filename,
|
||||
&_PyParser_Grammar, start, &err,
|
||||
&iflags);
|
||||
if (flags == NULL) {
|
||||
localflags.cf_flags = 0;
|
||||
flags = &localflags;
|
||||
}
|
||||
if (n) {
|
||||
if (flags) {
|
||||
flags->cf_flags |= iflags & PyCF_MASK;
|
||||
}
|
||||
flags->cf_flags |= iflags & PyCF_MASK;
|
||||
mod = PyAST_FromNode(n, flags, filename, arena);
|
||||
PyNode_Free(n);
|
||||
return mod;
|
||||
|
@ -1443,15 +1446,18 @@ PyParser_ASTFromFile(FILE *fp, const char *filename, int start, char *ps1,
|
|||
PyArena *arena)
|
||||
{
|
||||
mod_ty mod;
|
||||
PyCompilerFlags localflags;
|
||||
perrdetail err;
|
||||
int iflags = PARSER_FLAGS(flags);
|
||||
|
||||
node *n = PyParser_ParseFileFlagsEx(fp, filename, &_PyParser_Grammar,
|
||||
start, ps1, ps2, &err, &iflags);
|
||||
if (flags == NULL) {
|
||||
localflags.cf_flags = 0;
|
||||
flags = &localflags;
|
||||
}
|
||||
if (n) {
|
||||
if (flags) {
|
||||
flags->cf_flags |= iflags & PyCF_MASK;
|
||||
}
|
||||
flags->cf_flags |= iflags & PyCF_MASK;
|
||||
mod = PyAST_FromNode(n, flags, filename, arena);
|
||||
PyNode_Free(n);
|
||||
return mod;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue