aboutsummaryrefslogtreecommitdiff
path: root/lib/Lex/PPLexerChange.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-09-26 20:12:23 +0000
committerChris Lattner <sabre@nondot.org>2008-09-26 20:12:23 +0000
commit721818304ac462d8c6ce05eecd02884033db78f1 (patch)
treea71956e82aa61337bbefcc15fc7bb8df83a73bf4 /lib/Lex/PPLexerChange.cpp
parent1b9ad143c163a8e18f8dc34e8cdabfa668a53aea (diff)
Fix the rest of rdar://6243860 hopefully. This requires changing FileIDInfo
to whether the fileid is a 'extern c system header' in addition to whether it is a system header, most of this is spreading plumbing around. Once we have that, PPLexerChange bases its "file enter/exit" notifications to PPCallbacks to base the system header state on FileIDInfo instead of HeaderSearch. Finally, in Preprocessor::HandleIncludeDirective, mirror logic in GCC: the system headerness of a file being entered can be set due to the #includer or the #includee. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56688 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex/PPLexerChange.cpp')
-rw-r--r--lib/Lex/PPLexerChange.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/Lex/PPLexerChange.cpp b/lib/Lex/PPLexerChange.cpp
index d1c44cfcdf..1522bf5e8c 100644
--- a/lib/Lex/PPLexerChange.cpp
+++ b/lib/Lex/PPLexerChange.cpp
@@ -78,7 +78,7 @@ void Preprocessor::EnterSourceFile(unsigned FileID,
Lexer *TheLexer = new Lexer(SourceLocation::getFileLoc(FileID, 0), *this);
EnterSourceFileWithLexer(TheLexer, CurDir);
}
-
+
/// EnterSourceFile - Add a source file to the top of the include stack and
/// start lexing tokens from it instead of the current buffer.
void Preprocessor::EnterSourceFileWithLexer(Lexer *TheLexer,
@@ -95,12 +95,10 @@ void Preprocessor::EnterSourceFileWithLexer(Lexer *TheLexer,
// Notify the client, if desired, that we are in a new source file.
if (Callbacks && !CurLexer->Is_PragmaLexer) {
- DirectoryLookup::DirType FileType = DirectoryLookup::NormalHeaderDir;
-
- // Get the file entry for the current file.
- if (const FileEntry *FE =
- SourceMgr.getFileEntryForLoc(CurLexer->getFileLoc()))
- FileType = HeaderInfo.getFileDirFlavor(FE);
+ DirectoryLookup::DirType FileType =
+ // FIXME:
+ (DirectoryLookup::DirType)
+ SourceMgr.getDirCharacteristic(CurLexer->getFileLoc());
Callbacks->FileChanged(CurLexer->getFileLoc(),
PPCallbacks::EnterFile, FileType);
@@ -182,13 +180,11 @@ bool Preprocessor::HandleEndOfFile(Token &Result, bool isEndOfMacro) {
// Notify the client, if desired, that we are in a new source file.
if (Callbacks && !isEndOfMacro && CurLexer) {
- DirectoryLookup::DirType FileType = DirectoryLookup::NormalHeaderDir;
+ DirectoryLookup::DirType FileType =
+ // FIXME:
+ (DirectoryLookup::DirType)
+ SourceMgr.getDirCharacteristic(CurLexer->getFileLoc());
- // Get the file entry for the current file.
- if (const FileEntry *FE =
- SourceMgr.getFileEntryForLoc(CurLexer->getFileLoc()))
- FileType = HeaderInfo.getFileDirFlavor(FE);
-
Callbacks->FileChanged(CurLexer->getSourceLocation(CurLexer->BufferPtr),
PPCallbacks::ExitFile, FileType);
}