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
This commit is contained in:
parent
64626fcaaa
commit
6fdc74c91b
@ -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)
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user