diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-04 05:33:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-04 05:33:01 +0000 |
commit | 6b3066780bda02e3117d71a18ca2f430ed1454af (patch) | |
tree | 3875355647e996c6983acb03cb56fe0b1d18fcbe /include/clang/Basic/SourceManager.h | |
parent | 9d79ebac47ffde6a1cb312f4c09b66b1b9a397fb (diff) |
make getFileCharacteristic linetable aware. line markers that
play around with the 'is system header' bit now function correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63720 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/SourceManager.h')
-rw-r--r-- | include/clang/Basic/SourceManager.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index e24e623899..565cb0e17e 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -495,11 +495,15 @@ public: unsigned getInstantiationLineNumber(SourceLocation Loc) const; unsigned getSpellingLineNumber(SourceLocation Loc) const; - // FIXME: This should handle #line. - SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const { - FileID FID = getFileID(getSpellingLoc(Loc)); - return getSLocEntry(FID).getFile().getFileCharacteristic(); - } + /// getFileCharacteristic - return the file characteristic of the specified + /// source location, indicating whether this is a normal file, a system + /// header, or an "implicit extern C" system header. + /// + /// This state can be modified with flags on GNU linemarker directives like: + /// # 4 "foo.h" 3 + /// which changes all source locations in the current file after that to be + /// considered to be from a system header. + SrcMgr::CharacteristicKind getFileCharacteristic(SourceLocation Loc) const; /// getPresumedLoc - This method returns the "presumed" location of a /// SourceLocation specifies. A "presumed location" can be modified by #line |