mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
libstdc++: Fix Python deprecation warning in printers.py
python/libstdcxx/v6/printers.py:1355: DeprecationWarning: 'count' is passed as positional argument The Python docs say: Deprecated since version 3.13: Passing count and flags as positional arguments is deprecated. In future Python versions they will be keyword-only parameters. Using a keyword argument for count only became possible with Python 3.1 so introduce a new function to do the substitution. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (strip_fundts_namespace): New. (StdExpAnyPrinter, StdExpOptionalPrinter): Use it.
This commit is contained in:
parent
cc217a1ecb
commit
b9e98bb991
@ -220,6 +220,16 @@ def strip_versioned_namespace(typename):
|
||||
return typename.replace(_versioned_namespace, '')
|
||||
|
||||
|
||||
def strip_fundts_namespace(typ):
|
||||
"""Remove "fundamentals_vN" inline namespace from qualified type name."""
|
||||
pattern = r'^std::experimental::fundamentals_v\d::'
|
||||
repl = 'std::experimental::'
|
||||
if sys.version_info[0] == 2:
|
||||
return re.sub(pattern, repl, typ, 1)
|
||||
else: # Technically this needs Python 3.1 but nobody should be using 3.0
|
||||
return re.sub(pattern, repl, typ, count=1)
|
||||
|
||||
|
||||
def strip_inline_namespaces(type_str):
|
||||
"""Remove known inline namespaces from the canonical name of a type."""
|
||||
type_str = strip_versioned_namespace(type_str)
|
||||
@ -1355,8 +1365,7 @@ class StdExpAnyPrinter(SingleObjContainerPrinter):
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self._typename = strip_versioned_namespace(typename)
|
||||
self._typename = re.sub(r'^std::experimental::fundamentals_v\d::',
|
||||
'std::experimental::', self._typename, 1)
|
||||
self._typename = strip_fundts_namespace(self._typename)
|
||||
self._val = val
|
||||
self._contained_type = None
|
||||
contained_value = None
|
||||
@ -1449,10 +1458,8 @@ class StdExpOptionalPrinter(SingleObjContainerPrinter):
|
||||
"""Print a std::optional or std::experimental::optional."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
typename = strip_versioned_namespace(typename)
|
||||
self._typename = re.sub(
|
||||
r'^std::(experimental::|)(fundamentals_v\d::|)(.*)',
|
||||
r'std::\1\3', typename, 1)
|
||||
self._typename = strip_versioned_namespace(typename)
|
||||
self._typename = strip_fundts_namespace(self._typename)
|
||||
payload = val['_M_payload']
|
||||
if self._typename.startswith('std::experimental'):
|
||||
engaged = val['_M_engaged']
|
||||
|
Loading…
Reference in New Issue
Block a user