diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-02 08:55:10 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-02 08:55:10 +0000 | 
| commit | 11d2b2d2bb706fca0656f2760839721bb7f6cb6f (patch) | |
| tree | d374cdca417e76f1bf101f139dba2db1d10ee8f7 /lib/Basic/SourceManager.cpp | |
| parent | c0c7bca4e5b8d12699dc93a0da49e9e4bb79671b (diff) | |
Notes
Diffstat (limited to 'lib/Basic/SourceManager.cpp')
| -rw-r--r-- | lib/Basic/SourceManager.cpp | 20 | 
1 files changed, 15 insertions, 5 deletions
| diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 6def967c4cfa2..27cb9bebde422 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -89,16 +89,26 @@ const llvm::MemoryBuffer *ContentCache::getBuffer(Diagnostic &Diag,        char *Ptr = const_cast<char*>(Buffer.getPointer()->getBufferStart());        for (unsigned i = 0, e = Entry->getSize(); i != e; ++i)          Ptr[i] = FillStr[i % FillStr.size()]; -      Diag.Report(diag::err_cannot_open_file) -        << Entry->getName() << ErrorStr; + +      if (Diag.isDiagnosticInFlight()) +        Diag.SetDelayedDiagnostic(diag::err_cannot_open_file,  +                                  Entry->getName(), ErrorStr); +      else  +        Diag.Report(diag::err_cannot_open_file) +          << Entry->getName() << ErrorStr; +        Buffer.setInt(true);      } else if (FileInfo.st_size != Entry->getSize() || -               FileInfo.st_mtime != Entry->getModificationTime() || -               FileInfo.st_ino != Entry->getInode()) { +               FileInfo.st_mtime != Entry->getModificationTime()) {        // Check that the file's size, modification time, and inode are        // the same as in the file entry (which may have come from a        // stat cache). -      Diag.Report(diag::err_file_modified) << Entry->getName(); +      if (Diag.isDiagnosticInFlight()) +        Diag.SetDelayedDiagnostic(diag::err_file_modified,  +                                  Entry->getName()); +      else  +        Diag.Report(diag::err_file_modified) << Entry->getName(); +        Buffer.setInt(true);      }    } | 
