Fix unique_ptr pretty printer for empty classes
authorJonathan Wakely <jwakely@redhat.com>
Tue, 14 May 2019 11:17:18 +0000 (12:17 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 14 May 2019 11:17:18 +0000 (12:17 +0100)
commite25f488d603a6bd7570c1ffdfd9572e4b8a645de
treeff1a79dec41d39f4ee7792d10c198606b8877d59
parent1b18663e0fbd6e253feca9e1f29e6f5b5538408d
Fix unique_ptr pretty printer for empty classes

The printer was confused when unique_ptr<T,D>::pointer is an empty
class, or the deleter is not empty. Instead of assuming the tuple has a
single _M_head_impl member manually inspect the tuple base classes to
get the first element.

* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
not assume field called _M_head_impl is the first tuple element.
* testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
implementation more accurate.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
empty pointer type and non-empty deleter.

From-SVN: r271159
libstdc++-v3/ChangeLog
libstdc++-v3/python/libstdcxx/v6/printers.py
libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc