summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-04-02 06:33:25 (GMT)
committerGitHub <noreply@github.com>2018-04-02 06:33:25 (GMT)
commit16cf84b4fbe78f9d876e0335f33459f1b92b7bf0 (patch)
tree19c1b5fd99873ae3b7e5712e3b9a3cbd406e25b1 /Lib
parentd918bbda4bb201c35d1ded3dde686d8b00a91851 (diff)
downloadcpython-16cf84b4fbe78f9d876e0335f33459f1b92b7bf0.zip
cpython-16cf84b4fbe78f9d876e0335f33459f1b92b7bf0.tar.gz
cpython-16cf84b4fbe78f9d876e0335f33459f1b92b7bf0.tar.bz2
bpo-33204: IDLE: consistently color invalid string prefixes (GH-6344)
A 'u' string prefix cannot be paired with either 'r' or 'f'. Consistently color as much of the prefix, starting at the right, as is valid. (cherry picked from commit da58533ac67b01ce8f6466e6f03ff6b8b3bb04d5) Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/colorizer.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/Lib/idlelib/colorizer.py b/Lib/idlelib/colorizer.py
index ff40845..f835e58 100644
--- a/Lib/idlelib/colorizer.py
+++ b/Lib/idlelib/colorizer.py
@@ -21,7 +21,7 @@ def make_pat():
# 1st 'file' colorized normal, 2nd as builtin, 3rd as string
builtin = r"([^.'\"\\#]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
comment = any("COMMENT", [r"#[^\n]*"])
- stringprefix = r"(?i:\br|u|f|fr|rf|b|br|rb)?"
+ stringprefix = r"(?i:r|u|f|fr|rf|b|br|rb)?"
sqstring = stringprefix + r"'[^'\\\n]*(\\.[^'\\\n]*)*'?"
dqstring = stringprefix + r'"[^"\\\n]*(\\.[^"\\\n]*)*"?'
sq3string = stringprefix + r"'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?"
@@ -265,11 +265,14 @@ def _color_delegator(parent): # htest #
source = ("# Following has syntax errors\n"
"if True: then int 1\nelif False: print 0\nelse: float(None)\n"
"if iF + If + IF: 'keywork matching must respect case'\n"
- "# All valid prefixes for unicode and byte strings should be colored\n"
+ "# All valid prefixes for unicode and byte strings should be colored.\n"
"'x', '''x''', \"x\", \"\"\"x\"\"\"\n"
- "r'x', u'x', R'x', U'x', f'x', F'x', ur'is invalid'\n"
+ "r'x', u'x', R'x', U'x', f'x', F'x'\n"
"fr'x', Fr'x', fR'x', FR'x', rf'x', rF'x', Rf'x', RF'x'\n"
- "b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x'.rB'x',Rb'x',RB'x'\n")
+ "b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x'.rB'x',Rb'x',RB'x'\n"
+ "# Invalid combinations of legal characters should be half colored.\n"
+ "ur'x', ru'x', uf'x', fu'x', UR'x', ufr'x', rfu'x', xf'x', fx'x'"
+ )
text = Text(top, background="white")
text.pack(expand=1, fill="both")
text.insert("insert", source)