summaryrefslogtreecommitdiffstats
path: root/lldb/source/DataFormatters/FormatManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/DataFormatters/FormatManager.cpp')
-rw-r--r--lldb/source/DataFormatters/FormatManager.cpp30
1 files changed, 12 insertions, 18 deletions
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp
index e41d5eecb32..12e8ef43bfd 100644
--- a/lldb/source/DataFormatters/FormatManager.cpp
+++ b/lldb/source/DataFormatters/FormatManager.cpp
@@ -210,11 +210,15 @@ FormatManager::GetPossibleMatches (ValueObject& valobj,
entries.push_back({bitfieldname,0,did_strip_ptr,did_strip_ref,did_strip_typedef});
reason |= lldb_private::eFormatterChoiceCriterionStrippedBitField;
}
- entries.push_back({type_name,reason,did_strip_ptr,did_strip_ref,did_strip_typedef});
- ConstString display_type_name(compiler_type.GetDisplayTypeName());
- if (display_type_name != type_name)
- entries.push_back({display_type_name,reason,did_strip_ptr,did_strip_ref,did_strip_typedef});
+ if (!compiler_type.IsMeaninglessWithoutDynamicResolution())
+ {
+ entries.push_back({type_name,reason,did_strip_ptr,did_strip_ref,did_strip_typedef});
+
+ ConstString display_type_name(compiler_type.GetDisplayTypeName());
+ if (display_type_name != type_name)
+ entries.push_back({display_type_name,reason,did_strip_ptr,did_strip_ref,did_strip_typedef});
+ }
for (bool is_rvalue_ref = true, j = true; j && compiler_type.IsReferenceType(nullptr, &is_rvalue_ref); j = false)
{
@@ -641,22 +645,12 @@ ConstString
FormatManager::GetTypeForCache (ValueObject& valobj,
lldb::DynamicValueType use_dynamic)
{
- if (use_dynamic == lldb::eNoDynamicValues)
+ ValueObjectSP valobj_sp = valobj.GetQualifiedRepresentationIfAvailable(use_dynamic, valobj.IsSynthetic());
+ if (valobj_sp && valobj_sp->GetCompilerType().IsValid())
{
- if (valobj.IsDynamic())
- {
- if (valobj.GetStaticValue())
- return valobj.GetStaticValue()->GetQualifiedTypeName();
- else
- return ConstString();
- }
- else
- return valobj.GetQualifiedTypeName();
+ if (!valobj_sp->GetCompilerType().IsMeaninglessWithoutDynamicResolution())
+ return valobj_sp->GetQualifiedTypeName();
}
- if (valobj.IsDynamic())
- return valobj.GetQualifiedTypeName();
- if (valobj.GetDynamicValue(use_dynamic))
- return valobj.GetDynamicValue(use_dynamic)->GetQualifiedTypeName();
return ConstString();
}
OpenPOWER on IntegriCloud