summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-11-22 05:30:46 (GMT)
committerGitHub <noreply@github.com>2020-11-22 05:30:46 (GMT)
commitdd20643b144d1c81989d235c3ec51f18fda618c2 (patch)
treeed091e9733947681fcc7de7bd43af76453acbc83
parent748d38bf529d71d87cc7ef6d63e9df7d7d771ac9 (diff)
downloadcpython-dd20643b144d1c81989d235c3ec51f18fda618c2.zip
cpython-dd20643b144d1c81989d235c3ec51f18fda618c2.tar.gz
cpython-dd20643b144d1c81989d235c3ec51f18fda618c2.tar.bz2
bpo-42426: IDLE: Fix reporting offset of the RE error in searchengine (GH-23447)
(cherry picked from commit 453bc1da2023d6cbe362637a2e0b06d0521f013c) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-rw-r--r--Lib/idlelib/NEWS.txt2
-rw-r--r--Lib/idlelib/idle_test/test_searchengine.py6
-rw-r--r--Lib/idlelib/searchengine.py11
-rw-r--r--Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst1
4 files changed, 11 insertions, 9 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 6eacde9..e257ee9 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,8 @@ Released on 2020-12-07?
======================================
+bpo-42426: Fix reporting offset of the RE error in searchengine.
+
bpo-42416: Get docstrings for IDLE calltips more often
by using inspect.getdoc.
diff --git a/Lib/idlelib/idle_test/test_searchengine.py b/Lib/idlelib/idle_test/test_searchengine.py
index 3d26d62..f8401ce 100644
--- a/Lib/idlelib/idle_test/test_searchengine.py
+++ b/Lib/idlelib/idle_test/test_searchengine.py
@@ -175,11 +175,13 @@ class SearchEngineTest(unittest.TestCase):
engine.setpat('')
Equal(engine.getprog(), None)
+ Equal(Mbox.showerror.message,
+ 'Error: Empty regular expression')
engine.setpat('+')
engine.revar.set(1)
Equal(engine.getprog(), None)
- self.assertEqual(Mbox.showerror.message,
- 'Error: nothing to repeat at position 0\nPattern: +')
+ Equal(Mbox.showerror.message,
+ 'Error: nothing to repeat\nPattern: +\nOffset: 0')
def test_report_error(self):
showerror = Mbox.showerror
diff --git a/Lib/idlelib/searchengine.py b/Lib/idlelib/searchengine.py
index 911e7d4..a50038e 100644
--- a/Lib/idlelib/searchengine.py
+++ b/Lib/idlelib/searchengine.py
@@ -84,20 +84,17 @@ class SearchEngine:
flags = flags | re.IGNORECASE
try:
prog = re.compile(pat, flags)
- except re.error as what:
- args = what.args
- msg = args[0]
- col = args[1] if len(args) >= 2 else -1
- self.report_error(pat, msg, col)
+ except re.error as e:
+ self.report_error(pat, e.msg, e.pos)
return None
return prog
- def report_error(self, pat, msg, col=-1):
+ def report_error(self, pat, msg, col=None):
# Derived class could override this with something fancier
msg = "Error: " + str(msg)
if pat:
msg = msg + "\nPattern: " + str(pat)
- if col >= 0:
+ if col is not None:
msg = msg + "\nOffset: " + str(col)
tkMessageBox.showerror("Regular expression error",
msg, master=self.root)
diff --git a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst
new file mode 100644
index 0000000..0ab7972
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst
@@ -0,0 +1 @@
+Fix reporting offset of the RE error in searchengine.