[Lldb-commits] [lldb] r252503 - Add a way for source languages to "mark" ValueObjects with language-specific flags

Enrico Granata via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 9 11:27:34 PST 2015


Author: enrico
Date: Mon Nov  9 13:27:34 2015
New Revision: 252503

URL: http://llvm.org/viewvc/llvm-project?rev=252503&view=rev
Log:
Add a way for source languages to "mark" ValueObjects with language-specific flags
In this way, when a language needs to tell itself things that are not bound to a type but to a value (imagine a base-class relation, this is not about the type, but about the ValueObject), it can do so in a clean and general fashion

The interpretation of the values of the flags is, of course, up to the language that owns the value (the value object's runtime language, that is)


Modified:
    lldb/trunk/include/lldb/Core/ValueObject.h
    lldb/trunk/include/lldb/Core/ValueObjectChild.h
    lldb/trunk/include/lldb/Core/ValueObjectConstResultChild.h
    lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
    lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
    lldb/trunk/include/lldb/Symbol/ClangASTContext.h
    lldb/trunk/include/lldb/Symbol/CompilerType.h
    lldb/trunk/include/lldb/Symbol/GoASTContext.h
    lldb/trunk/include/lldb/Symbol/TypeSystem.h
    lldb/trunk/source/Core/ValueObject.cpp
    lldb/trunk/source/Core/ValueObjectChild.cpp
    lldb/trunk/source/Core/ValueObjectConstResultChild.cpp
    lldb/trunk/source/Core/ValueObjectConstResultImpl.cpp
    lldb/trunk/source/Core/ValueObjectDynamicValue.cpp
    lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp
    lldb/trunk/source/Symbol/ClangASTContext.cpp
    lldb/trunk/source/Symbol/CompilerType.cpp
    lldb/trunk/source/Symbol/GoASTContext.cpp

Modified: lldb/trunk/include/lldb/Core/ValueObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObject.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObject.h Mon Nov  9 13:27:34 2015
@@ -1006,6 +1006,12 @@ public:
     
     virtual bool
     IsRuntimeSupportValue ();
+    
+    virtual uint64_t
+    GetLanguageFlags ();
+    
+    virtual void
+    SetLanguageFlags (uint64_t flags);
 
 protected:
     typedef ClusterManager<ValueObject> ValueObjectManager;
@@ -1124,6 +1130,8 @@ protected:
     
     lldb::LanguageType m_preferred_display_language;
     
+    uint64_t m_language_flags;
+    
     bool                m_value_is_valid:1,
                         m_value_did_change:1,
                         m_children_count_valid:1,

Modified: lldb/trunk/include/lldb/Core/ValueObjectChild.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectChild.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectChild.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectChild.h Mon Nov  9 13:27:34 2015
@@ -123,7 +123,8 @@ protected:
                       uint32_t bitfield_bit_offset,
                       bool is_base_class,
                       bool is_deref_of_parent,
-                      AddressType child_ptr_or_ref_addr_type);
+                      AddressType child_ptr_or_ref_addr_type,
+                      uint64_t language_flags);
 
     DISALLOW_COPY_AND_ASSIGN (ValueObjectChild);
 };

Modified: lldb/trunk/include/lldb/Core/ValueObjectConstResultChild.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectConstResultChild.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectConstResultChild.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectConstResultChild.h Mon Nov  9 13:27:34 2015
@@ -35,7 +35,8 @@ public:
                                  uint32_t bitfield_bit_offset,
                                  bool is_base_class,
                                  bool is_deref_of_parent,
-                                 lldb::addr_t live_address = LLDB_INVALID_ADDRESS);
+                                 lldb::addr_t live_address,
+                                 uint64_t language_flags);
     
     ~ValueObjectConstResultChild() override;
     

Modified: lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h Mon Nov  9 13:27:34 2015
@@ -106,6 +106,12 @@ public:
     
     bool
     GetDeclaration(Declaration &decl) override;
+    
+    uint64_t
+    GetLanguageFlags () override;
+    
+    void
+    SetLanguageFlags (uint64_t flags) override;
 
 protected:
     bool

Modified: lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h Mon Nov  9 13:27:34 2015
@@ -149,6 +149,12 @@ public:
     bool
     GetDeclaration(Declaration &decl) override;
 
