diff options
-rw-r--r-- | lldb/include/lldb/Core/ValueObject.h | 27 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectExpression.cpp | 4 | ||||
-rw-r--r-- | lldb/source/Core/ValueObject.cpp | 19 | ||||
-rw-r--r-- | lldb/test/lang/objc/foundation/TestObjCMethods2.py | 2 |
4 files changed, 41 insertions, 11 deletions
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h index 3fc250c3811..dcdcc0fab73 100644 --- a/lldb/include/lldb/Core/ValueObject.h +++ b/lldb/include/lldb/Core/ValueObject.h @@ -232,6 +232,8 @@ public: lldb::TypeSummaryImplSP m_summary_sp; std::string m_root_valobj_name; bool m_hide_root_type; + bool m_hide_name; + bool m_hide_value; DumpValueObjectOptions() : m_max_ptr_depth(0), @@ -248,7 +250,9 @@ public: m_format (lldb::eFormatDefault), m_summary_sp(), m_root_valobj_name(), - m_hide_root_type(false) // <rdar://problem/11505459> provide a special compact display for "po", + m_hide_root_type(false), // provide a special compact display for "po" + m_hide_name(false), // provide a special compact display for "po" + m_hide_value(false) // provide a special compact display for "po" {} static const DumpValueObjectOptions @@ -274,7 +278,9 @@ public: m_format(rhs.m_format), m_summary_sp(rhs.m_summary_sp), m_root_valobj_name(rhs.m_root_valobj_name), - m_hide_root_type(rhs.m_hide_root_type) + m_hide_root_type(rhs.m_hide_root_type), + m_hide_name(rhs.m_hide_name), + m_hide_value(rhs.m_hide_value) {} DumpValueObjectOptions& @@ -372,12 +378,16 @@ public: SetUseSyntheticValue(false); SetOmitSummaryDepth(UINT32_MAX); SetIgnoreCap(true); + SetHideName(false); + SetHideValue(false); } else { SetUseSyntheticValue(true); SetOmitSummaryDepth(0); SetIgnoreCap(false); + SetHideName(false); + SetHideValue(false); } return *this; } @@ -412,7 +422,20 @@ public: m_hide_root_type = hide_root_type; return *this; } + + DumpValueObjectOptions& + SetHideName (bool hide_name = false) + { + m_hide_name = hide_name; + return *this; + } + DumpValueObjectOptions& + SetHideValue (bool hide_value = false) + { + m_hide_value = hide_value; + return *this; + } }; class EvaluationPoint diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 9c4c05d2410..357d8f7526a 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -400,7 +400,9 @@ CommandObjectExpression::EvaluateExpression .SetFormat(format) .SetSummary() .SetShowSummary(!m_varobj_options.use_objc) - .SetHideRootType(m_varobj_options.use_objc); + .SetHideRootType(m_varobj_options.use_objc) + .SetHideName(m_varobj_options.use_objc) + .SetHideValue(m_varobj_options.use_objc); if (m_varobj_options.be_raw) options.SetRawDisplay(true); diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index b9a0a13b904..82b2abfc028 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -3287,10 +3287,13 @@ DumpValueObject_Impl (Stream &s, { // If we are showing types, also qualify the C++ base classes const bool qualify_cxx_base_classes = options.m_show_types; - valobj->GetExpressionPath(s, qualify_cxx_base_classes); - s.PutCString(" ="); + if (!options.m_hide_name) + { + valobj->GetExpressionPath(s, qualify_cxx_base_classes); + s.PutCString(" ="); + } } - else + else if (!options.m_hide_name) { const char *name_cstr = root_valobj_name ? root_valobj_name : valobj->GetName().AsCString(""); s.Printf ("%s =", name_cstr); @@ -3354,7 +3357,7 @@ DumpValueObject_Impl (Stream &s, // Make sure we have a value and make sure the summary didn't // specify that the value should not be printed - and do not print // the value if this thing is nil - if (!is_nil && !value_str.empty() && (entry == NULL || entry->DoesPrintValue() || sum_cstr == NULL)) + if (!is_nil && !value_str.empty() && (entry == NULL || entry->DoesPrintValue() || sum_cstr == NULL) && !options.m_hide_value) s.Printf(" %s", value_str.c_str()); if (sum_cstr) @@ -3363,11 +3366,13 @@ DumpValueObject_Impl (Stream &s, // let's avoid the overly verbose no description error for a nil thing if (options.m_use_objc && !is_nil) { + if (!options.m_hide_value || !options.m_hide_name) + s.Printf(" "); const char *object_desc = valobj->GetObjectDescription(); if (object_desc) - s.Printf(" %s\n", object_desc); + s.Printf("%s\n", object_desc); else - s.Printf (" [no Objective-C description available]\n"); + s.Printf ("[no Objective-C description available]\n"); return; } } @@ -3438,7 +3443,7 @@ DumpValueObject_Impl (Stream &s, ValueObject::DumpValueObjectOptions child_options(options); child_options.SetFormat(options.m_format).SetSummary().SetRootValueObjectName(); - child_options.SetScopeChecked(true) + child_options.SetScopeChecked(true).SetHideName(options.m_hide_name).SetHideValue(options.m_hide_value) .SetOmitSummaryDepth(child_options.m_omit_summary_depth > 1 ? child_options.m_omit_summary_depth - 1 : 0); for (size_t idx=0; idx<num_children; ++idx) { diff --git a/lldb/test/lang/objc/foundation/TestObjCMethods2.py b/lldb/test/lang/objc/foundation/TestObjCMethods2.py index 6854b8d5fe8..4ed2c9b68ec 100644 --- a/lldb/test/lang/objc/foundation/TestObjCMethods2.py +++ b/lldb/test/lang/objc/foundation/TestObjCMethods2.py @@ -216,7 +216,7 @@ class FoundationTestCase2(TestBase): self.runCmd("run", RUN_SUCCEEDED) self.expect("po [NSError errorWithDomain:@\"Hello\" code:35 userInfo:nil]", - substrs = ["$", "= 0x", "Error Domain=Hello", "Code=35", "be completed."]) + substrs = ["Error Domain=Hello", "Code=35", "be completed."]) self.runCmd("process continue") def NSError_p(self): |