summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Core/ValueObject.h27
-rw-r--r--lldb/source/Commands/CommandObjectExpression.cpp4
-rw-r--r--lldb/source/Core/ValueObject.cpp19
-rw-r--r--lldb/test/lang/objc/foundation/TestObjCMethods2.py2
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):
OpenPOWER on IntegriCloud