bpo-42426: IDLE: Fix reporting offset of the RE error in searchengine (GH-23447)
This commit is contained in:
parent
442746af64
commit
453bc1da20
|
@ -3,6 +3,8 @@ Released on 2021-10-04?
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
|
|
||||||
|
bpo-42426: Fix reporting offset of the RE error in searchengine.
|
||||||
|
|
||||||
bpo-42416: Get docstrings for IDLE calltips more often
|
bpo-42416: Get docstrings for IDLE calltips more often
|
||||||
by using inspect.getdoc.
|
by using inspect.getdoc.
|
||||||
|
|
||||||
|
|
|
@ -175,11 +175,13 @@ class SearchEngineTest(unittest.TestCase):
|
||||||
|
|
||||||
engine.setpat('')
|
engine.setpat('')
|
||||||
Equal(engine.getprog(), None)
|
Equal(engine.getprog(), None)
|
||||||
|
Equal(Mbox.showerror.message,
|
||||||
|
'Error: Empty regular expression')
|
||||||
engine.setpat('+')
|
engine.setpat('+')
|
||||||
engine.revar.set(1)
|
engine.revar.set(1)
|
||||||
Equal(engine.getprog(), None)
|
Equal(engine.getprog(), None)
|
||||||
self.assertEqual(Mbox.showerror.message,
|
Equal(Mbox.showerror.message,
|
||||||
'Error: nothing to repeat at position 0\nPattern: +')
|
'Error: nothing to repeat\nPattern: +\nOffset: 0')
|
||||||
|
|
||||||
def test_report_error(self):
|
def test_report_error(self):
|
||||||
showerror = Mbox.showerror
|
showerror = Mbox.showerror
|
||||||
|
|
|
@ -84,20 +84,17 @@ class SearchEngine:
|
||||||
flags = flags | re.IGNORECASE
|
flags = flags | re.IGNORECASE
|
||||||
try:
|
try:
|
||||||
prog = re.compile(pat, flags)
|
prog = re.compile(pat, flags)
|
||||||
except re.error as what:
|
except re.error as e:
|
||||||
args = what.args
|
self.report_error(pat, e.msg, e.pos)
|
||||||
msg = args[0]
|
|
||||||
col = args[1] if len(args) >= 2 else -1
|
|
||||||
self.report_error(pat, msg, col)
|
|
||||||
return None
|
return None
|
||||||
return prog
|
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
|
# Derived class could override this with something fancier
|
||||||
msg = "Error: " + str(msg)
|
msg = "Error: " + str(msg)
|
||||||
if pat:
|
if pat:
|
||||||
msg = msg + "\nPattern: " + str(pat)
|
msg = msg + "\nPattern: " + str(pat)
|
||||||
if col >= 0:
|
if col is not None:
|
||||||
msg = msg + "\nOffset: " + str(col)
|
msg = msg + "\nOffset: " + str(col)
|
||||||
tkMessageBox.showerror("Regular expression error",
|
tkMessageBox.showerror("Regular expression error",
|
||||||
msg, master=self.root)
|
msg, master=self.root)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix reporting offset of the RE error in searchengine.
|
Loading…
Reference in New Issue