<rdar://problem/13365424>

Ensure that option -Y also works for expression as it does for frame variable
Also, if the user passes an explicit format specifier when printing a variable, override the summary's decision to hide the value.

This is required for scenarios like this to work:
(lldb) p/x c
(Class) $0 = 0x0000000100adb7f8 NSObject

Previously this would say:
(lldb) p/x c
(Class) $0 = NSObject

ignoring the explicit format specifier

llvm-svn: 177893
This commit is contained in:
Enrico Granata 2013-03-25 19:46:48 +00:00
parent 92bd7c0337
commit c2a58d73ce
2 changed files with 19 additions and 17 deletions

View File

@ -387,22 +387,23 @@ CommandObjectExpression::EvaluateExpression
result_valobj_sp->SetFormat (format);
ValueObject::DumpValueObjectOptions options;
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth)
.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowTypes(m_varobj_options.show_types)
.SetShowLocation(m_varobj_options.show_location)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetUseDynamicType(m_varobj_options.use_dynamic)
.SetUseSyntheticValue(m_varobj_options.use_synth)
.SetFlatOutput(m_varobj_options.flat_output)
.SetOmitSummaryDepth(m_varobj_options.no_summary_depth)
.SetIgnoreCap(m_varobj_options.ignore_cap)
.SetFormat(format)
.SetSummary()
.SetShowSummary(!m_varobj_options.use_objc)
.SetHideRootType(m_varobj_options.use_objc)
.SetHideName(m_varobj_options.use_objc)
.SetHideValue(m_varobj_options.use_objc);
options.SetMaximumPointerDepth(m_varobj_options.ptr_depth);
if (m_varobj_options.use_objc)
options.SetShowSummary(false);
else
options.SetOmitSummaryDepth(m_varobj_options.no_summary_depth);
options.SetMaximumDepth(m_varobj_options.max_depth)
.SetShowTypes(m_varobj_options.show_types)
.SetShowLocation(m_varobj_options.show_location)
.SetUseObjectiveC(m_varobj_options.use_objc)
.SetUseDynamicType(m_varobj_options.use_dynamic)
.SetUseSyntheticValue(m_varobj_options.use_synth)
.SetFlatOutput(m_varobj_options.flat_output)
.SetIgnoreCap(m_varobj_options.ignore_cap)
.SetFormat(format)
.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);

View File

@ -3396,7 +3396,8 @@ 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) && !options.m_hide_value)
// (but show the value if the user passes a format explicitly)
if (!is_nil && !value_str.empty() && (entry == NULL || (entry->DoesPrintValue() || options.m_format != eFormatDefault) || sum_cstr == NULL) && !options.m_hide_value)
s.Printf(" %s", value_str.c_str());
if (sum_cstr)