зеркало из https://github.com/microsoft/clang-1.git
Enhance PTHManager::Create() to take an optional Diagnostic* argument that can be used to report issues such as a missing PTH file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63231 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
05f3957c20
Коммит
8a6aec620d
|
@ -1154,7 +1154,7 @@ public:
|
|||
|
||||
// Use PTH?
|
||||
if (!TokenCache.empty())
|
||||
PTHMgr.reset(PTHManager::Create(TokenCache));
|
||||
PTHMgr.reset(PTHManager::Create(TokenCache, &Diags));
|
||||
|
||||
// Create the Preprocessor.
|
||||
llvm::OwningPtr<Preprocessor> PP(new Preprocessor(Diags, LangInfo, Target,
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace clang {
|
|||
|
||||
class FileEntry;
|
||||
class PTHLexer;
|
||||
class Diagnostic;
|
||||
|
||||
class PTHManager : public IdentifierInfoLookup {
|
||||
friend class PTHLexer;
|
||||
|
@ -107,7 +108,7 @@ public:
|
|||
|
||||
/// Create - This method creates PTHManager objects. The 'file' argument
|
||||
/// is the name of the PTH file. This method returns NULL upon failure.
|
||||
static PTHManager *Create(const std::string& file);
|
||||
static PTHManager *Create(const std::string& file, Diagnostic* Diags = 0);
|
||||
|
||||
void setPreprocessor(Preprocessor *pp) { PP = pp; }
|
||||
|
||||
|
|
|
@ -390,13 +390,20 @@ PTHManager::~PTHManager() {
|
|||
free(PerIDCache);
|
||||
}
|
||||
|
||||
PTHManager* PTHManager::Create(const std::string& file) {
|
||||
PTHManager* PTHManager::Create(const std::string& file, Diagnostic* Diags) {
|
||||
// Memory map the PTH file.
|
||||
llvm::OwningPtr<llvm::MemoryBuffer>
|
||||
File(llvm::MemoryBuffer::getFile(file.c_str()));
|
||||
|
||||
if (!File)
|
||||
if (!File) {
|
||||
if (Diags) {
|
||||
unsigned DiagID = Diags->getCustomDiagID(Diagnostic::Note,
|
||||
"PTH file %0 could not be read");
|
||||
Diags->Report(FullSourceLoc(), DiagID) << file;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Get the buffer ranges and check if there are at least three 32-bit
|
||||
// words at the end of the file.
|
||||
|
|
Загрузка…
Ссылка в новой задаче