+    uint64_t
+    GetLanguageFlags () override;
+    
+    void
+    SetLanguageFlags (uint64_t flags) override;
+    
 protected:
     bool
     UpdateValue() override;

Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Mon Nov  9 13:27:34 2015
@@ -885,7 +885,8 @@ public:
                                  uint32_t &child_bitfield_bit_offset,
                                  bool &child_is_base_class,
                                  bool &child_is_deref_of_parent,
-                                 ValueObject *valobj) override;
+                                 ValueObject *valobj,
+                                 uint64_t &language_flags) override;
     
     // Lookup a child given a name. This function will match base class names
     // and member member names in "clang_type" only, not descendants.

Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/CompilerType.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/CompilerType.h (original)
+++ lldb/trunk/include/lldb/Symbol/CompilerType.h Mon Nov  9 13:27:34 2015
@@ -440,7 +440,8 @@ public:
                                  uint32_t &child_bitfield_bit_offset,
                                  bool &child_is_base_class,
                                  bool &child_is_deref_of_parent,
-                                 ValueObject *valobj) const;
+                                 ValueObject *valobj,
+                                 uint64_t &language_flags) const;
     
     // Lookup a child given a name. This function will match base class names
     // and member member names in "clang_type" only, not descendants.

Modified: lldb/trunk/include/lldb/Symbol/GoASTContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/GoASTContext.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/GoASTContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/GoASTContext.h Mon Nov  9 13:27:34 2015
@@ -291,7 +291,7 @@ class GoASTContext : public TypeSystem
                                              uint32_t &child_byte_size, int32_t &child_byte_offset,
                                              uint32_t &child_bitfield_bit_size,
                                              uint32_t &child_bitfield_bit_offset, bool &child_is_base_class,
-                                             bool &child_is_deref_of_parent, ValueObject *valobj) override;
+                                             bool &child_is_deref_of_parent, ValueObject *valobj, uint64_t &language_flags) override;
 
     // Lookup a child given a name. This function will match base class names
     // and member member names in "clang_type" only, not descendants.

Modified: lldb/trunk/include/lldb/Symbol/TypeSystem.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/TypeSystem.h (original)
+++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Mon Nov  9 13:27:34 2015
@@ -352,7 +352,8 @@ public:
                                  uint32_t &child_bitfield_bit_offset,
                                  bool &child_is_base_class,
                                  bool &child_is_deref_of_parent,
-                                 ValueObject *valobj) = 0;
+                                 ValueObject *valobj,
+                                 uint64_t &language_flags) = 0;
     
     // Lookup a child given a name. This function will match base class names
     // and member member names in "clang_type" only, not descendants.

Modified: lldb/trunk/source/Core/ValueObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObject.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObject.cpp (original)
+++ lldb/trunk/source/Core/ValueObject.cpp Mon Nov  9 13:27:34 2015
@@ -97,6 +97,7 @@ ValueObject::ValueObject (ValueObject &p
     m_address_type_of_ptr_or_ref_children(eAddressTypeInvalid),
     m_value_checksum(),
     m_preferred_display_language(lldb::eLanguageTypeUnknown),
+    m_language_flags(0),
     m_value_is_valid (false),
     m_value_did_change (false),
     m_children_count_valid (false),
@@ -148,6 +149,7 @@ ValueObject::ValueObject (ExecutionConte
     m_address_type_of_ptr_or_ref_children(child_ptr_or_ref_addr_type),
     m_value_checksum(),
     m_preferred_display_language(lldb::eLanguageTypeUnknown),
+    m_language_flags(0),
     m_value_is_valid (false),
     m_value_did_change (false),
     m_children_count_valid (false),
@@ -873,6 +875,7 @@ ValueObject::CreateChildAtIndex (size_t
     uint32_t child_bitfield_bit_offset = 0;
     bool child_is_base_class = false;
     bool child_is_deref_of_parent = false;
+    uint64_t language_flags = 0;
 
     const bool transparent_pointers = synthetic_array_member == false;
     CompilerType child_compiler_type;
@@ -891,7 +894,8 @@ ValueObject::CreateChildAtIndex (size_t
                                                                       child_bitfield_bit_offset,
                                                                       child_is_base_class,
                                                                       child_is_deref_of_parent,
-                                                                      this);
+                                                                      this,
+                                                                      language_flags);
     if (child_compiler_type)
     {
         if (synthetic_index)
@@ -910,7 +914,8 @@ ValueObject::CreateChildAtIndex (size_t
                                        child_bitfield_bit_offset,
                                        child_is_base_class,
                                        child_is_deref_of_parent,
-                                       eAddressTypeInvalid);
+                                       eAddressTypeInvalid,
+                                       language_flags);
         //if (valobj)
         //    valobj->SetAddressTypeOfChildren(eAddressTypeInvalid);
    }
@@ -2219,7 +2224,8 @@ ValueObject::GetSyntheticBitFieldChild (
                                                                       from,
                                                                       false,
                                                                       false,
-                                                                      eAddressTypeInvalid);
+                                                                      eAddressTypeInvalid,
+                                                                      0);
             
             // Cache the value if we got one back...
             if (synthetic_child)
