diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -157,7 +157,7 @@ bool ParseChildMembers( const DWARFDIE &die, lldb_private::CompilerType &class_compiler_type, std::vector> &base_classes, - std::vector &member_function_dies, + std::vector &member_function_and_type_dies, DelayedPropertyList &delayed_properties, const lldb::AccessType default_accessibility, lldb_private::ClangASTImporter::LayoutInfo &layout_info); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -2149,14 +2149,14 @@ std::vector> bases; // Parse members and base classes first - std::vector member_function_dies; + std::vector member_function_and_type_dies; DelayedPropertyList delayed_properties; - ParseChildMembers(die, clang_type, bases, member_function_dies, + ParseChildMembers(die, clang_type, bases, member_function_and_type_dies, delayed_properties, default_accessibility, layout_info); - // Now parse any methods if there were any... - for (const DWARFDIE &die : member_function_dies) + // Now parse any methods or nested types if there were any... + for (const DWARFDIE &die : member_function_and_type_dies) dwarf->ResolveType(die); if (type_is_objc_object_or_interface) { @@ -2999,7 +2999,7 @@ bool DWARFASTParserClang::ParseChildMembers( const DWARFDIE &parent_die, CompilerType &class_clang_type, std::vector> &base_classes, - std::vector &member_function_dies, + std::vector &member_function_and_type_dies, DelayedPropertyList &delayed_properties, const AccessType default_accessibility, ClangASTImporter::LayoutInfo &layout_info) { @@ -3028,8 +3028,11 @@ break; case DW_TAG_subprogram: + case DW_TAG_enumeration_type: + case DW_TAG_structure_type: + case DW_TAG_union_type: // Let the type parsing code handle this one for us. - member_function_dies.push_back(die); + member_function_and_type_dies.push_back(die); break; case DW_TAG_inheritance: