Use raw strings on gdb.python/py-xmethods.exp (and fix Python 3.8's "SyntaxWarning: invalid escape sequence")

The way unrecognized escape sequences are handled has changed in
Python 3.8: users now see a SyntaxWarning message, which will
eventually become a SyntaxError in future versions of Python:

  (gdb) source /blabla/gdb.python/py-xmethods/py-xmethods.py
  /blabla/gdb.python/py-xmethods/py-xmethods.py:204: SyntaxWarning: invalid escape seque
  nce \+
    'operator\+',
  /blabla/gdb.python/py-xmethods/py-xmethods.py:211: SyntaxWarning: invalid escape seque
  nce \+
    'operator\+\+',

One of our testcases, gdb.python/py-xmethods.exp, contains strings in
the form of "operator\+".  This is not recognized by Python, but is
still needed by the testsuite to work properly.  The solution is
simple: we just have to make sure these strings are marked as
raw (i.e, r"").  This is what this patch does.  I took the opportunity
to also convert other strings to raw, which, in two cases, allowed the
removal of an extra backslash.

I tested this using Python 3.7 and Python 3.8, and everything works
fine.

I think I could push this as obvious, but decided to send it to
gdb-patches just in case.

gdb/testsuite/ChangeLog:
2019-08-26  Sergio Durigan Junior  <sergiodj@redhat.com>

	* gdb.python/py-xmethods.exp: Use raw strings when passing
	arguments to SimpleXMethodMatcher.
This commit is contained in:
Sergio Durigan Junior 2019-08-25 12:10:35 -04:00
parent 37606e67df
commit d9c4ba536c
2 changed files with 23 additions and 18 deletions

View File

@ -1,3 +1,8 @@
2019-08-26 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.python/py-xmethods.exp: Use raw strings when passing
arguments to SimpleXMethodMatcher.
2019-08-22 Tom de Vries <tdevries@suse.de>
* gdb.multi/multi-term-settings.exp (coretest): Make gdb_test messages

View File

@ -199,34 +199,34 @@ class G_methods_matcher(XMethodMatcher):
global_dm_list = [
SimpleXMethodMatcher('A_plus_A',
'^dop::A$',
'operator\+',
SimpleXMethodMatcher(r'A_plus_A',
r'^dop::A$',
r'operator\+',
A_plus_A,
# This is a replacement, hence match the arg type
# exactly!
type_A.const().reference()),
SimpleXMethodMatcher('plus_plus_A',
'^dop::A$',
'operator\+\+',
SimpleXMethodMatcher(r'plus_plus_A',
r'^dop::A$',
r'operator\+\+',
plus_plus_A),
SimpleXMethodMatcher('A_geta',
'^dop::A$',
'^geta$',
SimpleXMethodMatcher(r'A_geta',
r'^dop::A$',
r'^geta$',
A_geta),
SimpleXMethodMatcher('A_getarrayind',
'^dop::A$',
'^getarrayind$',
SimpleXMethodMatcher(r'A_getarrayind',
r'^dop::A$',
r'^getarrayind$',
A_getarrayind,
type_int),
SimpleXMethodMatcher('A_indexoper',
'^dop::A$',
'operator\\[\\]',
SimpleXMethodMatcher(r'A_indexoper',
r'^dop::A$',
r'operator\[\]',
A_indexoper,
type_int),
SimpleXMethodMatcher('B_indexoper',
'^dop::B$',
'operator\\[\\]',
SimpleXMethodMatcher(r'B_indexoper',
r'^dop::B$',
r'operator\[\]',
B_indexoper,
type_int)
]