This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix pretty printers for versioned namespace


Hi

    When restoring versioned namespace feature I forgot to check for the pretty printer tests which are now broken.

    Here is the patch to fix those. Tested under Linux x86_64 normal and versioned namepace modes, ok to commit ?

François

diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index b7b2a0f..0a168fe 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -973,8 +973,8 @@ class StdExpAnyPrinter(SingleObjContainerPrinter):
     "Print a std::any or std::experimental::any"
 
     def __init__ (self, typename, val):
-        self.typename = re.sub('^std::experimental::fundamentals_v\d::', 'std::experimental::', typename, 1)
-        self.typename = strip_versioned_namespace(self.typename)
+        self.typename = strip_versioned_namespace(typename)
+        self.typename = re.sub('^std::experimental::fundamentals_v\d::', 'std::experimental::', self.typename, 1)
         self.val = val
         self.contained_type = None
         contained_value = None
@@ -1021,8 +1021,8 @@ class StdExpOptionalPrinter(SingleObjContainerPrinter):
 
     def __init__ (self, typename, val):
         valtype = self._recognize (val.type.template_argument(0))
-        self.typename = re.sub('^std::(experimental::|)(fundamentals_v\d::|)(.*)', r'std::\1\3<%s>' % valtype, typename, 1)
-        self.typename = strip_versioned_namespace(self.typename)
+        self.typename = strip_versioned_namespace(typename)
+        self.typename = re.sub('^std::(experimental::|)(fundamentals_v\d::|)(.*)', r'std::\1\3<%s>' % valtype, self.typename, 1)
         if not self.typename.startswith('std::experimental'):
             val = val['_M_payload']
         self.val = val
@@ -1043,8 +1043,8 @@ class StdVariantPrinter(SingleObjContainerPrinter):
 
     def __init__(self, typename, val):
         alternatives = self._template_args(val)
-        self.typename = "%s<%s>" % (typename, ', '.join([self._recognize(alt) for alt in alternatives]))
-        self.typename = strip_versioned_namespace(self.typename)
+        self.typename = strip_versioned_namespace(typename)
+        self.typename = "%s<%s>" % (self.typename, ', '.join([self._recognize(alt) for alt in alternatives]))
         self.index = val['_M_index']
         if self.index >= len(alternatives):
             self.contained_type = None
@@ -1232,7 +1232,7 @@ class Printer(object):
     # Add a name using _GLIBCXX_BEGIN_NAMESPACE_CONTAINER.
     def add_container(self, base, name, function):
         self.add_version(base, name, function)
-        self.add_version(base + '__cxx1998::', name, function)
+        self.add_version(base, '__cxx1998::' + name, function)
 
     @staticmethod
     def get_basic_type(type):
@@ -1511,7 +1511,7 @@ def build_libstdcxx_dictionary ():
     libstdcxx_printer.add_container('std::', 'bitset', StdBitsetPrinter)
     libstdcxx_printer.add_container('std::', 'deque', StdDequePrinter)
     libstdcxx_printer.add_container('std::', 'list', StdListPrinter)
-    libstdcxx_printer.add_container('std::__cxx11::', 'list', StdListPrinter)
+    libstdcxx_printer.add_container('std::', '__cxx11::list', StdListPrinter)
     libstdcxx_printer.add_container('std::', 'map', StdMapPrinter)
     libstdcxx_printer.add_container('std::', 'multimap', StdMapPrinter)
     libstdcxx_printer.add_container('std::', 'multiset', StdSetPrinter)
@@ -1581,33 +1581,33 @@ def build_libstdcxx_dictionary ():
                           StdForwardListPrinter)
 
     # Library Fundamentals TS components
-    libstdcxx_printer.add_version('std::experimental::fundamentals_v1::',
-                                  'any', StdExpAnyPrinter)
-    libstdcxx_printer.add_version('std::experimental::fundamentals_v1::',
-                                  'optional', StdExpOptionalPrinter)
-    libstdcxx_printer.add_version('std::experimental::fundamentals_v1::',
-                                  'basic_string_view', StdExpStringViewPrinter)
+    libstdcxx_printer.add_version('std::', 'experimental::fundamentals_v1::any',
+                                  StdExpAnyPrinter)
+    libstdcxx_printer.add_version('std::', 'experimental::fundamentals_v1::optional',
+                                  StdExpOptionalPrinter)
+    libstdcxx_printer.add_version('std::', 'experimental::fundamentals_v1::basic_string_view',
+                                  StdExpStringViewPrinter)
     # Filesystem TS components
-    libstdcxx_printer.add_version('std::experimental::filesystem::v1::',
-                                  'path', StdExpPathPrinter)
-    libstdcxx_printer.add_version('std::experimental::filesystem::v1::__cxx11::',
-                                  'path', StdExpPathPrinter)
-    libstdcxx_printer.add_version('std::filesystem::',
-                                  'path', StdExpPathPrinter)
-    libstdcxx_printer.add_version('std::filesystem::__cxx11::',
-                                  'path', StdExpPathPrinter)
+    libstdcxx_printer.add_version('std::', 'experimental::filesystem::v1::path',
+                                  StdExpPathPrinter)
+    libstdcxx_printer.add_version('std::', 'experimental::filesystem::v1::__cxx11::path',
+                                  StdExpPathPrinter)
+    libstdcxx_printer.add_version('std::', 'filesystem::path',
+                                  StdExpPathPrinter)
+    libstdcxx_printer.add_version('std::', 'filesystem::__cxx11::path',
+                                  StdExpPathPrinter)
 
     # C++17 components
-    libstdcxx_printer.add_version('std::',
-                                  'any', StdExpAnyPrinter)
-    libstdcxx_printer.add_version('std::',
-                                  'optional', StdExpOptionalPrinter)
-    libstdcxx_printer.add_version('std::',
-                                  'basic_string_view', StdExpStringViewPrinter)
-    libstdcxx_printer.add_version('std::',
-                                  'variant', StdVariantPrinter)
-    libstdcxx_printer.add_version('std::',
-                                  '_Node_handle', StdNodeHandlePrinter)
+    libstdcxx_printer.add_version('std::', 'any',
+                                  StdExpAnyPrinter)
+    libstdcxx_printer.add_version('std::', 'optional',
+                                  StdExpOptionalPrinter)
+    libstdcxx_printer.add_version('std::', 'basic_string_view',
+                                  StdExpStringViewPrinter)
+    libstdcxx_printer.add_version('std::', 'variant',
+                                  StdVariantPrinter)
+    libstdcxx_printer.add_version('std::', '_Node_handle',
+                                  StdNodeHandlePrinter)
 
     # Extensions.
     libstdcxx_printer.add_version('__gnu_cxx::', 'slist', StdSlistPrinter)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]