forked from OSchip/llvm-project
clang-{tools,unittests}: Stop using SourceManager::getBuffer, NFC
Update clang-tools-extra, clang/tools, clang/unittests to migrate from `SourceManager::getBuffer`, which returns an always dereferenceable `MemoryBuffer*`, to `getBufferOrNone` or `getBufferOrFake`, both of which return a `MemoryBufferRef`, depending on whether the call site was checking for validity of the buffer. No functionality change intended. Differential Revision: https://reviews.llvm.org/D89416
This commit is contained in:
parent
af4fb416bd
commit
0065198166
|
@ -54,10 +54,10 @@ void SuspiciousSemicolonCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
|
||||
SourceLocation LocEnd = Semicolon->getEndLoc();
|
||||
FileID FID = SM.getFileID(LocEnd);
|
||||
const llvm::MemoryBuffer *Buffer = SM.getBuffer(FID, LocEnd);
|
||||
llvm::MemoryBufferRef Buffer = SM.getBufferOrFake(FID, LocEnd);
|
||||
Lexer Lexer(SM.getLocForStartOfFile(FID), Ctxt.getLangOpts(),
|
||||
Buffer->getBufferStart(), SM.getCharacterData(LocEnd) + 1,
|
||||
Buffer->getBufferEnd());
|
||||
Buffer.getBufferStart(), SM.getCharacterData(LocEnd) + 1,
|
||||
Buffer.getBufferEnd());
|
||||
if (Lexer.LexFromRawLexer(Token))
|
||||
return;
|
||||
|
||||
|
|
|
@ -794,14 +794,14 @@ static bool areExprsFromDifferentMacros(const Expr *LhsExpr,
|
|||
SM.getDecomposedLoc(SM.getExpansionLoc(Lsr.getBegin()));
|
||||
std::pair<FileID, unsigned> RsrLocInfo =
|
||||
SM.getDecomposedLoc(SM.getExpansionLoc(Rsr.getBegin()));
|
||||
const llvm::MemoryBuffer *MB = SM.getBuffer(LsrLocInfo.first);
|
||||
llvm::MemoryBufferRef MB = SM.getBufferOrFake(LsrLocInfo.first);
|
||||
|
||||
const char *LTokenPos = MB->getBufferStart() + LsrLocInfo.second;
|
||||
const char *RTokenPos = MB->getBufferStart() + RsrLocInfo.second;
|
||||
const char *LTokenPos = MB.getBufferStart() + LsrLocInfo.second;
|
||||
const char *RTokenPos = MB.getBufferStart() + RsrLocInfo.second;
|
||||
Lexer LRawLex(SM.getLocForStartOfFile(LsrLocInfo.first), LO,
|
||||
MB->getBufferStart(), LTokenPos, MB->getBufferEnd());
|
||||
MB.getBufferStart(), LTokenPos, MB.getBufferEnd());
|
||||
Lexer RRawLex(SM.getLocForStartOfFile(RsrLocInfo.first), LO,
|
||||
MB->getBufferStart(), RTokenPos, MB->getBufferEnd());
|
||||
MB.getBufferStart(), RTokenPos, MB.getBufferEnd());
|
||||
|
||||
Token LTok, RTok;
|
||||
do { // Compare the expressions token-by-token.
|
||||
|
|
|
@ -140,7 +140,8 @@ SourceLocation StaticAssertCheck::getLastParenLoc(const ASTContext *ASTCtx,
|
|||
const LangOptions &Opts = ASTCtx->getLangOpts();
|
||||
const SourceManager &SM = ASTCtx->getSourceManager();
|
||||
|
||||
const llvm::MemoryBuffer *Buffer = SM.getBuffer(SM.getFileID(AssertLoc));
|
||||
llvm::Optional<llvm::MemoryBufferRef> Buffer =
|
||||
SM.getBufferOrNone(SM.getFileID(AssertLoc));
|
||||
if (!Buffer)
|
||||
return SourceLocation();
|
||||
|
||||
|
|
|
@ -209,7 +209,7 @@ bool MagicNumbersCheck::isSyntheticValue(const SourceManager *SourceManager,
|
|||
return false;
|
||||
|
||||
const StringRef BufferIdentifier =
|
||||
SourceManager->getBuffer(FileOffset.first)->getBufferIdentifier();
|
||||
SourceManager->getBufferOrFake(FileOffset.first).getBufferIdentifier();
|
||||
|
||||
return BufferIdentifier.empty();
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@ private:
|
|||
SrcMgr::CharacteristicKind Kind, FileID PrevFID) override {
|
||||
// It'd be nice if there was a better way to identify built-in headers...
|
||||
if (Reason == FileChangeReason::ExitFile &&
|
||||
SM.getBuffer(PrevFID)->getBufferIdentifier() == "<built-in>")
|
||||
SM.getBufferOrFake(PrevFID).getBufferIdentifier() == "<built-in>")
|
||||
replay();
|
||||
}
|
||||
|
||||
|
|
|
@ -222,7 +222,7 @@ public:
|
|||
TokRef = TokRef.drop_front(Conflicting.size());
|
||||
}
|
||||
const auto &SM = AST.getSourceManager();
|
||||
StringRef MainCode = SM.getBuffer(SM.getMainFileID())->getBuffer();
|
||||
StringRef MainCode = SM.getBufferOrFake(SM.getMainFileID()).getBuffer();
|
||||
|
||||
// Merge token stream with "inactive line" markers.
|
||||
std::vector<HighlightingToken> WithInactiveLines;
|
||||
|
|
|
@ -445,9 +445,8 @@ llvm::Optional<SourceRange> toHalfOpenFileRange(const SourceManager &SM,
|
|||
|
||||
llvm::StringRef toSourceCode(const SourceManager &SM, SourceRange R) {
|
||||
assert(isValidFileRange(SM, R));
|
||||
bool Invalid = false;
|
||||
auto *Buf = SM.getBuffer(SM.getFileID(R.getBegin()), &Invalid);
|
||||
assert(!Invalid);
|
||||
auto Buf = SM.getBufferOrNone(SM.getFileID(R.getBegin()));
|
||||
assert(Buf);
|
||||
|
||||
size_t BeginOffset = SM.getFileOffset(R.getBegin());
|
||||
size_t EndOffset = SM.getFileOffset(R.getEnd());
|
||||
|
@ -456,7 +455,7 @@ llvm::StringRef toSourceCode(const SourceManager &SM, SourceRange R) {
|
|||
|
||||
llvm::Expected<SourceLocation> sourceLocationInMainFile(const SourceManager &SM,
|
||||
Position P) {
|
||||
llvm::StringRef Code = SM.getBuffer(SM.getMainFileID())->getBuffer();
|
||||
llvm::StringRef Code = SM.getBufferOrFake(SM.getMainFileID()).getBuffer();
|
||||
auto Offset =
|
||||
positionToOffset(Code, P, /*AllowColumnBeyondLineLength=*/false);
|
||||
if (!Offset)
|
||||
|
|
|
@ -312,10 +312,10 @@ static std::string getSourceString(clang::Preprocessor &PP,
|
|||
// Retrieve source line from file image given a location.
|
||||
static std::string getSourceLine(clang::Preprocessor &PP,
|
||||
clang::SourceLocation Loc) {
|
||||
const llvm::MemoryBuffer *MemBuffer =
|
||||
PP.getSourceManager().getBuffer(PP.getSourceManager().getFileID(Loc));
|
||||
const char *Buffer = MemBuffer->getBufferStart();
|
||||
const char *BufferEnd = MemBuffer->getBufferEnd();
|
||||
llvm::MemoryBufferRef MemBuffer = PP.getSourceManager().getBufferOrFake(
|
||||
PP.getSourceManager().getFileID(Loc));
|
||||
const char *Buffer = MemBuffer.getBufferStart();
|
||||
const char *BufferEnd = MemBuffer.getBufferEnd();
|
||||
const char *BeginPtr = PP.getSourceManager().getCharacterData(Loc);
|
||||
const char *EndPtr = BeginPtr;
|
||||
while (BeginPtr > Buffer) {
|
||||
|
@ -338,9 +338,10 @@ static std::string getSourceLine(clang::Preprocessor &PP,
|
|||
// Retrieve source line from file image given a file ID and line number.
|
||||
static std::string getSourceLine(clang::Preprocessor &PP, clang::FileID FileID,
|
||||
int Line) {
|
||||
const llvm::MemoryBuffer *MemBuffer = PP.getSourceManager().getBuffer(FileID);
|
||||
const char *Buffer = MemBuffer->getBufferStart();
|
||||
const char *BufferEnd = MemBuffer->getBufferEnd();
|
||||
llvm::MemoryBufferRef MemBuffer =
|
||||
PP.getSourceManager().getBufferOrFake(FileID);
|
||||
const char *Buffer = MemBuffer.getBufferStart();
|
||||
const char *BufferEnd = MemBuffer.getBufferEnd();
|
||||
const char *BeginPtr = Buffer;
|
||||
const char *EndPtr = BufferEnd;
|
||||
int LineCounter = 1;
|
||||
|
|
|
@ -284,7 +284,7 @@ static unsigned printHtmlForNode(raw_ostream &OS, const diff::ASTDiff &Diff,
|
|||
unsigned Begin, End;
|
||||
std::tie(Begin, End) = Tree.getSourceRangeOffsets(Node);
|
||||
const SourceManager &SrcMgr = Tree.getASTContext().getSourceManager();
|
||||
auto Code = SrcMgr.getBuffer(SrcMgr.getMainFileID())->getBuffer();
|
||||
auto Code = SrcMgr.getBufferOrFake(SrcMgr.getMainFileID()).getBuffer();
|
||||
for (; Offset < Begin; ++Offset)
|
||||
printHtml(OS, Code[Offset]);
|
||||
OS << "<span id='" << MyTag << Id << "' "
|
||||
|
|
|
@ -106,20 +106,19 @@ private:
|
|||
unsigned LocColumn =
|
||||
SM.getSpellingColumnNumber(Loc, /*Invalid=*/nullptr) - 1;
|
||||
FileID FID = SM.getFileID(Loc);
|
||||
const llvm::MemoryBuffer *Buffer =
|
||||
SM.getBuffer(FID, Loc, /*Invalid=*/nullptr);
|
||||
llvm::MemoryBufferRef Buffer = SM.getBufferOrFake(FID, Loc);
|
||||
|
||||
assert(LocData >= Buffer->getBufferStart() &&
|
||||
LocData < Buffer->getBufferEnd());
|
||||
assert(LocData >= Buffer.getBufferStart() &&
|
||||
LocData < Buffer.getBufferEnd());
|
||||
|
||||
const char *LineBegin = LocData - LocColumn;
|
||||
|
||||
assert(LineBegin >= Buffer->getBufferStart());
|
||||
assert(LineBegin >= Buffer.getBufferStart());
|
||||
|
||||
const char *LineEnd = nullptr;
|
||||
|
||||
for (LineEnd = LineBegin; *LineEnd != '\n' && *LineEnd != '\r' &&
|
||||
LineEnd < Buffer->getBufferEnd();
|
||||
LineEnd < Buffer.getBufferEnd();
|
||||
++LineEnd)
|
||||
;
|
||||
|
||||
|
|
|
@ -4362,9 +4362,8 @@ const char *clang_getFileContents(CXTranslationUnit TU, CXFile file,
|
|||
|
||||
const SourceManager &SM = cxtu::getASTUnit(TU)->getSourceManager();
|
||||
FileID fid = SM.translateFile(static_cast<FileEntry *>(file));
|
||||
bool Invalid = true;
|
||||
const llvm::MemoryBuffer *buf = SM.getBuffer(fid, &Invalid);
|
||||
if (Invalid) {
|
||||
llvm::Optional<llvm::MemoryBufferRef> buf = SM.getBufferOrNone(fid);
|
||||
if (!buf) {
|
||||
if (size)
|
||||
*size = 0;
|
||||
return nullptr;
|
||||
|
|
|
@ -5695,7 +5695,8 @@ TEST_P(ImportSourceLocations, NormalFileBuffer) {
|
|||
// Make sure the imported buffer has the original contents.
|
||||
SourceManager &ToSM = ToAST->getSourceManager();
|
||||
FileID ImportedID = ToSM.getFileID(ImportedLoc);
|
||||
EXPECT_EQ(Source, ToSM.getBuffer(ImportedID, SourceLocation())->getBuffer());
|
||||
EXPECT_EQ(Source,
|
||||
ToSM.getBufferOrFake(ImportedID, SourceLocation()).getBuffer());
|
||||
}
|
||||
|
||||
TEST_P(ImportSourceLocations, OverwrittenFileBuffer) {
|
||||
|
@ -5729,7 +5730,7 @@ TEST_P(ImportSourceLocations, OverwrittenFileBuffer) {
|
|||
SourceManager &ToSM = ToAST->getSourceManager();
|
||||
FileID ImportedID = ToSM.getFileID(ImportedLoc);
|
||||
EXPECT_EQ(Contents,
|
||||
ToSM.getBuffer(ImportedID, SourceLocation())->getBuffer());
|
||||
ToSM.getBufferOrFake(ImportedID, SourceLocation()).getBuffer());
|
||||
}
|
||||
|
||||
TEST_P(ASTImporterOptionSpecificTestBase, ImportExprOfAlignmentAttr) {
|
||||
|
|
Loading…
Reference in New Issue