summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/ValueObjectVariable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Core/ValueObjectVariable.cpp')
-rw-r--r--lldb/source/Core/ValueObjectVariable.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/lldb/source/Core/ValueObjectVariable.cpp b/lldb/source/Core/ValueObjectVariable.cpp
index 2f017aa36f7..229cdd8bacd 100644
--- a/lldb/source/Core/ValueObjectVariable.cpp
+++ b/lldb/source/Core/ValueObjectVariable.cpp
@@ -66,9 +66,16 @@ ValueObjectVariable::~ValueObjectVariable() {}
CompilerType ValueObjectVariable::GetCompilerTypeImpl() {
Type *var_type = m_variable_sp->GetType();
- if (var_type)
- return var_type->GetForwardCompilerType();
- return CompilerType();
+ if (!var_type)
+ return CompilerType();
+
+ // It's important to return the layout type here. If we have an enum then the
+ // symbol file plugin may have decided to complete it lazily, in which case a
+ // forward type won't be sufficient to display the variable. On the other
+ // hand, if we have a pointer to a class type, then getting the full type will
+ // resolve the class type, which is too much. The layout type is both
+ // necessary and sufficient.
+ return var_type->GetLayoutCompilerType();
}
ConstString ValueObjectVariable::GetTypeName() {
OpenPOWER on IntegriCloud