diff options
author | Lysandros Nikolaou <lisandrosnik@gmail.com> | 2020-06-10 23:56:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-10 23:56:08 (GMT) |
commit | 896f4cf63f9ab93e30572d879a5719d5aa2499fb (patch) | |
tree | b24213dfd64cf197fcab434adce912f37c3b87a7 /Parser/tokenizer.c | |
parent | 7f888c7ef905842bf7739cc03bd20398329951b5 (diff) | |
download | cpython-896f4cf63f9ab93e30572d879a5719d5aa2499fb.zip cpython-896f4cf63f9ab93e30572d879a5719d5aa2499fb.tar.gz cpython-896f4cf63f9ab93e30572d879a5719d5aa2499fb.tar.bz2 |
bpo-40847: Consider a line with only a LINECONT a blank line (GH-20769)
A line with only a line continuation character should be considered
a blank line at tokenizer level so that only a single NEWLINE token
gets emitted. The old parser was working around the issue, but the
new parser threw a `SyntaxError` for valid input. For example,
an empty line following a line continuation character was interpreted
as a `SyntaxError`.
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
Diffstat (limited to 'Parser/tokenizer.c')
-rw-r--r-- | Parser/tokenizer.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index cebfadc..d461e4e 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1203,8 +1203,9 @@ tok_get(struct tok_state *tok, const char **p_start, const char **p_end) } } tok_backup(tok, c); - if (c == '#' || c == '\n') { + if (c == '#' || c == '\n' || c == '\\') { /* Lines with only whitespace and/or comments + and/or a line continuation character shouldn't affect the indentation and are not passed to the parser as NEWLINE tokens, except *totally* empty lines in interactive |