@@ -2265,7 +2271,8 @@ ValueObject::GetSyntheticChildAtOffset(u
                                                              0,
                                                              false,
                                                              false,
-                                                             eAddressTypeInvalid);
+                                                             eAddressTypeInvalid,
+                                                             0);
     if (synthetic_child)
     {
         AddSyntheticChild(name_const_str, synthetic_child);
@@ -2308,7 +2315,8 @@ ValueObject::GetSyntheticBase (uint32_t
                                                              0,
                                                              is_base_class,
                                                              false,
-                                                             eAddressTypeInvalid);
+                                                             eAddressTypeInvalid,
+                                                             0);
     if (synthetic_child)
     {
         AddSyntheticChild(name_const_str, synthetic_child);
@@ -3783,6 +3791,7 @@ ValueObject::Dereference (Error &error)
         const bool transparent_pointers = false;
         CompilerType compiler_type = GetCompilerType();
         CompilerType child_compiler_type;
+        uint64_t language_flags;
 
         ExecutionContext exe_ctx (GetExecutionContextRef());
 
@@ -3798,7 +3807,8 @@ ValueObject::Dereference (Error &error)
                                                                          child_bitfield_bit_offset,
                                                                          child_is_base_class,
                                                                          child_is_deref_of_parent,
-                                                                         this);
+                                                                         this,
+                                                                         language_flags);
         if (child_compiler_type && child_byte_size)
         {
             ConstString child_name;
@@ -3814,7 +3824,8 @@ ValueObject::Dereference (Error &error)
                                                    child_bitfield_bit_offset,
                                                    child_is_base_class,
                                                    child_is_deref_of_parent,
-                                                   eAddressTypeInvalid);
+                                                   eAddressTypeInvalid,
+                                                   language_flags);
         }
     }
 
@@ -4367,3 +4378,15 @@ ValueObject::SetSyntheticChildrenGenerat
 {
     m_is_synthetic_children_generated = b;
 }
+
+uint64_t
+ValueObject::GetLanguageFlags ()
+{
+    return m_language_flags;
+}
+
+void
+ValueObject::SetLanguageFlags (uint64_t flags)
+{
+    m_language_flags = flags;
+}

Modified: lldb/trunk/source/Core/ValueObjectChild.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectChild.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectChild.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectChild.cpp Mon Nov  9 13:27:34 2015
@@ -35,7 +35,8 @@ ValueObjectChild::ValueObjectChild
     uint32_t bitfield_bit_offset,
     bool is_base_class,
     bool is_deref_of_parent,
-    AddressType child_ptr_or_ref_addr_type
+    AddressType child_ptr_or_ref_addr_type,
+    uint64_t language_flags
 ) :
     ValueObject (parent),
     m_compiler_type (compiler_type),
@@ -49,6 +50,7 @@ ValueObjectChild::ValueObjectChild
 {
     m_name = name;
     SetAddressTypeOfChildren(child_ptr_or_ref_addr_type);
+    SetLanguageFlags(language_flags);
 }
 
 ValueObjectChild::~ValueObjectChild()

Modified: lldb/trunk/source/Core/ValueObjectConstResultChild.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectConstResultChild.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectConstResultChild.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectConstResultChild.cpp Mon Nov  9 13:27:34 2015
@@ -27,7 +27,8 @@ ValueObjectConstResultChild::ValueObject
     uint32_t bitfield_bit_offset,
     bool is_base_class,
     bool is_deref_of_parent,
