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 /Parser | |
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 'Parser')
-rw-r--r-- | Parser/parsetok.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Parser/parsetok.c b/Parser/parsetok.c index 82a5450..0b3e957 100644 --- a/Parser/parsetok.c +++ b/Parser/parsetok.c @@ -130,6 +130,15 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret, if (type == ENDMARKER && started) { type = NEWLINE; /* Add an extra newline */ started = 0; + /* Add the right number of dedent tokens, + except if a certain flag is given -- + codeop.py uses this. */ + if (tok->indent && + !(flags & PyPARSE_DONT_IMPLY_DEDENT)) + { + tok->pendin = -tok->indent; + tok->indent = 0; + } } else started = 1; |