diff options
Diffstat (limited to 'lldb/source/DataFormatters/FormatManager.cpp')
-rw-r--r-- | lldb/source/DataFormatters/FormatManager.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp index 15d40b69d65..d4bb0a1c365 100644 --- a/lldb/source/DataFormatters/FormatManager.cpp +++ b/lldb/source/DataFormatters/FormatManager.cpp @@ -420,6 +420,13 @@ GetTypeForCache (ValueObject& valobj, return ConstString(); } +static lldb::TypeFormatImplSP +GetHardcodedFormat (ValueObject& valobj, + lldb::DynamicValueType use_dynamic) +{ + return lldb::TypeFormatImplSP(); +} + lldb::TypeFormatImplSP FormatManager::GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) @@ -445,6 +452,12 @@ FormatManager::GetFormat (ValueObject& valobj, log->Printf("[FormatManager::GetFormat] Cache search failed. Going normal route"); } retval = m_categories_map.GetFormat(valobj, use_dynamic); + if (!retval) + { + if (log) + log->Printf("[FormatManager::GetFormat] Search failed. Giving hardcoded a chance."); + retval = GetHardcodedFormat(valobj, use_dynamic); + } if (valobj_type) { if (log) @@ -456,6 +469,13 @@ FormatManager::GetFormat (ValueObject& valobj, return retval; } +static lldb::TypeSummaryImplSP +GetHardcodedSummaryFormat (ValueObject& valobj, + lldb::DynamicValueType use_dynamic) +{ + return lldb::TypeSummaryImplSP(); +} + lldb::TypeSummaryImplSP FormatManager::GetSummaryFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic) @@ -481,6 +501,12 @@ FormatManager::GetSummaryFormat (ValueObject& valobj, log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. Going normal route"); } retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic); + if (!retval) + { + if (log) + log->Printf("[FormatManager::GetSummaryFormat] Search failed. Giving hardcoded a chance."); + retval = GetHardcodedSummaryFormat(valobj, use_dynamic); + } if (valobj_type) { if (log) @@ -493,6 +519,13 @@ FormatManager::GetSummaryFormat (ValueObject& valobj, } #ifndef LLDB_DISABLE_PYTHON +static lldb::SyntheticChildrenSP +GetHardcodedSyntheticChildren (ValueObject& valobj, + lldb::DynamicValueType use_dynamic) +{ + return lldb::SyntheticChildrenSP(); +} + lldb::SyntheticChildrenSP FormatManager::GetSyntheticChildren (ValueObject& valobj, lldb::DynamicValueType use_dynamic) @@ -518,6 +551,12 @@ FormatManager::GetSyntheticChildren (ValueObject& valobj, log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. Going normal route"); } retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic); + if (!retval) + { + if (log) + log->Printf("[FormatManager::GetSyntheticChildren] Search failed. Giving hardcoded a chance."); + retval = GetHardcodedSyntheticChildren(valobj, use_dynamic); + } if (valobj_type) { if (log) |