diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-27 17:53:17 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-27 17:53:17 +0000 |
commit | b2fb6de9070fea9abc56c8e8d5469066e964cefe (patch) | |
tree | 43e23d4d24ae483d9f8113d57f06fedb19d239c5 /lib/Lex/Preprocessor.cpp | |
parent | 51a75d0cc7651753399efdc3176feaee6214c3ca (diff) |
Clean up and document code modification hints.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65641 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex/Preprocessor.cpp')
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index ccb179d1e4..26777d9170 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -265,7 +265,6 @@ unsigned Preprocessor::getSpelling(const Token &Tok, return OutBuf-Buffer; } - /// CreateString - Plop the specified string into a scratch buffer and return a /// location for it. If specified, the source location provides a source /// location for the token. @@ -321,6 +320,25 @@ SourceLocation Preprocessor::AdvanceToTokenCharacter(SourceLocation TokStart, return TokStart.getFileLocWithOffset(PhysOffset); } +/// \brief Computes the source location just past the end of the +/// token at this source location. +/// +/// This routine can be used to produce a source location that +/// points just past the end of the token referenced by \p Loc, and +/// is generally used when a diagnostic needs to point just after a +/// token where it expected something different that it received. If +/// the returned source location would not be meaningful (e.g., if +/// it points into a macro), this routine returns an invalid +/// source location. +SourceLocation Preprocessor::getLocForEndOfToken(SourceLocation Loc) { + if (Loc.isInvalid() || !Loc.isFileID()) + return SourceLocation(); + + unsigned Len = Lexer::MeasureTokenLength(Loc, getSourceManager()); + return AdvanceToTokenCharacter(Loc, Len); +} + + //===----------------------------------------------------------------------===// // Preprocessor Initialization Methods |