зеркало из https://github.com/microsoft/clang-1.git
finish the implementation of -imacros. The driver still needs to be hooked up.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68640 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
0139bb9649
Коммит
fd10511b3e
|
@ -1050,8 +1050,7 @@ void Preprocessor::HandleIncludeDirective(Token &IncludeTok,
|
|||
return;
|
||||
}
|
||||
|
||||
// Verify that there is nothing after the filename, other than EOM. Use the
|
||||
// preprocessor to lex this in case lexing the filename entered a macro.
|
||||
// Verify that there is nothing after the filename, other than EOM.
|
||||
CheckEndOfDirective("#include");
|
||||
|
||||
// Check that we don't have infinite #include recursion.
|
||||
|
@ -1141,8 +1140,15 @@ void Preprocessor::HandleIncludeMacrosDirective(Token &IncludeMacrosTok) {
|
|||
return;
|
||||
}
|
||||
|
||||
// TODO: implement me :)
|
||||
DiscardUntilEndOfDirective();
|
||||
// Treat this as a normal #include for checking purposes. If this is
|
||||
// successful, it will push a new lexer onto the include stack.
|
||||
HandleIncludeDirective(IncludeMacrosTok, 0, false);
|
||||
|
||||
Token TmpTok;
|
||||
do {
|
||||
Lex(TmpTok);
|
||||
assert(TmpTok.isNot(tok::eof) && "Didn't find end of -imacros!");
|
||||
} while (TmpTok.isNot(tok::hashhash));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
// RUN: clang-cc -E -Dtest=FOO -imacros pr2086.h %s | grep 'HERE: test'
|
||||
|
||||
// This should not be expanded into FOO because pr2086.h undefs 'test'.
|
||||
HERE: test
|
|
@ -1029,6 +1029,9 @@ static void AddImplicitIncludeMacros(std::vector<char> &Buf,
|
|||
Buf.insert(Buf.end(), EscapedFile.begin(), EscapedFile.end());
|
||||
Buf.push_back('"');
|
||||
Buf.push_back('\n');
|
||||
// Marker token to stop the __include_macros fetch loop.
|
||||
const char *Marker = "##\n"; // ##?
|
||||
Buf.insert(Buf.end(), Marker, Marker+strlen(Marker));
|
||||
}
|
||||
|
||||
/// AddImplicitIncludePTH - Add an implicit #include using the original file
|
||||
|
|
Загрузка…
Ссылка в новой задаче