diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-09-22 11:06:41 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2016-09-22 11:06:41 +0100 |
commit | 6fdc74c91b2d1dc12544a351721d647be1a84085 (patch) | |
tree | 0661d922cfaf405d48e8eb51b75f04efaf6e44b1 | |
parent | 64626fcaaaa2584a244db423d48e5bebfc6ade33 (diff) | |
download | gcc-6fdc74c91b2d1dc12544a351721d647be1a84085.zip gcc-6fdc74c91b2d1dc12544a351721d647be1a84085.tar.gz gcc-6fdc74c91b2d1dc12544a351721d647be1a84085.tar.bz2 |
Update pretty printer for std::variant
* python/libstdcxx/v6/printers.py (StdVariantPrinter): Adjust for
recent change to _Variant_storage.
* testsuite/libstdc++-prettyprinters/cxx17.cc: Test variant with
reference type.
From-SVN: r240345
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/python/libstdcxx/v6/printers.py | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 080b470..e9bb0ce 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2016-09-22 Jonathan Wakely <jwakely@redhat.com> + * python/libstdcxx/v6/printers.py (StdVariantPrinter): Adjust for + recent change to _Variant_storage. + * testsuite/libstdc++-prettyprinters/cxx17.cc: Test variant with + reference type. + * include/bits/uses_allocator.h (__uses_allocator_construct): Qualify std::forward and ::new. Cast pointer to void*. * include/std/variant (_Variant_storage, _Union, _Variant_base) diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index ac529dd..18c6f6b 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -994,7 +994,7 @@ class StdVariantPrinter(SingleObjContainerPrinter): visualizer = None else: self.contained_type = alternatives[int(self.index)] - addr = val['_M_first']['_M_storage'].address + addr = val['_M_union']['_M_first']['_M_storage'].address contained_value = addr.cast(self.contained_type.pointer()).dereference() visualizer = gdb.default_visualizer(contained_value) super (StdVariantPrinter, self).__init__(contained_value, visualizer, 'array') diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc index 42d79c0..09d79e9 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc @@ -84,6 +84,9 @@ main() variant<float, int, string_view> v4{ str }; // { dg-final { note-test v4 {std::variant<float, int, std::string_view> [index 2] = {"string"}} } } + variant<string_view&> vref{str}; +// { dg-final { note-test vref {std::variant<std::basic_string_view<char, std::char_traits<char> > &> [index 0] = {"string"}} } } + std::cout << "\n"; return 0; // Mark SPOT } |