diff options
Diffstat (limited to 'include/clang/Lex/PPCallbacks.h')
-rw-r--r-- | include/clang/Lex/PPCallbacks.h | 74 |
1 files changed, 50 insertions, 24 deletions
diff --git a/include/clang/Lex/PPCallbacks.h b/include/clang/Lex/PPCallbacks.h index a7948153a728..1fc1a05db646 100644 --- a/include/clang/Lex/PPCallbacks.h +++ b/include/clang/Lex/PPCallbacks.h @@ -42,8 +42,11 @@ public: /// EnteringFile indicates whether this is because we are entering a new /// #include'd file (when true) or whether we're exiting one because we ran /// off the end (when false). + /// + /// \param PrevFID the file that was exited if \arg Reason is ExitFile. virtual void FileChanged(SourceLocation Loc, FileChangeReason Reason, - SrcMgr::CharacteristicKind FileType) { + SrcMgr::CharacteristicKind FileType, + FileID PrevFID = FileID()) { } /// FileSkipped - This callback is invoked whenever a source file is @@ -90,12 +93,12 @@ public: /// file was found. This is equal to FileName except for framework includes. virtual void InclusionDirective(SourceLocation HashLoc, const Token &IncludeTok, - llvm::StringRef FileName, + StringRef FileName, bool IsAngled, const FileEntry *File, SourceLocation EndLoc, - llvm::StringRef SearchPath, - llvm::StringRef RelativePath) { + StringRef SearchPath, + StringRef RelativePath) { } /// EndOfMainFile - This callback is invoked when the end of the main file is @@ -122,31 +125,32 @@ public: /// \param Loc The location of the message directive. /// \param str The text of the message directive. /// - virtual void PragmaMessage(SourceLocation Loc, llvm::StringRef Str) { + virtual void PragmaMessage(SourceLocation Loc, StringRef Str) { } /// PragmaDiagnosticPush - This callback is invoked when a /// #pragma gcc dianostic push directive is read. virtual void PragmaDiagnosticPush(SourceLocation Loc, - llvm::StringRef Namespace) { + StringRef Namespace) { } /// PragmaDiagnosticPop - This callback is invoked when a /// #pragma gcc dianostic pop directive is read. virtual void PragmaDiagnosticPop(SourceLocation Loc, - llvm::StringRef Namespace) { + StringRef Namespace) { } /// PragmaDiagnostic - This callback is invoked when a /// #pragma gcc dianostic directive is read. - virtual void PragmaDiagnostic(SourceLocation Loc, llvm::StringRef Namespace, - diag::Mapping mapping, llvm::StringRef Str) { + virtual void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, + diag::Mapping mapping, StringRef Str) { } /// MacroExpands - This is called by /// Preprocessor::HandleMacroExpandedIdentifier when a macro invocation is /// found. - virtual void MacroExpands(const Token &MacroNameTok, const MacroInfo* MI) { + virtual void MacroExpands(const Token &MacroNameTok, const MacroInfo* MI, + SourceRange Range) { } /// MacroDefined - This hook is called whenever a macro definition is seen. @@ -157,6 +161,16 @@ public: /// MI is released immediately following this callback. virtual void MacroUndefined(const Token &MacroNameTok, const MacroInfo *MI) { } + + /// Defined - This hook is called whenever the 'defined' operator is seen. + virtual void Defined(const Token &MacroNameTok) { + } + + /// SourceRangeSkipped - This hook is called when a source range is skipped. + /// \param Range The SourceRange that was skipped. The range begins at the + /// #if/#else directive and ends after the #endif/#else directive. + virtual void SourceRangeSkipped(SourceRange Range) { + } /// If -- This hook is called whenever an #if is seen. /// \param Range The SourceRange of the expression being tested. @@ -204,9 +218,10 @@ public: } virtual void FileChanged(SourceLocation Loc, FileChangeReason Reason, - SrcMgr::CharacteristicKind FileType) { - First->FileChanged(Loc, Reason, FileType); - Second->FileChanged(Loc, Reason, FileType); + SrcMgr::CharacteristicKind FileType, + FileID PrevFID) { + First->FileChanged(Loc, Reason, FileType, PrevFID); + Second->FileChanged(Loc, Reason, FileType, PrevFID); } virtual void FileSkipped(const FileEntry &ParentFile, @@ -218,12 +233,12 @@ public: virtual void InclusionDirective(SourceLocation HashLoc, const Token &IncludeTok, - llvm::StringRef FileName, + StringRef FileName, bool IsAngled, const FileEntry *File, SourceLocation EndLoc, - llvm::StringRef SearchPath, - llvm::StringRef RelativePath) { + StringRef SearchPath, + StringRef RelativePath) { First->InclusionDirective(HashLoc, IncludeTok, FileName, IsAngled, File, EndLoc, SearchPath, RelativePath); Second->InclusionDirective(HashLoc, IncludeTok, FileName, IsAngled, File, @@ -246,32 +261,33 @@ public: Second->PragmaComment(Loc, Kind, Str); } - virtual void PragmaMessage(SourceLocation Loc, llvm::StringRef Str) { + virtual void PragmaMessage(SourceLocation Loc, StringRef Str) { First->PragmaMessage(Loc, Str); Second->PragmaMessage(Loc, Str); } virtual void PragmaDiagnosticPush(SourceLocation Loc, - llvm::StringRef Namespace) { + StringRef Namespace) { First->PragmaDiagnosticPush(Loc, Namespace); Second->PragmaDiagnosticPush(Loc, Namespace); } virtual void PragmaDiagnosticPop(SourceLocation Loc, - llvm::StringRef Namespace) { + StringRef Namespace) { First->PragmaDiagnosticPop(Loc, Namespace); Second->PragmaDiagnosticPop(Loc, Namespace); } - virtual void PragmaDiagnostic(SourceLocation Loc, llvm::StringRef Namespace, - diag::Mapping mapping, llvm::StringRef Str) { + virtual void PragmaDiagnostic(SourceLocation Loc, StringRef Namespace, + diag::Mapping mapping, StringRef Str) { First->PragmaDiagnostic(Loc, Namespace, mapping, Str); Second->PragmaDiagnostic(Loc, Namespace, mapping, Str); } - virtual void MacroExpands(const Token &MacroNameTok, const MacroInfo* MI) { - First->MacroExpands(MacroNameTok, MI); - Second->MacroExpands(MacroNameTok, MI); + virtual void MacroExpands(const Token &MacroNameTok, const MacroInfo* MI, + SourceRange Range) { + First->MacroExpands(MacroNameTok, MI, Range); + Second->MacroExpands(MacroNameTok, MI, Range); } virtual void MacroDefined(const Token &MacroNameTok, const MacroInfo *MI) { @@ -284,6 +300,16 @@ public: Second->MacroUndefined(MacroNameTok, MI); } + virtual void Defined(const Token &MacroNameTok) { + First->Defined(MacroNameTok); + Second->Defined(MacroNameTok); + } + + virtual void SourceRangeSkipped(SourceRange Range) { + First->SourceRangeSkipped(Range); + Second->SourceRangeSkipped(Range); + } + /// If -- This hook is called whenever an #if is seen. virtual void If(SourceRange Range) { First->If(Range); |