Commit 01e57438 authored by Raphael Kubo da Costa's avatar Raphael Kubo da Costa Committed by Commit Bot

NGFragmentItemsBuilder: Call std::unique_ptr::get() in DCHECK.

Follow-up to commit 50c8bd96 ("Make AssociateNextForSameLayoutObject() not
to hit DCHECK for list marker"), which has a call that looks like

    DCHECK(...) << foo;

where |foo| is a std::unique_ptr fails with libstdc++ because there is no
operator<< overload for std::unique_ptr until C++20 (libc++ just happens to
have it):

    ../../third_party/blink/renderer/core/layout/ng/inline/ng_fragment_items_builder.cc:204:56: error: invalid operands to binary expression ('std::basic_ostream<char, std::char_traits<char> >::__ostream_type' (aka 'basic_ostream<char, std::char_traits<char> >') and 'std::unique_ptr<blink::NGFragmentItem, std::default_delete<blink::NGFragmentItem> >')
      DCHECK(items_.IsEmpty() || items_[0]->IsContainer()) << items_[0];
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~

Bug: 957519, 980914
Change-Id: Id9ae7ecf1bcb871c47127816703cf135630808a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1950985
Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#721931}
parent 7990d26a
...@@ -201,7 +201,10 @@ void NGFragmentItemsBuilder::AssociateNextForSameLayoutObject() { ...@@ -201,7 +201,10 @@ void NGFragmentItemsBuilder::AssociateNextForSameLayoutObject() {
// items_[0] can be: // items_[0] can be:
// - kBox for list marker, e.g. <li>abc</li> // - kBox for list marker, e.g. <li>abc</li>
// - kLine for line, e.g. <div>abc</div> // - kLine for line, e.g. <div>abc</div>
DCHECK(items_.IsEmpty() || items_[0]->IsContainer()) << items_[0]; // Calling get() is necessary below because operator<< in std::unique_ptr is
// a C++20 feature.
// TODO(https://crbug.com/980914): Drop .get() once we move to C++20.
DCHECK(items_.IsEmpty() || items_[0]->IsContainer()) << items_[0].get();
HashMap<const LayoutObject*, wtf_size_t> last_fragment_map; HashMap<const LayoutObject*, wtf_size_t> last_fragment_map;
for (wtf_size_t index = 1u; index < items_.size(); ++index) { for (wtf_size_t index = 1u; index < items_.size(); ++index) {
const NGFragmentItem& item = *items_[index]; const NGFragmentItem& item = *items_[index];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment