diff options
Diffstat (limited to 'clang/lib/Rewrite')
-rw-r--r-- | clang/lib/Rewrite/HTMLRewrite.cpp | 12 | ||||
-rw-r--r-- | clang/lib/Rewrite/Rewriter.cpp | 12 |
2 files changed, 22 insertions, 2 deletions
diff --git a/clang/lib/Rewrite/HTMLRewrite.cpp b/clang/lib/Rewrite/HTMLRewrite.cpp index 342b0e6ef5e..cf1c779b3ea 100644 --- a/clang/lib/Rewrite/HTMLRewrite.cpp +++ b/clang/lib/Rewrite/HTMLRewrite.cpp @@ -43,8 +43,18 @@ void html::HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E, // Include the whole end token in the range. EOffset += Lexer::MeasureTokenLength(E, R.getSourceMgr(), R.getLangOpts()); + llvm::StringRef FileName; + std::string ErrorStr; + const char *BufferStart = SM.getBufferData(FID, FileName, ErrorStr).first; + if (!BufferStart) { + // FIXME: Add a diagnostic object somewhere? + fprintf(stderr, "error: cannot open file '%s': %s\n", + FileName.str().c_str(), ErrorStr.c_str()); + return; + } + HighlightRange(R.getEditBuffer(FID), BOffset, EOffset, - SM.getBufferData(FID).first, StartTag, EndTag); + BufferStart, StartTag, EndTag); } /// HighlightRange - This is the same as the above method, but takes diff --git a/clang/lib/Rewrite/Rewriter.cpp b/clang/lib/Rewrite/Rewriter.cpp index 9744496ac4f..84c0979d6dd 100644 --- a/clang/lib/Rewrite/Rewriter.cpp +++ b/clang/lib/Rewrite/Rewriter.cpp @@ -165,7 +165,17 @@ RewriteBuffer &Rewriter::getEditBuffer(FileID FID) { return I->second; I = RewriteBuffers.insert(I, std::make_pair(FID, RewriteBuffer())); - std::pair<const char*, const char*> MB = SourceMgr->getBufferData(FID); + llvm::StringRef FileName; + std::string ErrorStr; + + std::pair<const char*, const char*> MB + = SourceMgr->getBufferData(FID, FileName, ErrorStr); + if (!MB.first) { + // FIXME: Add a diagnostic object somewhere? + fprintf(stderr, "error: cannot open file '%s': %s\n", + FileName.str().c_str(), ErrorStr.c_str()); + } + I->second.Initialize(MB.first, MB.second); return I->second; |