forked from OSchip/llvm-project
ObjectiveC migrator: More work towards
insertion of ObjC audit pragmas. llvm-svn: 188733
This commit is contained in:
parent
f9486598b5
commit
d38ad47cfa
|
@ -288,7 +288,8 @@ public:
|
||||||
/// \returns true if there was a failure, false on success.
|
/// \returns true if there was a failure, false on success.
|
||||||
static bool getRawToken(SourceLocation Loc, Token &Result,
|
static bool getRawToken(SourceLocation Loc, Token &Result,
|
||||||
const SourceManager &SM,
|
const SourceManager &SM,
|
||||||
const LangOptions &LangOpts);
|
const LangOptions &LangOpts,
|
||||||
|
bool IgnoreWhiteSpace = false);
|
||||||
|
|
||||||
/// \brief Given a location any where in a source buffer, find the location
|
/// \brief Given a location any where in a source buffer, find the location
|
||||||
/// that corresponds to the beginning of the token in which the original
|
/// that corresponds to the beginning of the token in which the original
|
||||||
|
|
|
@ -1001,8 +1001,9 @@ public:
|
||||||
|
|
||||||
/// \brief Relex the token at the specified location.
|
/// \brief Relex the token at the specified location.
|
||||||
/// \returns true if there was a failure, false on success.
|
/// \returns true if there was a failure, false on success.
|
||||||
bool getRawToken(SourceLocation Loc, Token &Result) {
|
bool getRawToken(SourceLocation Loc, Token &Result,
|
||||||
return Lexer::getRawToken(Loc, Result, SourceMgr, LangOpts);
|
bool IgnoreWhiteSpace = false) {
|
||||||
|
return Lexer::getRawToken(Loc, Result, SourceMgr, LangOpts, IgnoreWhiteSpace);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getSpellingOfSingleCharacterNumericConstant - Tok is a numeric constant
|
/// getSpellingOfSingleCharacterNumericConstant - Tok is a numeric constant
|
||||||
|
|
|
@ -815,7 +815,15 @@ void ObjCMigrateASTConsumer::migrateCFFunctions(
|
||||||
edit::Commit commit(*Editor);
|
edit::Commit commit(*Editor);
|
||||||
commit.insertBefore(FirstFD->getLocStart(), PragmaString);
|
commit.insertBefore(FirstFD->getLocStart(), PragmaString);
|
||||||
PragmaString = "\nCF_IMPLICIT_BRIDGING_DISABLED\n";
|
PragmaString = "\nCF_IMPLICIT_BRIDGING_DISABLED\n";
|
||||||
commit.insertAfterToken(LastFD->getLocEnd(), PragmaString);
|
SourceLocation EndLoc = LastFD->getLocEnd();
|
||||||
|
// get location just past end of function location.
|
||||||
|
EndLoc = PP.getLocForEndOfToken(EndLoc);
|
||||||
|
Token Tok;
|
||||||
|
// get locaiton of token that comes after end of function.
|
||||||
|
bool Failed = PP.getRawToken(EndLoc, Tok, /*IgnoreWhiteSpace=*/true);
|
||||||
|
if (!Failed)
|
||||||
|
EndLoc = Tok.getLocation();
|
||||||
|
commit.insertAfterToken(EndLoc, PragmaString);
|
||||||
Editor->commit(commit);
|
Editor->commit(commit);
|
||||||
|
|
||||||
CFFunctionIBCandidates.clear();
|
CFFunctionIBCandidates.clear();
|
||||||
|
|
|
@ -430,7 +430,8 @@ unsigned Lexer::MeasureTokenLength(SourceLocation Loc,
|
||||||
/// \returns true if there was a failure, false on success.
|
/// \returns true if there was a failure, false on success.
|
||||||
bool Lexer::getRawToken(SourceLocation Loc, Token &Result,
|
bool Lexer::getRawToken(SourceLocation Loc, Token &Result,
|
||||||
const SourceManager &SM,
|
const SourceManager &SM,
|
||||||
const LangOptions &LangOpts) {
|
const LangOptions &LangOpts,
|
||||||
|
bool IgnoreWhiteSpace) {
|
||||||
// TODO: this could be special cased for common tokens like identifiers, ')',
|
// TODO: this could be special cased for common tokens like identifiers, ')',
|
||||||
// etc to make this faster, if it mattered. Just look at StrData[0] to handle
|
// etc to make this faster, if it mattered. Just look at StrData[0] to handle
|
||||||
// all obviously single-char tokens. This could use
|
// all obviously single-char tokens. This could use
|
||||||
|
@ -448,7 +449,7 @@ bool Lexer::getRawToken(SourceLocation Loc, Token &Result,
|
||||||
|
|
||||||
const char *StrData = Buffer.data()+LocInfo.second;
|
const char *StrData = Buffer.data()+LocInfo.second;
|
||||||
|
|
||||||
if (isWhitespace(StrData[0]))
|
if (!IgnoreWhiteSpace && isWhitespace(StrData[0]))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Create a lexer starting at the beginning of this token.
|
// Create a lexer starting at the beginning of this token.
|
||||||
|
|
Loading…
Reference in New Issue