diff options
author | Guido van Rossum <guido@python.org> | 2003-02-13 22:07:59 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-02-13 22:07:59 +0000 |
commit | 69e05a124cc22e3eb35be442ac83a0d1c8e79575 (patch) | |
tree | bec08018c9d0e48095a759a5cf8f569cce448b65 /Parser | |
parent | 1437209c1fbf8157b32bea1afb3b7a672432d1e4 (diff) | |
download | cpython-69e05a124cc22e3eb35be442ac83a0d1c8e79575.tar.gz |
- 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 82a5450d8f..0b3e957e0c 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; |