public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix pretty printers for versioned namespace
@ 2017-10-26 20:26 François Dumont
  2017-10-26 20:37 ` Jonathan Wakely
  0 siblings, 1 reply; 8+ messages in thread
From: François Dumont @ 2017-10-26 20:26 UTC (permalink / raw)
  To: libstdc++, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 271 bytes --]

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


[-- Attachment #2: printers.patch --]
[-- Type: text/x-patch, Size: 6571 bytes --]

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)

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-11-01 18:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-26 20:26 Fix pretty printers for versioned namespace François Dumont
2017-10-26 20:37 ` Jonathan Wakely
2017-10-26 20:41   ` Jonathan Wakely
2017-10-26 20:55     ` Jonathan Wakely
2017-10-30 17:30       ` François Dumont
2017-10-30 18:05         ` Jonathan Wakely
2017-10-30 18:21           ` Jonathan Wakely
2017-11-01 18:04             ` François Dumont

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).