forked from OSchip/llvm-project
unique_ptr-ify FrontendAction::takeCurrentASTUnit
llvm-svn: 215319
This commit is contained in:
parent
dd0e1e8d14
commit
f62d4e772d
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "clang/Basic/LLVM.h"
|
||||
#include "clang/Basic/LangOptions.h"
|
||||
#include "clang/Frontend/ASTUnit.h"
|
||||
#include "clang/Frontend/FrontendOptions.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include <memory>
|
||||
|
@ -29,7 +30,6 @@
|
|||
namespace clang {
|
||||
class ASTConsumer;
|
||||
class ASTMergeAction;
|
||||
class ASTUnit;
|
||||
class CompilerInstance;
|
||||
|
||||
/// Abstract base class for actions which can be performed by the frontend.
|
||||
|
@ -146,10 +146,12 @@ public:
|
|||
return *CurrentASTUnit;
|
||||
}
|
||||
|
||||
ASTUnit *takeCurrentASTUnit() { return CurrentASTUnit.release(); }
|
||||
std::unique_ptr<ASTUnit> takeCurrentASTUnit() {
|
||||
return std::move(CurrentASTUnit);
|
||||
}
|
||||
|
||||
void setCurrentInput(const FrontendInputFile &CurrentInput,
|
||||
ASTUnit *AST = nullptr);
|
||||
std::unique_ptr<ASTUnit> AST = nullptr);
|
||||
|
||||
/// @}
|
||||
/// @name Supported Modes
|
||||
|
|
|
@ -129,9 +129,9 @@ FrontendAction::FrontendAction() : Instance(nullptr) {}
|
|||
FrontendAction::~FrontendAction() {}
|
||||
|
||||
void FrontendAction::setCurrentInput(const FrontendInputFile &CurrentInput,
|
||||
ASTUnit *AST) {
|
||||
std::unique_ptr<ASTUnit> AST) {
|
||||
this->CurrentInput = CurrentInput;
|
||||
CurrentASTUnit.reset(AST);
|
||||
CurrentASTUnit = std::move(AST);
|
||||
}
|
||||
|
||||
ASTConsumer* FrontendAction::CreateWrappedASTConsumer(CompilerInstance &CI,
|
||||
|
@ -189,13 +189,12 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
|
|||
|
||||
IntrusiveRefCntPtr<DiagnosticsEngine> Diags(&CI.getDiagnostics());
|
||||
|
||||
ASTUnit *AST = ASTUnit::LoadFromASTFile(InputFile, Diags,
|
||||
CI.getFileSystemOpts());
|
||||
std::unique_ptr<ASTUnit> AST(
|
||||
ASTUnit::LoadFromASTFile(InputFile, Diags, CI.getFileSystemOpts()));
|
||||
|
||||
if (!AST)
|
||||
goto failure;
|
||||
|
||||
setCurrentInput(Input, AST);
|
||||
|
||||
// Inform the diagnostic client we are processing a source file.
|
||||
CI.getDiagnosticClient().BeginSourceFile(CI.getLangOpts(), nullptr);
|
||||
HasBegunSourceFile = true;
|
||||
|
@ -207,6 +206,8 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
|
|||
CI.setPreprocessor(&AST->getPreprocessor());
|
||||
CI.setASTContext(&AST->getASTContext());
|
||||
|
||||
setCurrentInput(Input, std::move(AST));
|
||||
|
||||
// Initialize the action.
|
||||
if (!BeginSourceFileAction(CI, InputFile))
|
||||
goto failure;
|
||||
|
|
Loading…
Reference in New Issue