aboutsummaryrefslogtreecommitdiff
path: root/include/clang
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-01-17 08:45:21 +0000
committerChris Lattner <sabre@nondot.org>2009-01-17 08:45:21 +0000
commit3b4d5e955e819dd3a4bed37ea2e47d6e4cb05274 (patch)
tree0d9315c2e9e35acc7bb28187942346a41292cf45 /include/clang
parent8350394c65b81bba3986dfe44ae17423873741de (diff)
Rename SourceLocation::getFileID to getChunkID, because it returns
the chunk ID not the file ID. This exposes problems in TextDiagnosticPrinter where it should have been using the canonical file ID but wasn't. Fix these along the way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62427 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r--include/clang/Basic/SourceLocation.h36
-rw-r--r--include/clang/Basic/SourceManager.h17
-rw-r--r--include/clang/Driver/TextDiagnosticPrinter.h2
3 files changed, 29 insertions, 26 deletions
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h
index 227313b7bf..4c0f0e9d46 100644
--- a/include/clang/Basic/SourceLocation.h
+++ b/include/clang/Basic/SourceLocation.h
@@ -68,10 +68,10 @@ public:
enum {
// FileID Layout:
// bit 31: 0 -> FileID, 1 -> MacroID (invalid for FileID)
- // 30...17 -> FileID of source location, index into SourceManager table.
- FileIDBits = 14,
- // 0...16 -> Index into the chunk of the specified FileID.
- FilePosBits = 32-1-FileIDBits,
+ // 30...17 -> ChunkID of location, index into SourceManager table.
+ ChunkIDBits = 14,
+ // 0...16 -> Index into the chunk of the specified ChunkID.
+ FilePosBits = 32-1-ChunkIDBits,
// MacroID Layout:
// bit 31: 1 -> MacroID, 0 -> FileID (invalid for MacroID)
@@ -100,20 +100,20 @@ public:
bool isValid() const { return ID != 0; }
bool isInvalid() const { return ID == 0; }
- static SourceLocation getFileLoc(unsigned FileID, unsigned FilePos) {
+ static SourceLocation getFileLoc(unsigned ChunkID, unsigned FilePos) {
SourceLocation L;
// If a FilePos is larger than (1<<FilePosBits), the SourceManager makes
- // enough consequtive FileIDs that we have one for each chunk.
+ // enough consequtive ChunkIDs that we have one for each chunk.
if (FilePos >= ChunkSize) {
- FileID += FilePos >> FilePosBits;
+ ChunkID += FilePos >> FilePosBits;
FilePos &= ChunkSize-1;
}
- // FIXME: Find a way to handle out of FileID bits! Maybe MaxFileID is an
+ // FIXME: Find a way to handle out of ChunkID bits! Maybe MaxFileID is an
// escape of some sort?
- assert(FileID < (1 << FileIDBits) && "Out of fileid's");
+ assert(ChunkID < (1 << ChunkIDBits) && "Out of ChunkID's");
- L.ID = (FileID << FilePosBits) | FilePos;
+ L.ID = (ChunkID << FilePosBits) | FilePos;
return L;
}
@@ -138,16 +138,16 @@ public:
}
- /// getFileID - Return the file identifier for this SourceLocation. This
- /// FileID can be used with the SourceManager object to obtain an entire
+ /// getChunkID - Return the chunk identifier for this SourceLocation. This
+ /// ChunkID can be used with the SourceManager object to obtain an entire
/// include stack for a file position reference.
- unsigned getFileID() const {
+ unsigned getChunkID() const {
assert(isFileID() && "can't get the file id of a non-file sloc!");
return ID >> FilePosBits;
}
/// getRawFilePos - Return the byte offset from the start of the file-chunk
- /// referred to by FileID. This method should not be used to get the offset
+ /// referred to by ChunkID. This method should not be used to get the offset
/// from the start of the file, instead you should use
/// SourceManager::getDecomposedFileLoc. This method will be
// incorrect for large files.
@@ -172,14 +172,14 @@ public:
/// getFileLocWithOffset - Return a source location with the specified offset
/// from this file SourceLocation.
SourceLocation getFileLocWithOffset(int Offset) const {
- unsigned FileID = getFileID();
+ unsigned ChunkID = getChunkID();
Offset += getRawFilePos();
// Handle negative offsets correctly.
while (Offset < 0) {
- --FileID;
+ --ChunkID;
Offset += ChunkSize;
}
- return getFileLoc(FileID, Offset);
+ return getFileLoc(ChunkID, Offset);
}
/// getRawEncoding - When a SourceLocation itself cannot be used, this returns
@@ -261,6 +261,8 @@ public:
return *SrcMgr;
}
+ FileID getFileID() const;
+
FullSourceLoc getInstantiationLoc() const;
FullSourceLoc getSpellingLoc() const;
FullSourceLoc getIncludeLoc() const;
diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h
index 4f46bad8db..08929e39c1 100644
--- a/include/clang/Basic/SourceManager.h
+++ b/include/clang/Basic/SourceManager.h
@@ -350,7 +350,7 @@ public:
/// SourceLocation. If this is a macro expansion, this transparently figures
/// out which file includes the file being expanded into.
SourceLocation getIncludeLoc(SourceLocation ID) const {
- return getFIDInfo(getInstantiationLoc(ID).getFileID())->getIncludeLoc();
+ return getFIDInfo(getInstantiationLoc(ID).getChunkID())->getIncludeLoc();
}
/// getCharacterData - Return a pointer to the start of the specified location
@@ -415,9 +415,9 @@ public:
/// the specified SourceLocation, if one exists.
const SrcMgr::ContentCache* getContentCacheForLoc(SourceLocation Loc) const {
Loc = getSpellingLoc(Loc);
- unsigned FileID = Loc.getFileID();
- assert(FileID-1 < FileIDs.size() && "Invalid FileID!");
- return FileIDs[FileID-1].getContentCache();
+ unsigned ChunkID = Loc.getChunkID();
+ assert(ChunkID-1 < FileIDs.size() && "Invalid FileID!");
+ return FileIDs[ChunkID-1].getContentCache();
}
/// getFileEntryForLoc - Return the FileEntry record for the spelling loc of
@@ -447,7 +447,7 @@ public:
assert(Loc.isFileID() && "Isn't a File SourceLocation");
// TODO: Add a flag "is first chunk" to SLOC.
- const SrcMgr::FileIDInfo *FIDInfo = getFIDInfo(Loc.getFileID());
+ const SrcMgr::FileIDInfo *FIDInfo = getFIDInfo(Loc.getChunkID());
// If this file has been split up into chunks, factor in the chunk number
// that the FileID references.
@@ -455,9 +455,9 @@ public:
unsigned Offset = Loc.getRawFilePos();
Offset += (ChunkNo << SourceLocation::FilePosBits);
- assert(Loc.getFileID() >= ChunkNo && "Unexpected offset");
+ assert(Loc.getChunkID() >= ChunkNo && "Unexpected offset");
- return std::make_pair(FileID::Create(Loc.getFileID()-ChunkNo), Offset);
+ return std::make_pair(FileID::Create(Loc.getChunkID()-ChunkNo), Offset);
}
/// getFullFilePos - This (efficient) method returns the offset from the start
@@ -485,7 +485,8 @@ public:
return getFileCharacteristic(Loc) != SrcMgr::C_User;
}
SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const {
- return getFIDInfo(getSpellingLoc(Loc).getFileID())->getFileCharacteristic();
+ return getFIDInfo(getSpellingLoc(Loc).getChunkID())
+ ->getFileCharacteristic();
}
SrcMgr::CharacteristicKind getFileCharacteristic(FileID FID) const {
return getFIDInfo(FID)->getFileCharacteristic();
diff --git a/include/clang/Driver/TextDiagnosticPrinter.h b/include/clang/Driver/TextDiagnosticPrinter.h
index e6d570c5e3..550c337b50 100644
--- a/include/clang/Driver/TextDiagnosticPrinter.h
+++ b/include/clang/Driver/TextDiagnosticPrinter.h
@@ -40,7 +40,7 @@ public:
void HighlightRange(const SourceRange &R,
const SourceManager& SrcMgr,
- unsigned LineNo, unsigned FileID,
+ unsigned LineNo, FileID FID,
std::string &CaretLine,
const std::string &SourceLine);