From fecb122cca254f565050559b349c8ff309194554 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Mon, 23 Dec 2019 10:05:42 +0100 Subject: [PATCH] [lldb][NFC] Simplify ClangASTContext::GetTranslationUnitDecl These two functions are just calling their equivalent function in ASTContext and implicitly convert the result to a DeclContext* (a parent class of TranslationUnitDecl). This leads to the absurd situation that we had to cast the result of GetTranslationUnitDecl to a TranslationUnitDecl*. The only reason we did this implicit conversion to the parent class was that the void* conversion for the CompilerDeclContext constructor was sound (which otherwise would receive a Decl* pointer when called with a TranslationUnitDecl*). Now that the CompilerDeclContext constructor is type safe we can properly implement these functions by actually returning the right type. Also deletes the static inconvenience method that was not used anywhere. --- lldb/include/lldb/Symbol/ClangASTContext.h | 6 ++---- lldb/source/Symbol/ClangASTContext.cpp | 8 +------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h index 29d8521..c2c3726 100644 --- a/lldb/include/lldb/Symbol/ClangASTContext.h +++ b/lldb/include/lldb/Symbol/ClangASTContext.h @@ -167,10 +167,8 @@ public: uint32_t GetPointerByteSize() override; - static clang::DeclContext *GetTranslationUnitDecl(clang::ASTContext *ast); - - clang::DeclContext *GetTranslationUnitDecl() { - return GetTranslationUnitDecl(&getASTContext()); + clang::TranslationUnitDecl *GetTranslationUnitDecl() { + return getASTContext().getTranslationUnitDecl(); } static clang::Decl *CopyDecl(clang::ASTContext *dest_context, diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 58ff82d..f86e4bc 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -1153,11 +1153,6 @@ CompilerType ClangASTContext::GetCStringType(bool is_const) { return CompilerType(this, ast.getPointerType(char_type).getAsOpaquePtr()); } -clang::DeclContext * -ClangASTContext::GetTranslationUnitDecl(clang::ASTContext *ast) { - return ast->getTranslationUnitDecl(); -} - clang::Decl *ClangASTContext::CopyDecl(ASTContext *dst_ast, ASTContext *src_ast, clang::Decl *source_decl) { FileSystemOptions file_system_options; @@ -1782,8 +1777,7 @@ clang::DeclContext *FindLCABetweenDecls(clang::DeclContext *left, clang::UsingDirectiveDecl *ClangASTContext::CreateUsingDirectiveDeclaration( clang::DeclContext *decl_ctx, clang::NamespaceDecl *ns_decl) { if (decl_ctx != nullptr && ns_decl != nullptr) { - clang::TranslationUnitDecl *translation_unit = - (clang::TranslationUnitDecl *)GetTranslationUnitDecl(&getASTContext()); + auto *translation_unit = getASTContext().getTranslationUnitDecl(); clang::UsingDirectiveDecl *using_decl = clang::UsingDirectiveDecl::Create( getASTContext(), decl_ctx, clang::SourceLocation(), clang::SourceLocation(), clang::NestedNameSpecifierLoc(), -- 2.7.4