forked from OSchip/llvm-project
Add an API call to retrieve the spelling data of a token from its SourceLocation.
llvm-svn: 127216
This commit is contained in:
parent
8f0daa28d4
commit
cff9bcfbd3
|
@ -644,13 +644,18 @@ public:
|
|||
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);
|
||||
}
|
||||
|
|
|
@ -278,6 +278,16 @@ void Preprocessor::CodeCompleteNaturalLanguage() {
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue