shafik created this revision. shafik added a reviewer: jingham. Herald added a reviewer: EricWF. Herald added a subscriber: christof.
This previous fix https://github.com/llvm-mirror/lldb/commit/5469bda296c183d1b6bf74597c88c9ed667b3145 did not have a test since we did not have a reproducer. This is related to how formatters deal with pointers and references. The added tests both the new behavior and covers the previous bug fix as well. https://reviews.llvm.org/D60588 Files: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp Index: source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -490,7 +490,7 @@ cpp_category_sp, lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator, "libc++ std::list synthetic children", - ConstString("^std::__[[:alnum:]]+::list<.+>(( )?&)?$"), stl_synth_flags, + ConstString("^std::__[[:alnum:]]+::list<.+>(( )?&)?$"), stl_deref_flags, true); AddCXXSynthetic( cpp_category_sp, Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp @@ -8,7 +8,8 @@ int main() { int_list numbers_list; - + std::list<int>* list_ptr = &numbers_list; + printf("// Set break point at this line."); (numbers_list.push_back(0x12345678)); (numbers_list.push_back(0x11223344)); Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py @@ -162,6 +162,10 @@ '[2] = ', '3', '[3] = ', '4']) + ListPtr = self.frame().FindVariable("list_ptr") + self.assertTrue(ListPtr.GetChildAtIndex( + 0).GetValueAsUnsigned(0) == 1, "[0] = 1") + # check that MightHaveChildren() gets it right self.assertTrue( self.frame().FindVariable("numbers_list").MightHaveChildren(),
Index: source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -490,7 +490,7 @@ cpp_category_sp, lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator, "libc++ std::list synthetic children", - ConstString("^std::__[[:alnum:]]+::list<.+>(( )?&)?$"), stl_synth_flags, + ConstString("^std::__[[:alnum:]]+::list<.+>(( )?&)?$"), stl_deref_flags, true); AddCXXSynthetic( cpp_category_sp, Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/main.cpp @@ -8,7 +8,8 @@ int main() { int_list numbers_list; - + std::list<int>* list_ptr = &numbers_list; + printf("// Set break point at this line."); (numbers_list.push_back(0x12345678)); (numbers_list.push_back(0x11223344)); Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py @@ -162,6 +162,10 @@ '[2] = ', '3', '[3] = ', '4']) + ListPtr = self.frame().FindVariable("list_ptr") + self.assertTrue(ListPtr.GetChildAtIndex( + 0).GetValueAsUnsigned(0) == 1, "[0] = 1") + # check that MightHaveChildren() gets it right self.assertTrue( self.frame().FindVariable("numbers_list").MightHaveChildren(),
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits