summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2003-02-13 22:07:59 (GMT)
committerGuido van Rossum <guido@python.org>2003-02-13 22:07:59 (GMT)
commit4b499dd3fb49181efbd99f87e45ff923146cba8a (patch)
tree2e70f5af9af45cf05d7cfa7eb8306b6dde1d001c /Parser
parent5aa3da649554f155dd0c82bfdcc92b1577c6935d (diff)
downloadcpython-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.c9
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;