return Diags->Report(Tok.getLocation(), DiagID);
}
+ /// getSpelling() - Return the 'spelling' of the token at the given location.
+ ///
+ /// \param invalid If non-null, will be set \c true if an error occurs.
+ llvm::StringRef getSpelling(SourceLocation loc, bool *invalid = 0) const;
+
/// getSpelling() - Return the 'spelling' of the Tok token. The spelling of a
/// token is the characters used to represent the token in the source file
/// after trigraph expansion and escaped-newline folding. In particular, this
/// wants to get the true, uncanonicalized, spelling of things like digraphs
/// UCNs, etc.
///
- /// \param Invalid If non-NULL, will be set \c true if an error occurs.
+ /// \param Invalid If non-null, will be set \c true if an error occurs.
std::string getSpelling(const Token &Tok, bool *Invalid = 0) const {
return Lexer::getSpelling(Tok, SourceMgr, Features, Invalid);
}
CodeComplete->CodeCompleteNaturalLanguage();
}
+llvm::StringRef Preprocessor::getSpelling(SourceLocation loc,
+ bool *invalid) const {
+ bool invalidTemp = false;
+ if (!invalid) invalid = &invalidTemp;
+ const char *begin = SourceMgr.getCharacterData(loc, invalid);
+ if (*invalid) return llvm::StringRef();
+
+ unsigned length = Lexer::MeasureTokenLength(loc, SourceMgr, Features);
+ return llvm::StringRef(begin, length);
+}
/// getSpelling - This method is used to get the spelling of a token into a
/// SmallVector. Note that the returned StringRef may not point to the