diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h index ccf11feea509..4c594b6f2a29 100644 --- a/lldb/include/lldb/Core/ValueObject.h +++ b/lldb/include/lldb/Core/ValueObject.h @@ -1265,6 +1265,9 @@ protected: DataExtractor & GetDataExtractor (); + void + ResetCompleteTypeInfo (); + //------------------------------------------------------------------ // Sublasses must implement the functions below. //------------------------------------------------------------------ diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index 9debcc0318ab..4db14ddd37f5 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -274,6 +274,13 @@ ValueObject::SetNeedsUpdate () ClearUserVisibleData(eClearUserVisibleDataItemsValue); } +void +ValueObject::ResetCompleteTypeInfo () +{ + m_did_calculate_complete_objc_class_type = false; + m_override_type = ClangASTType(); +} + ClangASTType ValueObject::MaybeCalculateCompleteType () { diff --git a/lldb/source/Core/ValueObjectDynamicValue.cpp b/lldb/source/Core/ValueObjectDynamicValue.cpp index e3f27fc0bb9e..b6d29d47b5bb 100644 --- a/lldb/source/Core/ValueObjectDynamicValue.cpp +++ b/lldb/source/Core/ValueObjectDynamicValue.cpp @@ -290,12 +290,14 @@ ValueObjectDynamicValue::UpdateValue () if (!m_type_sp) { m_type_sp = dynamic_type_sp; + ResetCompleteTypeInfo (); } else if (dynamic_type_sp != m_type_sp) { // We are another type, we need to tear down our children... m_type_sp = dynamic_type_sp; SetValueDidChange (true); + ResetCompleteTypeInfo (); } if (!m_address.IsValid() || m_address != dynamic_address)