https://github.com/SergejSalnikov created https://github.com/llvm/llvm-project/pull/166593
None >From 2b15525dc77371424b84e93a65738453699da46a Mon Sep 17 00:00:00 2001 From: SKill <[email protected]> Date: Wed, 5 Nov 2025 17:59:25 +0100 Subject: [PATCH] Reuse code when computing Column and Line numbers --- clang/include/clang/Basic/SourceManager.h | 2 ++ clang/lib/Basic/SourceManager.cpp | 30 ++++++++++++++--------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h index 6d9d074d78026..a6984f7b06cbc 100644 --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -1409,6 +1409,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// before calling this method. unsigned getColumnNumber(FileID FID, unsigned FilePos, bool *Invalid = nullptr) const; + unsigned getColumnNumber(SourceLocation Loc, bool *Invalid = nullptr) const; unsigned getSpellingColumnNumber(SourceLocation Loc, bool *Invalid = nullptr) const; unsigned getExpansionColumnNumber(SourceLocation Loc, @@ -1423,6 +1424,7 @@ class SourceManager : public RefCountedBase<SourceManager> { /// MemoryBuffer, so this is not cheap: use only when about to emit a /// diagnostic. unsigned getLineNumber(FileID FID, unsigned FilePos, bool *Invalid = nullptr) const; + unsigned getLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; unsigned getSpellingLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; unsigned getExpansionLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; unsigned getPresumedLineNumber(SourceLocation Loc, bool *Invalid = nullptr) const; diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index 7dc81c50f87a2..01faeb67597a2 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -1159,18 +1159,22 @@ static bool isInvalid(LocType Loc, bool *Invalid) { return MyInvalid; } -unsigned SourceManager::getSpellingColumnNumber(SourceLocation Loc, - bool *Invalid) const { +unsigned SourceManager::getColumnNumber(SourceLocation Loc, + bool *Invalid) const { + assert(Loc.isFileID()); if (isInvalid(Loc, Invalid)) return 0; - FileIDAndOffset LocInfo = getDecomposedSpellingLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedLoc(Loc); return getColumnNumber(LocInfo.first, LocInfo.second, Invalid); } +unsigned SourceManager::getSpellingColumnNumber(SourceLocation Loc, + bool *Invalid) const { + return getColumnNumber(getSpellingLoc(Loc), Invalid); +} + unsigned SourceManager::getExpansionColumnNumber(SourceLocation Loc, bool *Invalid) const { - if (isInvalid(Loc, Invalid)) return 0; - FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); - return getColumnNumber(LocInfo.first, LocInfo.second, Invalid); + return getColumnNumber(getExpansionLoc(Loc), Invalid); } unsigned SourceManager::getPresumedColumnNumber(SourceLocation Loc, @@ -1367,17 +1371,19 @@ unsigned SourceManager::getLineNumber(FileID FID, unsigned FilePos, return LineNo; } -unsigned SourceManager::getSpellingLineNumber(SourceLocation Loc, - bool *Invalid) const { +unsigned SourceManager::getLineNumber(SourceLocation Loc, bool *Invalid) const { + assert(Loc.isFileID()); if (isInvalid(Loc, Invalid)) return 0; - FileIDAndOffset LocInfo = getDecomposedSpellingLoc(Loc); + FileIDAndOffset LocInfo = getDecomposedLoc(Loc); return getLineNumber(LocInfo.first, LocInfo.second); } +unsigned SourceManager::getSpellingLineNumber(SourceLocation Loc, + bool *Invalid) const { + return getLineNumber(getSpellingLoc(Loc), Invalid); +} unsigned SourceManager::getExpansionLineNumber(SourceLocation Loc, bool *Invalid) const { - if (isInvalid(Loc, Invalid)) return 0; - FileIDAndOffset LocInfo = getDecomposedExpansionLoc(Loc); - return getLineNumber(LocInfo.first, LocInfo.second); + return getLineNumber(getExpansionLoc(Loc), Invalid); } unsigned SourceManager::getPresumedLineNumber(SourceLocation Loc, bool *Invalid) const { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
