Author: Haojian Wu Date: 2025-06-26T14:12:51+02:00 New Revision: 0b6ddb02efdcbdac9426e8d857499ea0580303cd
URL: https://github.com/llvm/llvm-project/commit/0b6ddb02efdcbdac9426e8d857499ea0580303cd DIFF: https://github.com/llvm/llvm-project/commit/0b6ddb02efdcbdac9426e8d857499ea0580303cd.diff LOG: [clang] NFC: Add alias for std::pair<FileID, unsigned> used in SourceLocation (#145711) Introduce a type alias for the commonly used `std::pair<FileID, unsigned>` to improve code readability, and make it easier for future updates (64-bit source locations). Added: Modified: clang/include/clang/Basic/SourceLocation.h clang/include/clang/Basic/SourceManager.h clang/lib/AST/ASTContext.cpp clang/lib/AST/ASTImporter.cpp clang/lib/AST/CommentLexer.cpp clang/lib/AST/Expr.cpp clang/lib/AST/RawCommentList.cpp clang/lib/Analysis/PathDiagnostic.cpp clang/lib/Basic/Diagnostic.cpp clang/lib/Basic/Sarif.cpp clang/lib/Basic/SourceLocation.cpp clang/lib/Basic/SourceManager.cpp clang/lib/Edit/Commit.cpp clang/lib/Frontend/SARIFDiagnostic.cpp clang/lib/Frontend/TextDiagnostic.cpp clang/lib/Index/CommentToXML.cpp clang/lib/Index/USRGeneration.cpp clang/lib/Lex/Lexer.cpp clang/lib/Lex/MacroInfo.cpp clang/lib/Lex/Preprocessor.cpp clang/lib/Parse/ParseStmt.cpp clang/lib/Parse/ParseStmtAsm.cpp clang/lib/Rewrite/Rewriter.cpp clang/lib/Sema/CodeCompleteConsumer.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaObjCProperty.cpp clang/lib/Serialization/ASTReader.cpp clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp clang/lib/Tooling/Core/Replacement.cpp clang/lib/Tooling/Refactoring/AtomicChange.cpp clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp clang/lib/Tooling/Transformer/SourceCode.cpp clang/tools/libclang/CIndex.cpp clang/tools/libclang/CIndexHigh.cpp clang/tools/libclang/CXIndexDataConsumer.cpp clang/tools/libclang/CXSourceLocation.cpp clang/unittests/Lex/LexerTest.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/SourceLocation.h b/clang/include/clang/Basic/SourceLocation.h index 7a0f5ba8d1270..14543cc41a38e 100644 --- a/clang/include/clang/Basic/SourceLocation.h +++ b/clang/include/clang/Basic/SourceLocation.h @@ -70,6 +70,8 @@ class FileID { int getOpaqueValue() const { return ID; } }; +using FileIDAndOffset = std::pair<FileID, unsigned>; + /// Encodes a location in the source. The SourceManager can decode this /// to get at the full include stack, line and column information. /// @@ -403,7 +405,7 @@ class FullSourceLoc : public SourceLocation { /// pair, after walking through all expansion records. /// /// \see SourceManager::getDecomposedExpansionLoc - std::pair<FileID, unsigned> getDecomposedExpansionLoc() const; + FileIDAndOffset getDecomposedExpansionLoc() const; unsigned getSpellingLineNumber(bool *Invalid = nullptr) const; unsigned getSpellingColumnNumber(bool *Invalid = nullptr) const; @@ -424,7 +426,7 @@ class FullSourceLoc : public SourceLocation { /// /// The first element is the FileID, the second is the offset from the /// start of the buffer of the location. - std::pair<FileID, unsigned> getDecomposedLoc() const; + FileIDAndOffset getDecomposedLoc() const; bool isInSystemHeader() const; diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h index cd3dac9133223..eefd4885534c8 100644 --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -795,7 +795,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// /// Used to cache results from and speed-up \c getDecomposedIncludedLoc /// function. - mutable llvm::DenseMap<FileID, std::pair<FileID, unsigned>> IncludedLocMap; + mutable llvm::DenseMap<FileID, FileIDAndOffset> IncludedLocMap; /// The key value into the IsBeforeInTUCache table. using IsBeforeInTUCacheKey = std::pair<FileID, FileID>; @@ -1269,7 +1269,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// /// The first element is the FileID, the second is the offset from the /// start of the buffer of the location. - std::pair<FileID, unsigned> getDecomposedLoc(SourceLocation Loc) const { + FileIDAndOffset getDecomposedLoc(SourceLocation Loc) const { FileID FID = getFileID(Loc); auto *Entry = getSLocEntryOrNull(FID); if (!Entry) @@ -1281,8 +1281,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// /// If the location is an expansion record, walk through it until we find /// the final location expanded. - std::pair<FileID, unsigned> - getDecomposedExpansionLoc(SourceLocation Loc) const { + FileIDAndOffset getDecomposedExpansionLoc(SourceLocation Loc) const { FileID FID = getFileID(Loc); auto *E = getSLocEntryOrNull(FID); if (!E) @@ -1299,8 +1298,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// /// If the location is an expansion record, walk through it until we find /// its spelling record. - std::pair<FileID, unsigned> - getDecomposedSpellingLoc(SourceLocation Loc) const { + FileIDAndOffset getDecomposedSpellingLoc(SourceLocation Loc) const { FileID FID = getFileID(Loc); auto *E = getSLocEntryOrNull(FID); if (!E) @@ -1314,7 +1312,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// Returns the "included/expanded in" decomposed location of the given /// FileID. - std::pair<FileID, unsigned> getDecomposedIncludedLoc(FileID FID) const; + FileIDAndOffset getDecomposedIncludedLoc(FileID FID) const; /// Returns the offset from the start of the file that the /// specified SourceLocation represents. @@ -1682,8 +1680,8 @@ class SourceManager : public RefCountedBase<SourceManager> { /// are in the same TU. The second bool is true if the first is true /// and \p LOffs is before \p ROffs. std::pair<bool, bool> - isInTheSameTranslationUnit(std::pair<FileID, unsigned> &LOffs, - std::pair<FileID, unsigned> &ROffs) const; + isInTheSameTranslationUnit(FileIDAndOffset &LOffs, + FileIDAndOffset &ROffs) const; /// \param Loc a source location in a loaded AST (of a PCH/Module file). /// \returns a FileID uniquely identifies the AST of a loaded @@ -1691,9 +1689,8 @@ class SourceManager : public RefCountedBase<SourceManager> { FileID getUniqueLoadedASTFileID(SourceLocation Loc) const; /// Determines whether the two decomposed source location is in the same TU. - bool isInTheSameTranslationUnitImpl( - const std::pair<FileID, unsigned> &LOffs, - const std::pair<FileID, unsigned> &ROffs) const; + bool isInTheSameTranslationUnitImpl(const FileIDAndOffset &LOffs, + const FileIDAndOffset &ROffs) const; /// Determines the order of 2 source locations in the "source location /// address space". @@ -1979,11 +1976,10 @@ class SourceManager : public RefCountedBase<SourceManager> { SourceLocation getSpellingLocSlowCase(SourceLocation Loc) const; SourceLocation getFileLocSlowCase(SourceLocation Loc) const; - std::pair<FileID, unsigned> + FileIDAndOffset getDecomposedExpansionLocSlowCase(const SrcMgr::SLocEntry *E) const; - std::pair<FileID, unsigned> - getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E, - unsigned Offset) const; + FileIDAndOffset getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E, + unsigned Offset) const; void computeMacroArgsCache(MacroArgsMap &MacroArgsCache, FileID FID) const; void associateFileChunkWithMacroArgExp(MacroArgsMap &MacroArgsCache, FileID FID, diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index e7abb18330e17..b13bdd5642977 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -248,7 +248,7 @@ RawComment *ASTContext::getRawCommentForDeclNoCacheImpl( // Decompose the location for the declaration and find the beginning of the // file buffer. - const std::pair<FileID, unsigned> DeclLocDecomp = + const FileIDAndOffset DeclLocDecomp = SourceMgr.getDecomposedLoc(RepresentativeLocForDecl); // Slow path. diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 2b7d67f389a64..c4d20554f09ef 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -9989,7 +9989,7 @@ Expected<SourceLocation> ASTImporter::Import(SourceLocation FromLoc) { SourceManager &FromSM = FromContext.getSourceManager(); bool IsBuiltin = FromSM.isWrittenInBuiltinFile(FromLoc); - std::pair<FileID, unsigned> Decomposed = FromSM.getDecomposedLoc(FromLoc); + FileIDAndOffset Decomposed = FromSM.getDecomposedLoc(FromLoc); Expected<FileID> ToFileIDOrErr = Import(Decomposed.first, IsBuiltin); if (!ToFileIDOrErr) return ToFileIDOrErr.takeError(); diff --git a/clang/lib/AST/CommentLexer.cpp b/clang/lib/AST/CommentLexer.cpp index 804be89a8d4dd..e19c2327aebdc 100644 --- a/clang/lib/AST/CommentLexer.cpp +++ b/clang/lib/AST/CommentLexer.cpp @@ -904,7 +904,7 @@ void Lexer::lex(Token &T) { StringRef Lexer::getSpelling(const Token &Tok, const SourceManager &SourceMgr) const { SourceLocation Loc = Tok.getLocation(); - std::pair<FileID, unsigned> LocInfo = SourceMgr.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SourceMgr.getDecomposedLoc(Loc); bool InvalidTemp = false; StringRef File = SourceMgr.getBufferData(LocInfo.first, &InvalidTemp); diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 51d83c480c2f1..149b274f36b63 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -1356,8 +1356,7 @@ StringLiteral::getLocationOfByte(unsigned ByteNo, const SourceManager &SM, SourceLocation StrTokSpellingLoc = SM.getSpellingLoc(StrTokLoc); // Re-lex the token to get its length and original spelling. - std::pair<FileID, unsigned> LocInfo = - SM.getDecomposedLoc(StrTokSpellingLoc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(StrTokSpellingLoc); bool Invalid = false; StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid); if (Invalid) { diff --git a/clang/lib/AST/RawCommentList.cpp b/clang/lib/AST/RawCommentList.cpp index 9658c6ab3d39d..3f9edc75311d4 100644 --- a/clang/lib/AST/RawCommentList.cpp +++ b/clang/lib/AST/RawCommentList.cpp @@ -224,8 +224,8 @@ comments::FullComment *RawComment::parse(const ASTContext &Context, static bool onlyWhitespaceBetween(SourceManager &SM, SourceLocation Loc1, SourceLocation Loc2, unsigned MaxNewlinesAllowed) { - std::pair<FileID, unsigned> Loc1Info = SM.getDecomposedLoc(Loc1); - std::pair<FileID, unsigned> Loc2Info = SM.getDecomposedLoc(Loc2); + FileIDAndOffset Loc1Info = SM.getDecomposedLoc(Loc1); + FileIDAndOffset Loc2Info = SM.getDecomposedLoc(Loc2); // Question does not make sense if locations are in diff erent files. if (Loc1Info.first != Loc2Info.first) @@ -279,8 +279,7 @@ void RawCommentList::addComment(const RawComment &RC, if (RC.isOrdinary() && !CommentOpts.ParseAllComments) return; - std::pair<FileID, unsigned> Loc = - SourceMgr.getDecomposedLoc(RC.getBeginLoc()); + FileIDAndOffset Loc = SourceMgr.getDecomposedLoc(RC.getBeginLoc()); const FileID CommentFile = Loc.first; const unsigned CommentOffset = Loc.second; diff --git a/clang/lib/Analysis/PathDiagnostic.cpp b/clang/lib/Analysis/PathDiagnostic.cpp index 962f9e9bc79cf..b1fbc3c9eff94 100644 --- a/clang/lib/Analysis/PathDiagnostic.cpp +++ b/clang/lib/Analysis/PathDiagnostic.cpp @@ -323,8 +323,8 @@ static bool compareCrossTUSourceLocs(FullSourceLoc XL, FullSourceLoc YL) { return true; if (XL.isValid() && YL.isInvalid()) return false; - std::pair<FileID, unsigned> XOffs = XL.getDecomposedLoc(); - std::pair<FileID, unsigned> YOffs = YL.getDecomposedLoc(); + FileIDAndOffset XOffs = XL.getDecomposedLoc(); + FileIDAndOffset YOffs = YL.getDecomposedLoc(); const SourceManager &SM = XL.getManager(); std::pair<bool, bool> InSameTU = SM.isInTheSameTranslationUnit(XOffs, YOffs); if (InSameTU.first) diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index a30bfa28eca71..ab0525e96f3ba 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -173,7 +173,7 @@ void DiagnosticsEngine::DiagStateMap::append(SourceManager &SrcMgr, CurDiagState = State; CurDiagStateLoc = Loc; - std::pair<FileID, unsigned> Decomp = SrcMgr.getDecomposedLoc(Loc); + FileIDAndOffset Decomp = SrcMgr.getDecomposedLoc(Loc); unsigned Offset = Decomp.second; for (File *F = getFile(SrcMgr, Decomp.first); F; Offset = F->ParentOffset, F = F->Parent) { @@ -199,7 +199,7 @@ DiagnosticsEngine::DiagStateMap::lookup(SourceManager &SrcMgr, if (Files.empty()) return FirstDiagState; - std::pair<FileID, unsigned> Decomp = SrcMgr.getDecomposedLoc(Loc); + FileIDAndOffset Decomp = SrcMgr.getDecomposedLoc(Loc); const File *F = getFile(SrcMgr, Decomp.first); return F->lookup(Decomp.second); } @@ -226,7 +226,7 @@ DiagnosticsEngine::DiagStateMap::getFile(SourceManager &SrcMgr, // We created a new File; look up the diagnostic state at the start of it and // initialize it. if (ID.isValid()) { - std::pair<FileID, unsigned> Decomp = SrcMgr.getDecomposedIncludedLoc(ID); + FileIDAndOffset Decomp = SrcMgr.getDecomposedIncludedLoc(ID); F.Parent = getFile(SrcMgr, Decomp.first); F.ParentOffset = Decomp.second; F.StateTransitions.push_back({F.Parent->lookup(Decomp.second), 0}); @@ -263,8 +263,7 @@ void DiagnosticsEngine::DiagStateMap::dump(SourceManager &SrcMgr, << ">: " << SrcMgr.getBufferOrFake(ID).getBufferIdentifier(); if (F.second.Parent) { - std::pair<FileID, unsigned> Decomp = - SrcMgr.getDecomposedIncludedLoc(ID); + FileIDAndOffset Decomp = SrcMgr.getDecomposedIncludedLoc(ID); assert(File.ParentOffset == Decomp.second); llvm::errs() << " parent " << File.Parent << " <FileID " << Decomp.first.getHashValue() << "> "; diff --git a/clang/lib/Basic/Sarif.cpp b/clang/lib/Basic/Sarif.cpp index ed50b73e92240..69862b73febd7 100644 --- a/clang/lib/Basic/Sarif.cpp +++ b/clang/lib/Basic/Sarif.cpp @@ -117,7 +117,7 @@ static unsigned int adjustColumnPos(FullSourceLoc Loc, unsigned int TokenLen = 0) { assert(!Loc.isInvalid() && "invalid Loc when adjusting column position"); - std::pair<FileID, unsigned> LocInfo = Loc.getDecomposedExpansionLoc(); + FileIDAndOffset LocInfo = Loc.getDecomposedExpansionLoc(); std::optional<MemoryBufferRef> Buf = Loc.getManager().getBufferOrNone(LocInfo.first); assert(Buf && "got an invalid buffer for the location's file"); diff --git a/clang/lib/Basic/SourceLocation.cpp b/clang/lib/Basic/SourceLocation.cpp index c5b9864dbb33f..3e26f75d25b10 100644 --- a/clang/lib/Basic/SourceLocation.cpp +++ b/clang/lib/Basic/SourceLocation.cpp @@ -164,7 +164,7 @@ FullSourceLoc FullSourceLoc::getExpansionLoc() const { return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr); } -std::pair<FileID, unsigned> FullSourceLoc::getDecomposedExpansionLoc() const { +FileIDAndOffset FullSourceLoc::getDecomposedExpansionLoc() const { return SrcMgr->getDecomposedExpansionLoc(*this); } @@ -274,6 +274,6 @@ StringRef FullSourceLoc::getBufferData(bool *Invalid) const { return SrcMgr->getBufferData(SrcMgr->getFileID(*this), Invalid); } -std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const { +FileIDAndOffset FullSourceLoc::getDecomposedLoc() const { return SrcMgr->getDecomposedLoc(*this); } diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index 053e82683a4a6..a05d6c16caa32 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -267,7 +267,7 @@ void SourceManager::AddLineNote(SourceLocation Loc, unsigned LineNo, int FilenameID, bool IsFileEntry, bool IsFileExit, SrcMgr::CharacteristicKind FileKind) { - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); bool Invalid = false; SLocEntry &Entry = getSLocEntry(LocInfo.first, &Invalid); @@ -916,7 +916,7 @@ getExpansionLocSlowCase(SourceLocation Loc) const { SourceLocation SourceManager::getSpellingLocSlowCase(SourceLocation Loc) const { do { - std::pair<FileID, unsigned> LocInfo = getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedLoc(Loc); Loc = getSLocEntry(LocInfo.first).getExpansion().getSpellingLoc(); Loc = Loc.getLocWithOffset(LocInfo.second); } while (!Loc.isFileID()); @@ -933,10 +933,8 @@ SourceLocation SourceManager::getFileLocSlowCase(SourceLocation Loc) const { return Loc; } - -std::pair<FileID, unsigned> -SourceManager::getDecomposedExpansionLocSlowCase( - const SrcMgr::SLocEntry *E) const { +FileIDAndOffset SourceManager::getDecomposedExpansionLocSlowCase( + const SrcMgr::SLocEntry *E) const { // If this is an expansion record, walk through all the expansion points. FileID FID; SourceLocation Loc; @@ -952,7 +950,7 @@ SourceManager::getDecomposedExpansionLocSlowCase( return std::make_pair(FID, Offset); } -std::pair<FileID, unsigned> +FileIDAndOffset SourceManager::getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E, unsigned Offset) const { // If this is an expansion record, walk through all the expansion points. @@ -976,7 +974,7 @@ SourceManager::getDecomposedSpellingLocSlowCase(const SrcMgr::SLocEntry *E, /// found. This should not generally be used by clients. SourceLocation SourceManager::getImmediateSpellingLoc(SourceLocation Loc) const{ if (Loc.isFileID()) return Loc; - std::pair<FileID, unsigned> LocInfo = getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedLoc(Loc); Loc = getSLocEntry(LocInfo.first).getExpansion().getSpellingLoc(); return Loc.getLocWithOffset(LocInfo.second); } @@ -1048,7 +1046,7 @@ bool SourceManager::isAtStartOfImmediateMacroExpansion(SourceLocation Loc, SourceLocation *MacroBegin) const { assert(Loc.isValid() && Loc.isMacroID() && "Expected a valid macro loc"); - std::pair<FileID, unsigned> DecompLoc = getDecomposedLoc(Loc); + FileIDAndOffset DecompLoc = getDecomposedLoc(Loc); if (DecompLoc.second > 0) return false; // Does not point at the start of expansion range. @@ -1125,7 +1123,7 @@ const char *SourceManager::getCharacterData(SourceLocation SL, bool *Invalid) const { // Note that this is a hot function in the getSpelling() path, which is // heavily used by -E mode. - std::pair<FileID, unsigned> LocInfo = getDecomposedSpellingLoc(SL); + FileIDAndOffset LocInfo = getDecomposedSpellingLoc(SL); // Note that calling 'getBuffer()' may lazily page in a source file. bool CharDataInvalid = false; @@ -1204,14 +1202,14 @@ static bool isInvalid(LocType Loc, bool *Invalid) { unsigned SourceManager::getSpellingColumnNumber(SourceLocation Loc, bool *Invalid) const { if (isInvalid(Loc, Invalid)) return 0; - std::pair<FileID, unsigned> LocInfo = getDecomposedSpellingLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedSpellingLoc(Loc); return getColumnNumber(LocInfo.first, LocInfo.second, Invalid); } unsigned SourceManager::getExpansionColumnNumber(SourceLocation Loc, bool *Invalid) const { if (isInvalid(Loc, Invalid)) return 0; - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); return getColumnNumber(LocInfo.first, LocInfo.second, Invalid); } @@ -1412,13 +1410,13 @@ unsigned SourceManager::getLineNumber(FileID FID, unsigned FilePos, unsigned SourceManager::getSpellingLineNumber(SourceLocation Loc, bool *Invalid) const { if (isInvalid(Loc, Invalid)) return 0; - std::pair<FileID, unsigned> LocInfo = getDecomposedSpellingLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedSpellingLoc(Loc); return getLineNumber(LocInfo.first, LocInfo.second); } unsigned SourceManager::getExpansionLineNumber(SourceLocation Loc, bool *Invalid) const { if (isInvalid(Loc, Invalid)) return 0; - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); return getLineNumber(LocInfo.first, LocInfo.second); } unsigned SourceManager::getPresumedLineNumber(SourceLocation Loc, @@ -1439,7 +1437,7 @@ unsigned SourceManager::getPresumedLineNumber(SourceLocation Loc, SrcMgr::CharacteristicKind SourceManager::getFileCharacteristic(SourceLocation Loc) const { assert(Loc.isValid() && "Can't get file characteristic of invalid loc!"); - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); const SLocEntry *SEntry = getSLocEntryForFile(LocInfo.first); if (!SEntry) return C_User; @@ -1488,7 +1486,7 @@ PresumedLoc SourceManager::getPresumedLoc(SourceLocation Loc, if (Loc.isInvalid()) return PresumedLoc(); // Presumed locations are always for expansion points. - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); bool Invalid = false; const SLocEntry &Entry = getSLocEntry(LocInfo.first, &Invalid); @@ -1563,7 +1561,7 @@ bool SourceManager::isInMainFile(SourceLocation Loc) const { if (Loc.isInvalid()) return false; // Presumed locations are always for expansion points. - std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); const SLocEntry *Entry = getSLocEntryForFile(LocInfo.first); if (!Entry) @@ -1918,14 +1916,13 @@ SourceManager::getMacroArgExpandedLocation(SourceLocation Loc) const { return Loc; } -std::pair<FileID, unsigned> -SourceManager::getDecomposedIncludedLoc(FileID FID) const { +FileIDAndOffset SourceManager::getDecomposedIncludedLoc(FileID FID) const { if (FID.isInvalid()) return std::make_pair(FileID(), 0); // Uses IncludedLocMap to retrieve/cache the decomposed loc. - using DecompTy = std::pair<FileID, unsigned>; + using DecompTy = FileIDAndOffset; auto InsertOp = IncludedLocMap.try_emplace(FID); DecompTy &DecompLoc = InsertOp.first->second; if (!InsertOp.second) @@ -1966,8 +1963,7 @@ FileID SourceManager::getUniqueLoadedASTFileID(SourceLocation Loc) const { } bool SourceManager::isInTheSameTranslationUnitImpl( - const std::pair<FileID, unsigned> &LOffs, - const std::pair<FileID, unsigned> &ROffs) const { + const FileIDAndOffset &LOffs, const FileIDAndOffset &ROffs) const { // If one is local while the other is loaded. if (isLoadedFileID(LOffs.first) != isLoadedFileID(ROffs.first)) return false; @@ -1992,10 +1988,9 @@ bool SourceManager::isInTheSameTranslationUnitImpl( /// to the parent source location within the same translation unit. If this is /// possible, return the decomposed version of the parent in Loc and return /// false. If Loc is a top-level entry, return true and don't modify it. -static bool -MoveUpTranslationUnitIncludeHierarchy(std::pair<FileID, unsigned> &Loc, - const SourceManager &SM) { - std::pair<FileID, unsigned> UpperLoc = SM.getDecomposedIncludedLoc(Loc.first); +static bool MoveUpTranslationUnitIncludeHierarchy(FileIDAndOffset &Loc, + const SourceManager &SM) { + FileIDAndOffset UpperLoc = SM.getDecomposedIncludedLoc(Loc.first); if (UpperLoc.first.isInvalid() || !SM.isInTheSameTranslationUnitImpl(UpperLoc, Loc)) return true; // We reached the top. @@ -2041,8 +2036,8 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, if (LHS == RHS) return false; - std::pair<FileID, unsigned> LOffs = getDecomposedLoc(LHS); - std::pair<FileID, unsigned> ROffs = getDecomposedLoc(RHS); + FileIDAndOffset LOffs = getDecomposedLoc(LHS); + FileIDAndOffset ROffs = getDecomposedLoc(RHS); // getDecomposedLoc may have failed to return a valid FileID because, e.g. it // is a serialized one referring to a file that was removed after we loaded @@ -2057,9 +2052,9 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, return LOffs.first < ROffs.first; } -std::pair<bool, bool> SourceManager::isInTheSameTranslationUnit( - std::pair<FileID, unsigned> &LOffs, - std::pair<FileID, unsigned> &ROffs) const { +std::pair<bool, bool> +SourceManager::isInTheSameTranslationUnit(FileIDAndOffset &LOffs, + FileIDAndOffset &ROffs) const { // If the source locations are not in the same TU, return early. if (!isInTheSameTranslationUnitImpl(LOffs, ROffs)) return std::make_pair(false, false); @@ -2086,7 +2081,7 @@ std::pair<bool, bool> SourceManager::isInTheSameTranslationUnit( // A location within a FileID on the path up from LOffs to the main file. struct Entry { - std::pair<FileID, unsigned> DecomposedLoc; // FileID redundant, but clearer. + FileIDAndOffset DecomposedLoc; // FileID redundant, but clearer. FileID ChildFID; // Used for breaking ties. Invalid for the initial loc. }; llvm::SmallDenseMap<FileID, Entry, 16> LChain; diff --git a/clang/lib/Edit/Commit.cpp b/clang/lib/Edit/Commit.cpp index 6e785e866666f..b1d58a0cad1e4 100644 --- a/clang/lib/Edit/Commit.cpp +++ b/clang/lib/Edit/Commit.cpp @@ -239,7 +239,7 @@ bool Commit::canInsert(SourceLocation loc, FileOffset &offs) { if (SM.isInSystemHeader(loc)) return false; - std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc); + FileIDAndOffset locInfo = SM.getDecomposedLoc(loc); if (locInfo.first.isInvalid()) return false; offs = FileOffset(locInfo.first, locInfo.second); @@ -273,7 +273,7 @@ bool Commit::canInsertAfterToken(SourceLocation loc, FileOffset &offs, if (loc.isInvalid()) return false; - std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc); + FileIDAndOffset locInfo = SM.getDecomposedLoc(loc); if (locInfo.first.isInvalid()) return false; offs = FileOffset(locInfo.first, locInfo.second); @@ -309,8 +309,8 @@ bool Commit::canRemoveRange(CharSourceRange range, if (PPRec && PPRec->rangeIntersectsConditionalDirective(range.getAsRange())) return false; - std::pair<FileID, unsigned> beginInfo = SM.getDecomposedLoc(range.getBegin()); - std::pair<FileID, unsigned> endInfo = SM.getDecomposedLoc(range.getEnd()); + FileIDAndOffset beginInfo = SM.getDecomposedLoc(range.getBegin()); + FileIDAndOffset endInfo = SM.getDecomposedLoc(range.getEnd()); if (beginInfo.first != endInfo.first || beginInfo.second > endInfo.second) return false; diff --git a/clang/lib/Frontend/SARIFDiagnostic.cpp b/clang/lib/Frontend/SARIFDiagnostic.cpp index e2aec7f677f12..ac27d7480de3e 100644 --- a/clang/lib/Frontend/SARIFDiagnostic.cpp +++ b/clang/lib/Frontend/SARIFDiagnostic.cpp @@ -91,8 +91,8 @@ SarifResult SARIFDiagnostic::addLocationToResult( SourceLocation E = ERange.getEnd(); bool IsTokenRange = ERange.isTokenRange(); - std::pair<FileID, unsigned> BInfo = SM.getDecomposedLoc(B); - std::pair<FileID, unsigned> EInfo = SM.getDecomposedLoc(E); + FileIDAndOffset BInfo = SM.getDecomposedLoc(B); + FileIDAndOffset EInfo = SM.getDecomposedLoc(E); // If the start or end of the range is in another file, just discard // it. diff --git a/clang/lib/Frontend/TextDiagnostic.cpp b/clang/lib/Frontend/TextDiagnostic.cpp index b9e681b52e509..ccdd59da89bd1 100644 --- a/clang/lib/Frontend/TextDiagnostic.cpp +++ b/clang/lib/Frontend/TextDiagnostic.cpp @@ -1012,7 +1012,7 @@ static std::string buildFixItInsertionLine(FileID FID, unsigned LineNo, // We have an insertion hint. Determine whether the inserted // code contains no newlines and is on the same line as the caret. - std::pair<FileID, unsigned> HintLocInfo = + FileIDAndOffset HintLocInfo = SM.getDecomposedExpansionLoc(H.RemoveRange.getBegin()); if (FID == HintLocInfo.first && LineNo == SM.getLineNumber(HintLocInfo.first, HintLocInfo.second) && @@ -1518,8 +1518,8 @@ void TextDiagnostic::emitParseableFixits(ArrayRef<FixItHint> Hints, SourceLocation BLoc = H.RemoveRange.getBegin(); SourceLocation ELoc = H.RemoveRange.getEnd(); - std::pair<FileID, unsigned> BInfo = SM.getDecomposedLoc(BLoc); - std::pair<FileID, unsigned> EInfo = SM.getDecomposedLoc(ELoc); + FileIDAndOffset BInfo = SM.getDecomposedLoc(BLoc); + FileIDAndOffset EInfo = SM.getDecomposedLoc(ELoc); // Adjust for token ranges. if (H.RemoveRange.isTokenRange()) diff --git a/clang/lib/Index/CommentToXML.cpp b/clang/lib/Index/CommentToXML.cpp index 672386171ecf6..f54d8be790217 100644 --- a/clang/lib/Index/CommentToXML.cpp +++ b/clang/lib/Index/CommentToXML.cpp @@ -898,7 +898,7 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) { { // Print line and column number. SourceLocation Loc = DI->CurrentDecl->getLocation(); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); FileID FID = LocInfo.first; unsigned FileOffset = LocInfo.second; diff --git a/clang/lib/Index/USRGeneration.cpp b/clang/lib/Index/USRGeneration.cpp index 1d5dcacdaa41f..6a884f7be00e1 100644 --- a/clang/lib/Index/USRGeneration.cpp +++ b/clang/lib/Index/USRGeneration.cpp @@ -31,7 +31,7 @@ static bool printLoc(llvm::raw_ostream &OS, SourceLocation Loc, return true; } Loc = SM.getExpansionLoc(Loc); - const std::pair<FileID, unsigned> &Decomposed = SM.getDecomposedLoc(Loc); + const FileIDAndOffset &Decomposed = SM.getDecomposedLoc(Loc); OptionalFileEntryRef FE = SM.getFileEntryRefForID(Decomposed.first); if (FE) { OS << llvm::sys::path::filename(FE->getName()); diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp index 42ea7edf3aaad..dfdba2317ee89 100644 --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -383,7 +383,7 @@ StringRef Lexer::getSpelling(SourceLocation loc, const LangOptions &options, bool *invalid) { // Break down the source location. - std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc); + FileIDAndOffset locInfo = SM.getDecomposedLoc(loc); // Try to the load the file buffer. bool invalidTemp = false; @@ -521,7 +521,7 @@ bool Lexer::getRawToken(SourceLocation Loc, Token &Result, // If this comes from a macro expansion, we really do want the macro name, not // the token this macro expanded to. Loc = SM.getExpansionLoc(Loc); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); bool Invalid = false; StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid); if (Invalid) @@ -563,7 +563,7 @@ static SourceLocation getBeginningOfFileToken(SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts) { assert(Loc.isFileID()); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (LocInfo.first.isInvalid()) return Loc; @@ -618,9 +618,8 @@ SourceLocation Lexer::GetBeginningOfToken(SourceLocation Loc, SourceLocation FileLoc = SM.getSpellingLoc(Loc); SourceLocation BeginFileLoc = getBeginningOfFileToken(FileLoc, SM, LangOpts); - std::pair<FileID, unsigned> FileLocInfo = SM.getDecomposedLoc(FileLoc); - std::pair<FileID, unsigned> BeginFileLocInfo = - SM.getDecomposedLoc(BeginFileLoc); + FileIDAndOffset FileLocInfo = SM.getDecomposedLoc(FileLoc); + FileIDAndOffset BeginFileLocInfo = SM.getDecomposedLoc(BeginFileLoc); assert(FileLocInfo.first == BeginFileLocInfo.first && FileLocInfo.second >= BeginFileLocInfo.second); return Loc.getLocWithOffset(BeginFileLocInfo.second - FileLocInfo.second); @@ -1033,7 +1032,7 @@ StringRef Lexer::getSourceText(CharSourceRange Range, } // Break down the source location. - std::pair<FileID, unsigned> beginInfo = SM.getDecomposedLoc(Range.getBegin()); + FileIDAndOffset beginInfo = SM.getDecomposedLoc(Range.getBegin()); if (beginInfo.first.isInvalid()) { if (Invalid) *Invalid = true; return {}; @@ -1099,7 +1098,7 @@ StringRef Lexer::getImmediateMacroName(SourceLocation Loc, // Dig out the buffer where the macro name was spelled and the extents of the // name so that we can render it into the expansion note. - std::pair<FileID, unsigned> ExpansionInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset ExpansionInfo = SM.getDecomposedLoc(Loc); unsigned MacroTokenLength = Lexer::MeasureTokenLength(Loc, SM, LangOpts); StringRef ExpansionBuffer = SM.getBufferData(ExpansionInfo.first); return ExpansionBuffer.substr(ExpansionInfo.second, MacroTokenLength); @@ -1126,7 +1125,7 @@ StringRef Lexer::getImmediateMacroNameForDiagnostics( // Dig out the buffer where the macro name was spelled and the extents of the // name so that we can render it into the expansion note. - std::pair<FileID, unsigned> ExpansionInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset ExpansionInfo = SM.getDecomposedLoc(Loc); unsigned MacroTokenLength = Lexer::MeasureTokenLength(Loc, SM, LangOpts); StringRef ExpansionBuffer = SM.getBufferData(ExpansionInfo.first); return ExpansionBuffer.substr(ExpansionInfo.second, MacroTokenLength); @@ -1160,7 +1159,7 @@ StringRef Lexer::getIndentationForLine(SourceLocation Loc, const SourceManager &SM) { if (Loc.isInvalid() || Loc.isMacroID()) return {}; - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (LocInfo.first.isInvalid()) return {}; bool Invalid = false; @@ -1334,7 +1333,7 @@ std::optional<Token> Lexer::findNextToken(SourceLocation Loc, Loc = Lexer::getLocForEndOfToken(Loc, 0, SM, LangOpts); // Break down the source location. - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); // Try to load the file buffer. bool InvalidTemp = false; diff --git a/clang/lib/Lex/MacroInfo.cpp b/clang/lib/Lex/MacroInfo.cpp index c33276ea71cb7..e4ad97406e995 100644 --- a/clang/lib/Lex/MacroInfo.cpp +++ b/clang/lib/Lex/MacroInfo.cpp @@ -69,10 +69,8 @@ unsigned MacroInfo::getDefinitionLengthSlow(const SourceManager &SM) const { "Macro defined in macro?"); assert((macroEnd.isFileID() || lastToken.is(tok::comment)) && "Macro defined in macro?"); - std::pair<FileID, unsigned> - startInfo = SM.getDecomposedExpansionLoc(macroStart); - std::pair<FileID, unsigned> - endInfo = SM.getDecomposedExpansionLoc(macroEnd); + FileIDAndOffset startInfo = SM.getDecomposedExpansionLoc(macroStart); + FileIDAndOffset endInfo = SM.getDecomposedExpansionLoc(macroEnd); assert(startInfo.first == endInfo.first && "Macro definition spanning multiple FileIDs ?"); assert(startInfo.second <= endInfo.second); diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index aac3dc9fa54b0..bcd3ea60ce3da 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -510,7 +510,7 @@ void Preprocessor::CreateString(StringRef Str, Token &Tok, SourceLocation Preprocessor::SplitToken(SourceLocation Loc, unsigned Length) { auto &SM = getSourceManager(); SourceLocation SpellingLoc = SM.getSpellingLoc(Loc); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellingLoc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(SpellingLoc); bool Invalid = false; StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid); if (Invalid) diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index bc40b726bf41b..8217151a0259a 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -1327,7 +1327,7 @@ struct MisleadingIndentationChecker { if (ColNo == 0 || TabStop == 1) return ColNo; - std::pair<FileID, unsigned> FIDAndOffset = SM.getDecomposedLoc(Loc); + FileIDAndOffset FIDAndOffset = SM.getDecomposedLoc(Loc); bool Invalid; StringRef BufData = SM.getBufferData(FIDAndOffset.first, &Invalid); diff --git a/clang/lib/Parse/ParseStmtAsm.cpp b/clang/lib/Parse/ParseStmtAsm.cpp index 182907df56070..c679aa6fe7b27 100644 --- a/clang/lib/Parse/ParseStmtAsm.cpp +++ b/clang/lib/Parse/ParseStmtAsm.cpp @@ -380,8 +380,7 @@ StmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) { ++NumTokensRead; } else { // Single-line inline asm; compute which line it is on. - std::pair<FileID, unsigned> ExpAsmLoc = - SrcMgr.getDecomposedExpansionLoc(EndLoc); + FileIDAndOffset ExpAsmLoc = SrcMgr.getDecomposedExpansionLoc(EndLoc); FID = ExpAsmLoc.first; LineNo = SrcMgr.getLineNumber(FID, ExpAsmLoc.second); LBraceLocs.push_back(SourceLocation()); @@ -408,16 +407,14 @@ StmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) { InAsmComment = true; if (!SingleLineMode) { // Compute which line the comment is on. - std::pair<FileID, unsigned> ExpSemiLoc = - SrcMgr.getDecomposedExpansionLoc(TokLoc); + FileIDAndOffset ExpSemiLoc = SrcMgr.getDecomposedExpansionLoc(TokLoc); FID = ExpSemiLoc.first; LineNo = SrcMgr.getLineNumber(FID, ExpSemiLoc.second); } } else if (SingleLineMode || InAsmComment) { // If end-of-line is significant, check whether this token is on a // new line. - std::pair<FileID, unsigned> ExpLoc = - SrcMgr.getDecomposedExpansionLoc(TokLoc); + FileIDAndOffset ExpLoc = SrcMgr.getDecomposedExpansionLoc(TokLoc); if (ExpLoc.first != FID || SrcMgr.getLineNumber(ExpLoc.first, ExpLoc.second) != LineNo) { // If this is a single-line __asm, we're done, except if the next diff --git a/clang/lib/Rewrite/Rewriter.cpp b/clang/lib/Rewrite/Rewriter.cpp index 68cf797f97905..ae21a10f81c35 100644 --- a/clang/lib/Rewrite/Rewriter.cpp +++ b/clang/lib/Rewrite/Rewriter.cpp @@ -133,7 +133,7 @@ std::string Rewriter::getRewrittenText(CharSourceRange Range) const { unsigned Rewriter::getLocationOffsetAndFileID(SourceLocation Loc, FileID &FID) const { assert(Loc.isValid() && "Invalid location"); - std::pair<FileID, unsigned> V = SourceMgr->getDecomposedLoc(Loc); + FileIDAndOffset V = SourceMgr->getDecomposedLoc(Loc); FID = V.first; return V.second; } diff --git a/clang/lib/Sema/CodeCompleteConsumer.cpp b/clang/lib/Sema/CodeCompleteConsumer.cpp index c4e5ef0d75af7..e3fc7c11f4594 100644 --- a/clang/lib/Sema/CodeCompleteConsumer.cpp +++ b/clang/lib/Sema/CodeCompleteConsumer.cpp @@ -700,8 +700,8 @@ void PrintingCodeCompleteConsumer::ProcessCodeCompleteResults( const SourceLocation ELoc = FixIt.RemoveRange.getEnd(); SourceManager &SM = SemaRef.SourceMgr; - std::pair<FileID, unsigned> BInfo = SM.getDecomposedLoc(BLoc); - std::pair<FileID, unsigned> EInfo = SM.getDecomposedLoc(ELoc); + FileIDAndOffset BInfo = SM.getDecomposedLoc(BLoc); + FileIDAndOffset EInfo = SM.getDecomposedLoc(ELoc); // Adjust for token ranges. if (FixIt.RemoveRange.isTokenRange()) EInfo.second += Lexer::MeasureTokenLength(ELoc, SM, SemaRef.LangOpts); diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index e1cccf068b5aa..a60a558155e69 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -16391,7 +16391,7 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body, // Returns true if the token beginning at this Loc is `const`. auto isLocAtConst = [&](SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts) { - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (LocInfo.first.isInvalid()) return false; diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index 3e962fcb8b0e5..9d5106805892a 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/lib/Sema/SemaObjCProperty.cpp @@ -310,7 +310,7 @@ static bool LocPropertyAttribute( ASTContext &Context, const char *attrName, return false; SourceManager &SM = Context.getSourceManager(); - std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(LParenLoc); + FileIDAndOffset locInfo = SM.getDecomposedLoc(LParenLoc); // Try to load the file buffer. bool invalidTemp = false; StringRef file = SM.getBufferData(locInfo.first, &invalidTemp); diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 523165c6cab64..486971818f109 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -10199,8 +10199,7 @@ void ASTReader::ReadComments() { for (RawComment *C : Comments) { SourceLocation CommentLoc = C->getBeginLoc(); if (CommentLoc.isValid()) { - std::pair<FileID, unsigned> Loc = - SourceMgr.getDecomposedLoc(CommentLoc); + FileIDAndOffset Loc = SourceMgr.getDecomposedLoc(CommentLoc); if (Loc.first.isValid()) Context.Comments.OrderedComments[Loc.first].emplace(Loc.second, C); } diff --git a/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp index 2539d3b9b71e5..538104d13e697 100644 --- a/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp @@ -1118,8 +1118,7 @@ void EmptyLocalizationContextChecker::MethodCrawler::VisitObjCMessageExpr( // source, so SL should point to the NSLocalizedString macro. SourceLocation SL = Mgr.getSourceManager().getImmediateMacroCallerLoc(R.getBegin()); - std::pair<FileID, unsigned> SLInfo = - Mgr.getSourceManager().getDecomposedLoc(SL); + FileIDAndOffset SLInfo = Mgr.getSourceManager().getDecomposedLoc(SL); SrcMgr::SLocEntry SE = Mgr.getSourceManager().getSLocEntry(SLInfo.first); diff --git a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp index 584ae33383cb5..3686bd4488877 100644 --- a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -305,7 +305,7 @@ static bool isFunctionMacroExpansion(SourceLocation Loc, return false; while (SM.isMacroArgExpansion(Loc)) Loc = SM.getImmediateExpansionRange(Loc).getBegin(); - std::pair<FileID, unsigned> TLInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset TLInfo = SM.getDecomposedLoc(Loc); SrcMgr::SLocEntry SE = SM.getSLocEntry(TLInfo.first); const SrcMgr::ExpansionInfo &EInfo = SE.getExpansion(); return EInfo.isFunctionMacroExpansion(); diff --git a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp index c1bafe8583586..2ef98e17cf9c0 100644 --- a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp @@ -895,7 +895,7 @@ void HTMLDiagnostics::HandlePiece(Rewriter &R, FileID BugFileID, SourceManager &SM = R.getSourceMgr(); assert(&Pos.getManager() == &SM && "SourceManagers are diff erent!"); - std::pair<FileID, unsigned> LPosInfo = SM.getDecomposedExpansionLoc(Pos); + FileIDAndOffset LPosInfo = SM.getDecomposedExpansionLoc(Pos); if (LPosInfo.first != BugFileID) return; @@ -1034,7 +1034,7 @@ void HTMLDiagnostics::HandlePiece(Rewriter &R, FileID BugFileID, FullSourceLoc L = MP->getLocation().asLocation().getExpansionLoc(); assert(L.isFileID()); StringRef BufferInfo = L.getBufferData(); - std::pair<FileID, unsigned> LocInfo = L.getDecomposedLoc(); + FileIDAndOffset LocInfo = L.getDecomposedLoc(); const char* MacroName = LocInfo.second + BufferInfo.data(); Lexer rawLexer(SM.getLocForStartOfFile(LocInfo.first), PP.getLangOpts(), BufferInfo.begin(), MacroName, BufferInfo.end()); diff --git a/clang/lib/Tooling/Core/Replacement.cpp b/clang/lib/Tooling/Core/Replacement.cpp index 9e2582ee53c59..1506218d88553 100644 --- a/clang/lib/Tooling/Core/Replacement.cpp +++ b/clang/lib/Tooling/Core/Replacement.cpp @@ -120,8 +120,7 @@ bool operator==(const Replacement &LHS, const Replacement &RHS) { void Replacement::setFromSourceLocation(const SourceManager &Sources, SourceLocation Start, unsigned Length, StringRef ReplacementText) { - const std::pair<FileID, unsigned> DecomposedLocation = - Sources.getDecomposedLoc(Start); + const FileIDAndOffset DecomposedLocation = Sources.getDecomposedLoc(Start); OptionalFileEntryRef Entry = Sources.getFileEntryRefForID(DecomposedLocation.first); this->FilePath = std::string(Entry ? Entry->getName() : InvalidLocation); @@ -137,8 +136,8 @@ static int getRangeSize(const SourceManager &Sources, const LangOptions &LangOpts) { SourceLocation SpellingBegin = Sources.getSpellingLoc(Range.getBegin()); SourceLocation SpellingEnd = Sources.getSpellingLoc(Range.getEnd()); - std::pair<FileID, unsigned> Start = Sources.getDecomposedLoc(SpellingBegin); - std::pair<FileID, unsigned> End = Sources.getDecomposedLoc(SpellingEnd); + FileIDAndOffset Start = Sources.getDecomposedLoc(SpellingBegin); + FileIDAndOffset End = Sources.getDecomposedLoc(SpellingEnd); if (Start.first != End.first) return -1; if (Range.isTokenRange()) End.second += Lexer::MeasureTokenLength(SpellingEnd, Sources, LangOpts); diff --git a/clang/lib/Tooling/Refactoring/AtomicChange.cpp b/clang/lib/Tooling/Refactoring/AtomicChange.cpp index 116f2a757a807..13256b52caea2 100644 --- a/clang/lib/Tooling/Refactoring/AtomicChange.cpp +++ b/clang/lib/Tooling/Refactoring/AtomicChange.cpp @@ -196,8 +196,7 @@ combineReplacementsInChanges(llvm::StringRef FilePath, AtomicChange::AtomicChange(const SourceManager &SM, SourceLocation KeyPosition) { const FullSourceLoc FullKeyPosition(KeyPosition, SM); - std::pair<FileID, unsigned> FileIDAndOffset = - FullKeyPosition.getSpellingLoc().getDecomposedLoc(); + auto FileIDAndOffset = FullKeyPosition.getSpellingLoc().getDecomposedLoc(); OptionalFileEntryRef FE = SM.getFileEntryRefForID(FileIDAndOffset.first); assert(FE && "Cannot create AtomicChange with invalid location."); FilePath = std::string(FE->getName()); diff --git a/clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp b/clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp index c18f9290471fe..8eff77861f753 100644 --- a/clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp +++ b/clang/lib/Tooling/Refactoring/Rename/USRLocFinder.cpp @@ -45,8 +45,7 @@ bool IsValidEditLoc(const clang::SourceManager& SM, clang::SourceLocation Loc) { if (Loc.isInvalid()) return false; const clang::FullSourceLoc FullLoc(Loc, SM); - std::pair<clang::FileID, unsigned> FileIdAndOffset = - FullLoc.getSpellingLoc().getDecomposedLoc(); + auto FileIdAndOffset = FullLoc.getSpellingLoc().getDecomposedLoc(); return SM.getFileEntryForID(FileIdAndOffset.first) != nullptr; } diff --git a/clang/lib/Tooling/Transformer/SourceCode.cpp b/clang/lib/Tooling/Transformer/SourceCode.cpp index ab7184c2c069e..922dafeddf416 100644 --- a/clang/lib/Tooling/Transformer/SourceCode.cpp +++ b/clang/lib/Tooling/Transformer/SourceCode.cpp @@ -68,8 +68,8 @@ llvm::Error clang::tooling::validateRange(const CharSourceRange &Range, "Range is in system header"); } - std::pair<FileID, unsigned> BeginInfo = SM.getDecomposedLoc(Range.getBegin()); - std::pair<FileID, unsigned> EndInfo = SM.getDecomposedLoc(Range.getEnd()); + FileIDAndOffset BeginInfo = SM.getDecomposedLoc(Range.getBegin()); + FileIDAndOffset EndInfo = SM.getDecomposedLoc(Range.getEnd()); if (BeginInfo.first != EndInfo.first) return llvm::make_error<StringError>( errc::invalid_argument, "Range begins and ends in diff erent files"); diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index e239ffae547aa..9089984fa4a54 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -270,10 +270,10 @@ bool CursorVisitor::visitFileRegion() { ASTUnit *Unit = cxtu::getASTUnit(TU); SourceManager &SM = Unit->getSourceManager(); - std::pair<FileID, unsigned> Begin = SM.getDecomposedLoc( - SM.getFileLoc(RegionOfInterest.getBegin())), - End = SM.getDecomposedLoc( - SM.getFileLoc(RegionOfInterest.getEnd())); + FileIDAndOffset Begin = SM.getDecomposedLoc( + SM.getFileLoc(RegionOfInterest.getBegin())), + End = SM.getDecomposedLoc( + SM.getFileLoc(RegionOfInterest.getEnd())); if (End.first != Begin.first) { // If the end does not reside in the same file, try to recover by @@ -7636,7 +7636,7 @@ CXString clang_getTokenSpelling(CXTranslationUnit TU, CXToken CXTok) { return cxstring::createEmpty(); SourceLocation Loc = SourceLocation::getFromRawEncoding(CXTok.int_data[1]); - std::pair<FileID, unsigned> LocInfo = + FileIDAndOffset LocInfo = CXXUnit->getSourceManager().getDecomposedSpellingLoc(Loc); bool Invalid = false; StringRef Buffer = @@ -7680,9 +7680,9 @@ CXSourceRange clang_getTokenExtent(CXTranslationUnit TU, CXToken CXTok) { static void getTokens(ASTUnit *CXXUnit, SourceRange Range, SmallVectorImpl<CXToken> &CXTokens) { SourceManager &SourceMgr = CXXUnit->getSourceManager(); - std::pair<FileID, unsigned> BeginLocInfo = + FileIDAndOffset BeginLocInfo = SourceMgr.getDecomposedSpellingLoc(Range.getBegin()); - std::pair<FileID, unsigned> EndLocInfo = + FileIDAndOffset EndLocInfo = SourceMgr.getDecomposedSpellingLoc(Range.getEnd()); // Cannot tokenize across files. @@ -7761,7 +7761,7 @@ CXToken *clang_getToken(CXTranslationUnit TU, CXSourceLocation Location) { if (Begin.isInvalid()) return nullptr; SourceManager &SM = CXXUnit->getSourceManager(); - std::pair<FileID, unsigned> DecomposedEnd = SM.getDecomposedLoc(Begin); + FileIDAndOffset DecomposedEnd = SM.getDecomposedLoc(Begin); DecomposedEnd.second += Lexer::MeasureTokenLength(Begin, SM, CXXUnit->getLangOpts()); @@ -8410,9 +8410,9 @@ static void annotatePreprocessorTokens(CXTranslationUnit TU, Preprocessor &PP = CXXUnit->getPreprocessor(); SourceManager &SourceMgr = CXXUnit->getSourceManager(); - std::pair<FileID, unsigned> BeginLocInfo = + FileIDAndOffset BeginLocInfo = SourceMgr.getDecomposedSpellingLoc(RegionOfInterest.getBegin()); - std::pair<FileID, unsigned> EndLocInfo = + FileIDAndOffset EndLocInfo = SourceMgr.getDecomposedSpellingLoc(RegionOfInterest.getEnd()); if (BeginLocInfo.first != EndLocInfo.first) diff --git a/clang/tools/libclang/CIndexHigh.cpp b/clang/tools/libclang/CIndexHigh.cpp index c055ff91da557..1f6d3b9dcfe31 100644 --- a/clang/tools/libclang/CIndexHigh.cpp +++ b/clang/tools/libclang/CIndexHigh.cpp @@ -193,7 +193,7 @@ static enum CXChildVisitResult findFileIdRefVisit(CXCursor cursor, } // We are looking for identifiers in a specific file. - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (LocInfo.first != data->FID) return CXChildVisit_Recurse; @@ -288,7 +288,7 @@ static enum CXChildVisitResult findFileMacroRefVisit(CXCursor cursor, } // We are looking for identifiers in a specific file. - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (SM.getFileEntryForID(LocInfo.first) != data->File) return CXChildVisit_Continue; @@ -360,7 +360,7 @@ struct FindFileIncludesVisitor { SourceManager &SM = Ctx.getSourceManager(); // We are looking for includes in a specific file. - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); if (SM.getFileEntryForID(LocInfo.first) != File) return CXChildVisit_Continue; diff --git a/clang/tools/libclang/CXIndexDataConsumer.cpp b/clang/tools/libclang/CXIndexDataConsumer.cpp index 2b2e70d60d1d6..f0d92e8c40124 100644 --- a/clang/tools/libclang/CXIndexDataConsumer.cpp +++ b/clang/tools/libclang/CXIndexDataConsumer.cpp @@ -1011,8 +1011,8 @@ bool CXIndexDataConsumer::markEntityOccurrenceInFile(const NamedDecl *D, SourceManager &SM = Ctx->getSourceManager(); D = getEntityDecl(D); - - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SM.getFileLoc(Loc)); + + FileIDAndOffset LocInfo = SM.getDecomposedLoc(SM.getFileLoc(Loc)); FileID FID = LocInfo.first; if (FID.isInvalid()) return true; @@ -1093,7 +1093,7 @@ void CXIndexDataConsumer::translateLoc(SourceLocation Loc, SourceManager &SM = Ctx->getSourceManager(); Loc = SM.getFileLoc(Loc); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(Loc); FileID FID = LocInfo.first; unsigned FileOffset = LocInfo.second; diff --git a/clang/tools/libclang/CXSourceLocation.cpp b/clang/tools/libclang/CXSourceLocation.cpp index cd41e9f0d6403..4c16e5de4498a 100644 --- a/clang/tools/libclang/CXSourceLocation.cpp +++ b/clang/tools/libclang/CXSourceLocation.cpp @@ -332,7 +332,7 @@ void clang_getSpellingLocation(CXSourceLocation location, const SourceManager &SM = *static_cast<const SourceManager*>(location.ptr_data[0]); SourceLocation SpellLoc = SM.getSpellingLoc(Loc); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(SpellLoc); FileID FID = LocInfo.first; unsigned FileOffset = LocInfo.second; @@ -368,7 +368,7 @@ void clang_getFileLocation(CXSourceLocation location, const SourceManager &SM = *static_cast<const SourceManager*>(location.ptr_data[0]); SourceLocation FileLoc = SM.getFileLoc(Loc); - std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(FileLoc); + FileIDAndOffset LocInfo = SM.getDecomposedLoc(FileLoc); FileID FID = LocInfo.first; unsigned FileOffset = LocInfo.second; diff --git a/clang/unittests/Lex/LexerTest.cpp b/clang/unittests/Lex/LexerTest.cpp index 2adb55484be88..86df872f6b7df 100644 --- a/clang/unittests/Lex/LexerTest.cpp +++ b/clang/unittests/Lex/LexerTest.cpp @@ -522,15 +522,14 @@ TEST_F(LexerTest, GetBeginningOfTokenWithEscapedNewLine) { std::vector<Token> LexedTokens = CheckLex(TextToLex, ExpectedTokens); for (const Token &Tok : LexedTokens) { - std::pair<FileID, unsigned> OriginalLocation = + FileIDAndOffset OriginalLocation = SourceMgr.getDecomposedLoc(Tok.getLocation()); for (unsigned Offset = 0; Offset < IdentifierLength; ++Offset) { SourceLocation LookupLocation = Tok.getLocation().getLocWithOffset(Offset); - std::pair<FileID, unsigned> FoundLocation = - SourceMgr.getDecomposedExpansionLoc( - Lexer::GetBeginningOfToken(LookupLocation, SourceMgr, LangOpts)); + FileIDAndOffset FoundLocation = SourceMgr.getDecomposedExpansionLoc( + Lexer::GetBeginningOfToken(LookupLocation, SourceMgr, LangOpts)); // Check that location returned by the GetBeginningOfToken // is the same as original token location reported by Lexer. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits