summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-06-11 00:14:16 (GMT)
committerGitHub <noreply@github.com>2020-06-11 00:14:16 (GMT)
commite3ce3bba9277a7c4cfde5aaf6269b6c68f334176 (patch)
treee5fcc2e35df0773ae91ae0a9e4aac56110476d4b /Parser
parent18e07ba931c68eb5ab5262d4e57fe58c302686de (diff)
downloadcpython-e3ce3bba9277a7c4cfde5aaf6269b6c68f334176.zip
cpython-e3ce3bba9277a7c4cfde5aaf6269b6c68f334176.tar.gz
cpython-e3ce3bba9277a7c4cfde5aaf6269b6c68f334176.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> (cherry picked from commit 896f4cf63f9ab93e30572d879a5719d5aa2499fb) Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
Diffstat (limited to 'Parser')
-rw-r--r--Parser/tokenizer.c3
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