Change Lexer::makeFileCharRange() to have it accept a CharSourceRange
instead of a SourceRange, and handle the case where the range is
a char (not token) range.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149677 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/SourceLocation.h b/include/clang/Basic/SourceLocation.h
index 154148c..5854639 100644
--- a/include/clang/Basic/SourceLocation.h
+++ b/include/clang/Basic/SourceLocation.h
@@ -245,6 +245,7 @@
/// the last token. Return false if the end of this range specifies the last
/// character in the range.
bool isTokenRange() const { return IsTokenRange; }
+ bool isCharRange() const { return !IsTokenRange; }
SourceLocation getBegin() const { return Range.getBegin(); }
SourceLocation getEnd() const { return Range.getEnd(); }
diff --git a/include/clang/Lex/Lexer.h b/include/clang/Lex/Lexer.h
index a935718..bad9844 100644
--- a/include/clang/Lex/Lexer.h
+++ b/include/clang/Lex/Lexer.h
@@ -331,11 +331,11 @@
const LangOptions &LangOpts,
SourceLocation *MacroEnd = 0);
- /// \brief Accepts a token source range and returns a character range with
- /// file locations.
+ /// \brief Accepts a range and returns a character range with file locations.
+ ///
/// Returns a null range if a part of the range resides inside a macro
/// expansion or the range does not reside on the same FileID.
- static CharSourceRange makeFileCharRange(SourceRange TokenRange,
+ static CharSourceRange makeFileCharRange(CharSourceRange Range,
const SourceManager &SM,
const LangOptions &LangOpts);