diff --git a/lldb/include/lldb/Symbol/ClangASTImporter.h b/lldb/include/lldb/Symbol/ClangASTImporter.h index 10df7da893a8..dc6ce6b5b95b 100644 --- a/lldb/include/lldb/Symbol/ClangASTImporter.h +++ b/lldb/include/lldb/Symbol/ClangASTImporter.h @@ -278,6 +278,8 @@ private: clang::Decl *Imported (clang::Decl *from, clang::Decl *to); + clang::Decl *GetOriginalDecl (clang::Decl *To); + std::set *m_decls_to_deport; std::set *m_decls_already_deported; ClangASTImporter &m_master; diff --git a/lldb/source/Symbol/ClangASTImporter.cpp b/lldb/source/Symbol/ClangASTImporter.cpp index 152949620450..afdca97ece27 100644 --- a/lldb/source/Symbol/ClangASTImporter.cpp +++ b/lldb/source/Symbol/ClangASTImporter.cpp @@ -716,3 +716,18 @@ ClangASTImporter::Minion::Imported (clang::Decl *from, clang::Decl *to) return clang::ASTImporter::Imported(from, to); } + +clang::Decl *ClangASTImporter::Minion::GetOriginalDecl (clang::Decl *To) +{ + ASTContextMetadataSP to_context_md = m_master.GetContextMetadata(&To->getASTContext()); + + if (!to_context_md) + return NULL; + + OriginMap::iterator iter = to_context_md->m_origins.find(To); + + if (iter == to_context_md->m_origins.end()) + return NULL; + + return const_cast(iter->second.decl); +}