[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