This revision was automatically updated to reflect the committed changes. Closed by commit rG4ba5da8e3d38: Improve optional formatter (authored by Walter Erquinigo <wall...@fb.com>).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D114450/new/ https://reviews.llvm.org/D114450 Files: lldb/examples/synthetic/gnu_libstdcpp.py lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py Index: lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py =================================================================== --- lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py +++ lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py @@ -12,6 +12,15 @@ def do_test_with_run_command(self, stdlib_type): """Test that that file and class static variables display correctly.""" + # This is the function to remove the custom formats in order to have a + # clean slate for the next test case. + def cleanup(): + self.runCmd('type format clear', check=False) + self.runCmd('type summary clear', check=False) + self.runCmd('type filter clear', check=False) + self.runCmd('type synth clear', check=False) + self.addTearDownHook(cleanup) + self.build(dictionary={stdlib_type: "1"}) self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) Index: lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp +++ lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp @@ -45,7 +45,7 @@ // __engaged_ is a bool flag and is true if the optional contains a value. // Converting it to unsigned gives us a size of 1 if it contains a value // and 0 if not. - m_has_value = engaged_sp->GetValueAsUnsigned(0) == 1; + m_has_value = engaged_sp->GetValueAsUnsigned(0) != 0; return false; } Index: lldb/examples/synthetic/gnu_libstdcpp.py =================================================================== --- lldb/examples/synthetic/gnu_libstdcpp.py +++ lldb/examples/synthetic/gnu_libstdcpp.py @@ -1,5 +1,4 @@ from __future__ import division -import re import lldb.formatters.Logger # C++ STL formatters for LLDB @@ -22,14 +21,14 @@ try: self.payload = self.valobj.GetChildMemberWithName('_M_payload') self.value = self.payload.GetChildMemberWithName('_M_payload') - self.count = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) + self.has_value = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) != 0 except: - self.count = 0 + self.has_value = False return False def num_children(self): - return self.count + return 1 if self.has_value else 0 def get_child_index(self, name): return 0
Index: lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py =================================================================== --- lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py +++ lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/optional/TestDataFormatterGenericOptional.py @@ -12,6 +12,15 @@ def do_test_with_run_command(self, stdlib_type): """Test that that file and class static variables display correctly.""" + # This is the function to remove the custom formats in order to have a + # clean slate for the next test case. + def cleanup(): + self.runCmd('type format clear', check=False) + self.runCmd('type summary clear', check=False) + self.runCmd('type filter clear', check=False) + self.runCmd('type synth clear', check=False) + self.addTearDownHook(cleanup) + self.build(dictionary={stdlib_type: "1"}) self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) Index: lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp +++ lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp @@ -45,7 +45,7 @@ // __engaged_ is a bool flag and is true if the optional contains a value. // Converting it to unsigned gives us a size of 1 if it contains a value // and 0 if not. - m_has_value = engaged_sp->GetValueAsUnsigned(0) == 1; + m_has_value = engaged_sp->GetValueAsUnsigned(0) != 0; return false; } Index: lldb/examples/synthetic/gnu_libstdcpp.py =================================================================== --- lldb/examples/synthetic/gnu_libstdcpp.py +++ lldb/examples/synthetic/gnu_libstdcpp.py @@ -1,5 +1,4 @@ from __future__ import division -import re import lldb.formatters.Logger # C++ STL formatters for LLDB @@ -22,14 +21,14 @@ try: self.payload = self.valobj.GetChildMemberWithName('_M_payload') self.value = self.payload.GetChildMemberWithName('_M_payload') - self.count = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) + self.has_value = self.payload.GetChildMemberWithName('_M_engaged').GetValueAsUnsigned(0) != 0 except: - self.count = 0 + self.has_value = False return False def num_children(self): - return self.count + return 1 if self.has_value else 0 def get_child_index(self, name): return 0
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits