Fix TestDataFormatterLibcxxListLoop.py test
authorRaphael Isemann <teemperor@gmail.com>
Sat, 16 Feb 2019 12:13:30 +0000 (12:13 +0000)
committerRaphael Isemann <teemperor@gmail.com>
Sat, 16 Feb 2019 12:13:30 +0000 (12:13 +0000)
Summary:
The compilation of the TestDataFormatterLibcxxListLoop.py currently fails with this error:

```
functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/main.cpp:19:24: error: no member named '__value_' in 'std::__1::__list_node_base<int, void *>'
    assert(third_elem->__value_ == 3);
           ~~~~~~~~~~  ^
```

It seems the internal structure of list has changed with the 3.8 release. This patch makes the test compile with the current libc++ and with the previous libc++.

Reviewers: shafik, zturner, labath

Reviewed By: labath

Subscribers: christof, jdoerfert, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D58273

llvm-svn: 354202

lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/loop/main.cpp

index 7c623e9..e07e938 100644 (file)
@@ -15,10 +15,18 @@ int main()
     int_list *numbers_list = new int_list{1,2,3,4,5,6,7,8,9,10};
 
     printf("// Set break point at this line.");
+
+#if _LIBCPP_VERSION >= 3800
+    auto *third_elem = numbers_list->__end_.__next_->__next_->__next_;
+    assert(third_elem->__as_node()->__value_ == 3);
+    auto *fifth_elem = third_elem->__next_->__next_;
+    assert(fifth_elem->__as_node()->__value_ == 5);
+#else
     auto *third_elem = numbers_list->__end_.__next_->__next_->__next_;
     assert(third_elem->__value_ == 3);
     auto *fifth_elem = third_elem->__next_->__next_;
     assert(fifth_elem->__value_ == 5);
+#endif
     fifth_elem->__next_ = third_elem;
 #endif