[Lldb-commits] [lldb] r249507 - Route the preferred-display-language mechanism to the ValueObjectPrinter and actually fill in a few gaps for dynamic and synthetic values to be able to adopt this in useful ways
Zachary Turner via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 6 21:20:04 PDT 2015
Actually upon further inspection it looks like the test that was updated
was not really anything new, but an update of an existing test to pass a
new argument through.
Can you add some tests that test this specific functionality?
On Tue, Oct 6, 2015 at 9:09 PM Zachary Turner <zturner at google.com> wrote:
> It looks like there's only 1 test added for all of this functionality from
> this and the last few commits, and that the test is specific to Objective
> C. The functionality itself seems language agnostic though. Is there any
> way to write a test that does not rely on a particular language? That
> would improve the test coverage of this functionality.
>
> On Tue, Oct 6, 2015 at 7:38 PM Enrico Granata via lldb-commits <
> lldb-commits at lists.llvm.org> wrote:
>
>> Author: enrico
>> Date: Tue Oct 6 21:36:35 2015
>> New Revision: 249507
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=249507&view=rev
>> Log:
>> Route the preferred-display-language mechanism to the ValueObjectPrinter
>> and actually fill in a few gaps for dynamic and synthetic values to be able
>> to adopt this in useful ways
>>
>>
>> Modified:
>> lldb/trunk/include/lldb/Core/ValueObject.h
>> lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
>> lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
>> lldb/trunk/include/lldb/DataFormatters/ValueObjectPrinter.h
>> lldb/trunk/source/Commands/CommandObjectExpression.cpp
>> lldb/trunk/source/Commands/CommandObjectFrame.cpp
>> lldb/trunk/source/Core/ValueObject.cpp
>> lldb/trunk/source/Core/ValueObjectConstResult.cpp
>> lldb/trunk/source/Core/ValueObjectDynamicValue.cpp
>> lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp
>> lldb/trunk/source/DataFormatters/ValueObjectPrinter.cpp
>>
>> lldb/trunk/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
>>
>> Modified: lldb/trunk/include/lldb/Core/ValueObject.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/include/lldb/Core/ValueObject.h (original)
>> +++ lldb/trunk/include/lldb/Core/ValueObject.h Tue Oct 6 21:36:35 2015
>> @@ -1242,6 +1242,9 @@ protected:
>> bool
>> IsChecksumEmpty ();
>>
>> + void
>> + SetPreferredDisplayLanguageIfNeeded (lldb::LanguageType);
>> +
>> private:
>> //------------------------------------------------------------------
>> // For ValueObject only
>>
>> Modified: lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h (original)
>> +++ lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h Tue Oct 6
>> 21:36:35 2015
>> @@ -105,6 +105,12 @@ public:
>> virtual TypeImpl
>> GetTypeImpl ();
>>
>> + virtual lldb::LanguageType
>> + GetPreferredDisplayLanguage ();
>> +
>> + void
>> + SetPreferredDisplayLanguage (lldb::LanguageType);
>> +
>> virtual bool
>> GetDeclaration (Declaration &decl);
>>
>>
>> Modified: lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h (original)
>> +++ lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h Tue Oct 6
>> 21:36:35 2015
>> @@ -152,6 +152,12 @@ public:
>> virtual void
>> SetFormat (lldb::Format format);
>>
>> + virtual lldb::LanguageType
>> + GetPreferredDisplayLanguage ();
>> +
>> + void
>> + SetPreferredDisplayLanguage (lldb::LanguageType);
>> +
>> virtual bool
>> GetDeclaration (Declaration &decl);
>>
>>
>> Modified: lldb/trunk/include/lldb/DataFormatters/ValueObjectPrinter.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/DataFormatters/ValueObjectPrinter.h?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/include/lldb/DataFormatters/ValueObjectPrinter.h (original)
>> +++ lldb/trunk/include/lldb/DataFormatters/ValueObjectPrinter.h Tue Oct
>> 6 21:36:35 2015
>> @@ -61,6 +61,7 @@ struct DumpValueObjectOptions
>> lldb::Format m_format = lldb::eFormatDefault;
>> lldb::TypeSummaryImplSP m_summary_sp;
>> std::string m_root_valobj_name;
>> + lldb::LanguageType m_varformat_language = lldb::eLanguageTypeUnknown;
>> PointerDepth m_max_ptr_depth;
>> bool m_use_synthetic : 1;
>> bool m_scope_already_checked : 1;
>> @@ -252,6 +253,13 @@ struct DumpValueObjectOptions
>> return *this;
>> }
>>
>> + DumpValueObjectOptions&
>> + SetVariableFormatDisplayLanguage (lldb::LanguageType lang =
>> lldb::eLanguageTypeUnknown)
>> + {
>> + m_varformat_language = lang;
>> + return *this;
>> + }
>> +
>> DumpValueObjectOptions&
>> SetRunValidator (bool run = true)
>> {
>>
>> Modified: lldb/trunk/source/Commands/CommandObjectExpression.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectExpression.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Commands/CommandObjectExpression.cpp (original)
>> +++ lldb/trunk/source/Commands/CommandObjectExpression.cpp Tue Oct 6
>> 21:36:35 2015
>> @@ -335,6 +335,7 @@ CommandObjectExpression::EvaluateExpress
>> result_valobj_sp->SetFormat (format);
>>
>> DumpValueObjectOptions
>> options(m_varobj_options.GetAsDumpOptions(m_command_options.m_verbosity,format));
>> +
>> options.SetVariableFormatDisplayLanguage(result_valobj_sp->GetPreferredDisplayLanguage());
>>
>> result_valobj_sp->Dump(*output_stream,options);
>>
>>
>> Modified: lldb/trunk/source/Commands/CommandObjectFrame.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectFrame.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Commands/CommandObjectFrame.cpp (original)
>> +++ lldb/trunk/source/Commands/CommandObjectFrame.cpp Tue Oct 6 21:36:35
>> 2015
>> @@ -500,6 +500,7 @@ protected:
>> }
>>
>> options.SetFormat(format);
>> +
>> options.SetVariableFormatDisplayLanguage(valobj_sp->GetPreferredDisplayLanguage());
>>
>> Stream &output_stream =
>> result.GetOutputStream();
>>
>> options.SetRootValueObjectName(valobj_sp->GetParent() ? name_cstr : NULL);
>> @@ -586,6 +587,7 @@ protected:
>> }
>>
>> options.SetFormat(format);
>> +
>> options.SetVariableFormatDisplayLanguage(valobj_sp->GetPreferredDisplayLanguage());
>>
>> options.SetRootValueObjectName(name_cstr);
>>
>> valobj_sp->Dump(result.GetOutputStream(),options);
>> }
>>
>> Modified: lldb/trunk/source/Core/ValueObject.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Core/ValueObject.cpp (original)
>> +++ lldb/trunk/source/Core/ValueObject.cpp Tue Oct 6 21:36:35 2015
>> @@ -4259,6 +4259,13 @@ ValueObject::SetPreferredDisplayLanguage
>> m_preferred_display_language = lt;
>> }
>>
>> +void
>> +ValueObject::SetPreferredDisplayLanguageIfNeeded (lldb::LanguageType lt)
>> +{
>> + if (m_preferred_display_language == lldb::eLanguageTypeUnknown)
>> + SetPreferredDisplayLanguage(lt);
>> +}
>> +
>> bool
>> ValueObject::CanProvideValue ()
>> {
>>
>> Modified: lldb/trunk/source/Core/ValueObjectConstResult.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectConstResult.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Core/ValueObjectConstResult.cpp (original)
>> +++ lldb/trunk/source/Core/ValueObjectConstResult.cpp Tue Oct 6 21:36:35
>> 2015
>> @@ -374,5 +374,7 @@ ValueObjectConstResult::Cast (const Comp
>> lldb::LanguageType
>> ValueObjectConstResult::GetPreferredDisplayLanguage ()
>> {
>> - return lldb::eLanguageTypeUnknown;
>> + if (m_preferred_display_language != lldb::eLanguageTypeUnknown)
>> + return m_preferred_display_language;
>> + return GetCompilerTypeImpl().GetMinimumLanguage();
>> }
>>
>> Modified: lldb/trunk/source/Core/ValueObjectDynamicValue.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectDynamicValue.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Core/ValueObjectDynamicValue.cpp (original)
>> +++ lldb/trunk/source/Core/ValueObjectDynamicValue.cpp Tue Oct 6
>> 21:36:35 2015
>> @@ -391,6 +391,27 @@ ValueObjectDynamicValue::SetData (DataEx
>> return ret_val;
>> }
>>
>> +void
>> +ValueObjectDynamicValue::SetPreferredDisplayLanguage (lldb::LanguageType
>> lang)
>> +{
>> + this->ValueObject::SetPreferredDisplayLanguage(lang);
>> + if (m_parent)
>> + m_parent->SetPreferredDisplayLanguage(lang);
>> +}
>> +
>> +lldb::LanguageType
>> +ValueObjectDynamicValue::GetPreferredDisplayLanguage ()
>> +{
>> + if (m_preferred_display_language == lldb::eLanguageTypeUnknown)
>> + {
>> + if (m_parent)
>> + return m_parent->GetPreferredDisplayLanguage();
>> + return lldb::eLanguageTypeUnknown;
>> + }
>> + else
>> + return m_preferred_display_language;
>> +}
>> +
>> bool
>> ValueObjectDynamicValue::GetDeclaration (Declaration &decl)
>> {
>>
>> Modified: lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp (original)
>> +++ lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp Tue Oct 6
>> 21:36:35 2015
>> @@ -223,6 +223,7 @@ ValueObjectSynthetic::GetChildAtIndex (s
>> if (!synth_guy)
>> return synth_guy;
>> m_children_byindex.SetValueForKey(idx, synth_guy.get());
>> +
>> synth_guy->SetPreferredDisplayLanguageIfNeeded(GetPreferredDisplayLanguage());
>> return synth_guy;
>> }
>> else
>> @@ -315,6 +316,27 @@ ValueObjectSynthetic::SetFormat (lldb::F
>> this->ClearUserVisibleData(eClearUserVisibleDataItemsAll);
>> }
>>
>> +void
>> +ValueObjectSynthetic::SetPreferredDisplayLanguage (lldb::LanguageType
>> lang)
>> +{
>> + this->ValueObject::SetPreferredDisplayLanguage(lang);
>> + if (m_parent)
>> + m_parent->SetPreferredDisplayLanguage(lang);
>> +}
>> +
>> +lldb::LanguageType
>> +ValueObjectSynthetic::GetPreferredDisplayLanguage ()
>> +{
>> + if (m_preferred_display_language == lldb::eLanguageTypeUnknown)
>> + {
>> + if (m_parent)
>> + return m_parent->GetPreferredDisplayLanguage();
>> + return lldb::eLanguageTypeUnknown;
>> + }
>> + else
>> + return m_preferred_display_language;
>> +}
>> +
>> bool
>> ValueObjectSynthetic::GetDeclaration (Declaration &decl)
>> {
>>
>> Modified: lldb/trunk/source/DataFormatters/ValueObjectPrinter.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/DataFormatters/ValueObjectPrinter.cpp?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> --- lldb/trunk/source/DataFormatters/ValueObjectPrinter.cpp (original)
>> +++ lldb/trunk/source/DataFormatters/ValueObjectPrinter.cpp Tue Oct 6
>> 21:36:35 2015
>> @@ -26,6 +26,7 @@ DumpValueObjectOptions()
>> {
>> m_use_dynamic = valobj.GetDynamicValueType();
>> m_use_synthetic = valobj.IsSynthetic();
>> + m_varformat_language = valobj.GetPreferredDisplayLanguage();
>> }
>>
>> ValueObjectPrinter::ValueObjectPrinter (ValueObject* valobj,
>> @@ -354,10 +355,10 @@ ValueObjectPrinter::GetValueSummaryError
>> {
>> TypeSummaryImpl* entry = GetSummaryFormatter();
>> if (entry)
>> - m_valobj->GetSummaryAsCString(entry, summary);
>> + m_valobj->GetSummaryAsCString(entry, summary,
>> options.m_varformat_language);
>> else
>> {
>> - const char* sum_cstr = m_valobj->GetSummaryAsCString();
>> + const char* sum_cstr =
>> m_valobj->GetSummaryAsCString(options.m_varformat_language);
>> if (sum_cstr)
>> summary.assign(sum_cstr);
>> }
>>
>> Modified:
>> lldb/trunk/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
>> URL:
>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py?rev=249507&r1=249506&r2=249507&view=diff
>>
>> ==============================================================================
>> ---
>> lldb/trunk/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
>> (original)
>> +++
>> lldb/trunk/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
>> Tue Oct 6 21:36:35 2015
>> @@ -387,7 +387,6 @@ class ObjCDataFormatterTestCase(TestBase
>> self.addTearDownHook(cleanup)
>>
>> # check formatters for common Objective-C types
>> - self.runCmd("log timers enable")
>> expect_strings = ['(CFGregorianUnits) cf_greg_units = 1 years, 3
>> months, 5 days, 12 hours, 5 minutes 7 seconds',
>> '(CFRange) cf_range = location=4 length=4',
>> '(NSPoint) ns_point = (x = 4, y = 4)',
>> @@ -414,7 +413,6 @@ class ObjCDataFormatterTestCase(TestBase
>>
>> self.expect("frame variable",
>> substrs = expect_strings)
>> - self.runCmd('log timers dump')
>>
>>
>> def kvo_data_formatter_commands(self):
>>
>>
>> _______________________________________________
>> lldb-commits mailing list
>> lldb-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20151007/cbda21d2/attachment-0001.html>
More information about the lldb-commits
mailing list