aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/python
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-10-03 11:14:45 -0600
committerTom Tromey <tromey@adacore.com>2023-10-04 08:23:30 -0600
commitd342c9de6a1534cbce324bcc3c7c0898ff74d386 (patch)
tree77ac67589d1f49db2d17fea956dba356c0b6927e /libstdc++-v3/python
parent83ec6e80ff0d56342fc066c2ef649036c0983529 (diff)
downloadgcc-d342c9de6a1534cbce324bcc3c7c0898ff74d386.zip
gcc-d342c9de6a1534cbce324bcc3c7c0898ff74d386.tar.gz
gcc-d342c9de6a1534cbce324bcc3c7c0898ff74d386.tar.bz2
libstdc++: _versioned_namespace is always non-None
Some code in the pretty-printers seems to assume that the _versioned_namespace global might be None (or the empty string). However, doesn't occur, as the variable is never reassigned. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py: Assume that _versioned_namespace is non-None. * python/libstdcxx/v6/xmethods.py (is_specialization_of): Assume that _versioned_namespace is non-None.
Diffstat (limited to 'libstdc++-v3/python')
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py15
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/xmethods.py3
2 files changed, 7 insertions, 11 deletions
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index 23efbd1..e370551 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -139,7 +139,7 @@ def lookup_templ_spec(templ, *args):
except gdb.error as e:
# Type not found, try again in versioned namespace.
global _versioned_namespace
- if _versioned_namespace and _versioned_namespace not in templ:
+ if _versioned_namespace not in templ:
t = t.replace('::', '::' + _versioned_namespace, 1)
try:
return gdb.lookup_type(t)
@@ -211,16 +211,13 @@ def is_specialization_of(x, template_name):
global _versioned_namespace
if isinstance(x, gdb.Type):
x = x.tag
- if _versioned_namespace:
- template_name = '(%s)?%s' % (_versioned_namespace, template_name)
+ template_name = '(%s)?%s' % (_versioned_namespace, template_name)
return re.match('^std::%s<.*>$' % template_name, x) is not None
def strip_versioned_namespace(typename):
global _versioned_namespace
- if _versioned_namespace:
- return typename.replace(_versioned_namespace, '')
- return typename
+ return typename.replace(_versioned_namespace, '')
def strip_inline_namespaces(type_str):
@@ -2355,7 +2352,7 @@ class Printer(object):
# Add a name using _GLIBCXX_BEGIN_NAMESPACE_VERSION.
def add_version(self, base, name, function):
self.add(base + name, function)
- if _versioned_namespace and '__cxx11' not in base:
+ if '__cxx11' not in base:
vbase = re.sub('^(std|__gnu_cxx)::', r'\g<0>%s' %
_versioned_namespace, base)
self.add(vbase + name, function)
@@ -2527,7 +2524,7 @@ def add_one_template_type_printer(obj, name, defargs):
printer = TemplateTypePrinter('std::__debug::' + name, defargs)
gdb.types.register_type_printer(obj, printer)
- if _versioned_namespace and '__cxx11' not in name:
+ if '__cxx11' not in name:
# Add second type printer for same type in versioned namespace:
ns = 'std::' + _versioned_namespace
# PR 86112 Cannot use dict comprehension here:
@@ -2628,7 +2625,7 @@ class FilteringTypePrinter(object):
def add_one_type_printer(obj, template, name, targ1=None):
printer = FilteringTypePrinter('std::' + template, 'std::' + name, targ1)
gdb.types.register_type_printer(obj, printer)
- if _versioned_namespace and '__cxx11' not in template:
+ if '__cxx11' not in template:
ns = 'std::' + _versioned_namespace
printer = FilteringTypePrinter(ns + template, ns + name, targ1)
gdb.types.register_type_printer(obj, printer)
diff --git a/libstdc++-v3/python/libstdcxx/v6/xmethods.py b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
index 8ccf57c..42e60eb 100644
--- a/libstdc++-v3/python/libstdcxx/v6/xmethods.py
+++ b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
@@ -39,8 +39,7 @@ def is_specialization_of(x, template_name):
"""
if isinstance(x, gdb.Type):
x = x.tag
- if _versioned_namespace:
- template_name = '(%s)?%s' % (_versioned_namespace, template_name)
+ template_name = '(%s)?%s' % (_versioned_namespace, template_name)
return re.match(r'^std::(__\d::)?%s<.*>$' % template_name, x) is not None
class LibStdCxxXMethod(gdb.xmethod.XMethod):