diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h index 3b0fe28999da1005e19d8e6b28d0bdfbb5890d7d..ffd5e1b16f43ffbc4f18ee4810309ff35e3bb3ab 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -300,6 +300,13 @@ public: is_explicit); } + static clang::DeclContext * + GetAsDeclContext (clang::CXXMethodDecl *cxx_method_decl); + + static clang::DeclContext * + GetAsDeclContext (clang::ObjCMethodDecl *objc_method_decl); + + static bool CheckOverloadedOperatorKindParameterCount (uint32_t op_kind, uint32_t num_params); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index f33b6446def95f03c43397610b3659ab308555dc..c29a78db9b452896902544607a5dd7b7d2dc07ff 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -3645,6 +3645,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu, type_name_cstr, clang_type, accessibility); + LinkDeclContextToDIE(ClangASTContext::GetAsDeclContext(objc_method_decl), die); type_handled = objc_method_decl != NULL; } } @@ -3683,6 +3684,8 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu, is_static, is_inline, is_explicit); + LinkDeclContextToDIE(ClangASTContext::GetAsDeclContext(cxx_method_decl), die); + type_handled = cxx_method_decl != NULL; } } diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index e937db0845f91aabb17f9a14de0e0d915250bd0a..6915f7c94b7444c270cd0d6bb2a24100cce7ad18 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -4912,3 +4912,15 @@ ClangASTContext::GetCompleteDecl (clang::ASTContext *ast, } } +clang::DeclContext * +ClangASTContext::GetAsDeclContext (clang::CXXMethodDecl *cxx_method_decl) +{ + return clang::dyn_cast(cxx_method_decl); +} + +clang::DeclContext * +ClangASTContext::GetAsDeclContext (clang::ObjCMethodDecl *objc_method_decl) +{ + return clang::dyn_cast(objc_method_decl); +} +