-    lldb::addr_t live_address
+    lldb::addr_t live_address,
+    uint64_t language_flags
 ) :
     ValueObjectChild (parent,
                       compiler_type,
@@ -38,7 +39,8 @@ ValueObjectConstResultChild::ValueObject
                       bitfield_bit_offset,
                       is_base_class,
                       is_deref_of_parent,
-                      eAddressTypeLoad),
+                      eAddressTypeLoad,
+                      language_flags),
     m_impl(this, live_address)
 {
     m_name = name;

Modified: lldb/trunk/source/Core/ValueObjectConstResultImpl.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectConstResultImpl.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectConstResultImpl.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectConstResultImpl.cpp Mon Nov  9 13:27:34 2015
@@ -69,6 +69,7 @@ ValueObjectConstResultImpl::CreateChildA
     uint32_t child_bitfield_bit_offset = 0;
     bool child_is_base_class = false;
     bool child_is_deref_of_parent = false;
+    uint64_t language_flags;
     
     const bool transparent_pointers = synthetic_array_member == false;
     CompilerType compiler_type = m_impl_backend->GetCompilerType();
@@ -88,7 +89,8 @@ ValueObjectConstResultImpl::CreateChildA
                                                                      child_bitfield_bit_offset,
                                                                      child_is_base_class,
                                                                      child_is_deref_of_parent,
-                                                                     m_impl_backend);
+                                                                     m_impl_backend,
+                                                                     language_flags);
     if (child_compiler_type && child_byte_size)
     {
         if (synthetic_index)
@@ -107,7 +109,8 @@ ValueObjectConstResultImpl::CreateChildA
                                                   child_bitfield_bit_offset,
                                                   child_is_base_class,
                                                   child_is_deref_of_parent,
-                                                  m_live_address == LLDB_INVALID_ADDRESS ? m_live_address : m_live_address+child_byte_offset);
+                                                  m_live_address == LLDB_INVALID_ADDRESS ? m_live_address : m_live_address+child_byte_offset,
+                                                  language_flags);
     }
     
     return valobj;

Modified: lldb/trunk/source/Core/ValueObjectDynamicValue.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectDynamicValue.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectDynamicValue.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectDynamicValue.cpp Mon Nov  9 13:27:34 2015
@@ -426,3 +426,20 @@ ValueObjectDynamicValue::GetDeclaration
 
     return ValueObject::GetDeclaration(decl);
 }
+
+uint64_t
+ValueObjectDynamicValue::GetLanguageFlags ()
+{
+    if (m_parent)
+        return m_parent->GetLanguageFlags();
+    return this->ValueObject::GetLanguageFlags();
+}
+
+void
+ValueObjectDynamicValue::SetLanguageFlags (uint64_t flags)
+{
+    if (m_parent)
+        m_parent->SetLanguageFlags(flags);
+    else
+        this->ValueObject::SetLanguageFlags(flags);
+}

Modified: lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectSyntheticFilter.cpp Mon Nov  9 13:27:34 2015
@@ -345,3 +345,20 @@ ValueObjectSynthetic::GetDeclaration (De
 
     return ValueObject::GetDeclaration(decl);
 }
+
+uint64_t
+ValueObjectSynthetic::GetLanguageFlags ()
+{
+    if (m_parent)
+        return m_parent->GetLanguageFlags();
+    return this->ValueObject::GetLanguageFlags();
+}
+
+void
+ValueObjectSynthetic::SetLanguageFlags (uint64_t flags)
+{
+    if (m_parent)
+        m_parent->SetLanguageFlags(flags);
+    else
+        this->ValueObject::SetLanguageFlags(flags);
+}

Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Mon Nov  9 13:27:34 2015
@@ -5684,7 +5684,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                               uint32_t &child_bitfield_bit_offset,
                                               bool &child_is_base_class,
                                               bool &child_is_deref_of_parent,
-                                              ValueObject *valobj)
+                                              ValueObject *valobj,
+                                              uint64_t &language_flags)
 {
     if (!type)
         return CompilerType();
@@ -5694,6 +5695,7 @@ ClangASTContext::GetChildCompilerTypeAtI
     child_bitfield_bit_size = 0;
     child_bitfield_bit_offset = 0;
     child_is_base_class = false;
+    language_flags = 0;
     
     const bool idx_is_valid = idx < GetNumChildren (type, omit_empty_base_classes);
     uint32_t bit_offset;
@@ -6004,7 +6006,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                            child_bitfield_bit_offset,
                                                                            child_is_base_class,
                                                                            tmp_child_is_deref_of_parent,
-                                                                           valobj);
+                                                                           valobj,
+                                                                           language_flags);
                 }
                 else
                 {
@@ -6095,7 +6098,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                            child_bitfield_bit_offset,
                                                                            child_is_base_class,
                                                                            tmp_child_is_deref_of_parent,
-                                                                           valobj);
+                                                                           valobj,
+                                                                           language_flags);
                 }
                 else
                 {
@@ -6141,7 +6145,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                            child_bitfield_bit_offset,
                                                                            child_is_base_class,
                                                                            tmp_child_is_deref_of_parent,
-                                                                           valobj);
+                                                                           valobj,
+                                                                           language_flags);
                 }
                 else
                 {
@@ -6178,7 +6183,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                      child_bitfield_bit_offset,
                                                                      child_is_base_class,
                                                                      child_is_deref_of_parent,
-                                                                     valobj);
+                                                                     valobj,
+                                                                     language_flags);
         }
             break;
             
@@ -6197,7 +6203,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                       child_bitfield_bit_offset,
                                                                       child_is_base_class,
                                                                       child_is_deref_of_parent,
-                                                                      valobj);
+                                                                      valobj,
+                                                                      language_flags);
         }
             
         case clang::Type::Paren:
@@ -6215,7 +6222,8 @@ ClangASTContext::GetChildCompilerTypeAtI
                                                                  child_bitfield_bit_offset,
                                                                  child_is_base_class,
                                                                  child_is_deref_of_parent,
-                                                                 valobj);
+                                                                 valobj,
+                                                                 language_flags);
         }
             
             

Modified: lldb/trunk/source/Symbol/CompilerType.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CompilerType.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/CompilerType.cpp (original)
+++ lldb/trunk/source/Symbol/CompilerType.cpp Mon Nov  9 13:27:34 2015
@@ -772,7 +772,8 @@ CompilerType::GetChildCompilerTypeAtInde
                                            uint32_t &child_bitfield_bit_offset,
                                            bool &child_is_base_class,
                                            bool &child_is_deref_of_parent,
-                                           ValueObject *valobj) const
+                                           ValueObject *valobj,
+                                           uint64_t &language_flags) const
 {
     if (!IsValid())
         return CompilerType();
@@ -789,7 +790,8 @@ CompilerType::GetChildCompilerTypeAtInde
                                                       child_bitfield_bit_offset,
                                                       child_is_base_class,
                                                       child_is_deref_of_parent,
-                                                      valobj);
+                                                      valobj,
+                                                      language_flags);
 }
 
 // Look for a child member (doesn't include base classes, but it does include

Modified: lldb/trunk/source/Symbol/GoASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/GoASTContext.cpp?rev=252503&r1=252502&r2=252503&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/GoASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/GoASTContext.cpp Mon Nov  9 13:27:34 2015
@@ -1134,7 +1134,7 @@ GoASTContext::GetChildCompilerTypeAtInde
                                           bool omit_empty_base_classes, bool ignore_array_bounds, std::string &child_name,
                                           uint32_t &child_byte_size, int32_t &child_byte_offset,
                                           uint32_t &child_bitfield_bit_size, uint32_t &child_bitfield_bit_offset,
-                                          bool &child_is_base_class, bool &child_is_deref_of_parent, ValueObject *valobj)
+                                          bool &child_is_base_class, bool &child_is_deref_of_parent, ValueObject *valobj, uint64_t &language_flags)
 {
     child_name.clear();
     child_byte_size = 0;
@@ -1143,6 +1143,7 @@ GoASTContext::GetChildCompilerTypeAtInde
     child_bitfield_bit_offset = 0;
     child_is_base_class = false;
     child_is_deref_of_parent = false;
+    language_flags = 0;
 
     if (!type || !GetCompleteType(type))
         return CompilerType();
@@ -1167,7 +1168,7 @@ GoASTContext::GetChildCompilerTypeAtInde
             return pointee.GetChildCompilerTypeAtIndex(exe_ctx, idx, transparent_pointers, omit_empty_base_classes,
                                                     ignore_array_bounds, child_name, child_byte_size, child_byte_offset,
                                                     child_bitfield_bit_size, child_bitfield_bit_offset,
-                                                    child_is_base_class, tmp_child_is_deref_of_parent, valobj);
+                                                       child_is_base_class, tmp_child_is_deref_of_parent, valobj, language_flags);
         }
         else
         {
@@ -1209,7 +1210,7 @@ GoASTContext::GetChildCompilerTypeAtInde
         return t->GetElementType().GetChildCompilerTypeAtIndex(
             exe_ctx, idx, transparent_pointers, omit_empty_base_classes, ignore_array_bounds, child_name,
             child_byte_size, child_byte_offset, child_bitfield_bit_size, child_bitfield_bit_offset, child_is_base_class,
-            child_is_deref_of_parent, valobj);
+            child_is_deref_of_parent, valobj, language_flags);
     }
     return CompilerType();
 }




More information about the lldb-commits mailing list