зеркало из https://github.com/microsoft/clang.git
Mechanically rename SourceManager::getInstantiationLoc and
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135914 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
1cbac8ac44
Коммит
402785357a
|
@ -274,7 +274,7 @@ public:
|
||||||
|
|
||||||
FileID getFileID() const;
|
FileID getFileID() const;
|
||||||
|
|
||||||
FullSourceLoc getInstantiationLoc() const;
|
FullSourceLoc getExpansionLoc() const;
|
||||||
FullSourceLoc getSpellingLoc() const;
|
FullSourceLoc getSpellingLoc() const;
|
||||||
|
|
||||||
unsigned getInstantiationLineNumber(bool *Invalid = 0) const;
|
unsigned getInstantiationLineNumber(bool *Invalid = 0) const;
|
||||||
|
|
|
@ -723,11 +723,11 @@ public:
|
||||||
return SourceLocation::getFileLoc(FileOffset);
|
return SourceLocation::getFileLoc(FileOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getInstantiationLoc - Given a SourceLocation object, return the
|
/// getExpansionLoc - Given a SourceLocation object, return the expansion
|
||||||
/// instantiation location referenced by the ID.
|
/// location referenced by the ID.
|
||||||
SourceLocation getInstantiationLoc(SourceLocation Loc) const {
|
SourceLocation getExpansionLoc(SourceLocation Loc) const {
|
||||||
// Handle the non-mapped case inline, defer to out of line code to handle
|
// Handle the non-mapped case inline, defer to out of line code to handle
|
||||||
// instantiations.
|
// expansions.
|
||||||
if (Loc.isFileID()) return Loc;
|
if (Loc.isFileID()) return Loc;
|
||||||
return getInstantiationLocSlowCase(Loc);
|
return getInstantiationLocSlowCase(Loc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ typedef llvm::DenseMap<FileID, unsigned> FIDMap;
|
||||||
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
||||||
const SourceManager &SM, SourceLocation L) {
|
const SourceManager &SM, SourceLocation L) {
|
||||||
|
|
||||||
FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
|
FileID FID = SM.getFileID(SM.getExpansionLoc(L));
|
||||||
FIDMap::iterator I = FIDs.find(FID);
|
FIDMap::iterator I = FIDs.find(FID);
|
||||||
if (I != FIDs.end()) return;
|
if (I != FIDs.end()) return;
|
||||||
FIDs[FID] = V.size();
|
FIDs[FID] = V.size();
|
||||||
|
@ -31,7 +31,7 @@ static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
||||||
|
|
||||||
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
|
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
|
||||||
SourceLocation L) {
|
SourceLocation L) {
|
||||||
FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
|
FileID FID = SM.getFileID(SM.getExpansionLoc(L));
|
||||||
FIDMap::const_iterator I = FIDs.find(FID);
|
FIDMap::const_iterator I = FIDs.find(FID);
|
||||||
assert(I != FIDs.end());
|
assert(I != FIDs.end());
|
||||||
return I->second;
|
return I->second;
|
||||||
|
@ -47,7 +47,7 @@ static void EmitLocation(raw_ostream& o, const SourceManager &SM,
|
||||||
SourceLocation L, const FIDMap &FM,
|
SourceLocation L, const FIDMap &FM,
|
||||||
unsigned indent, bool extend = false) {
|
unsigned indent, bool extend = false) {
|
||||||
|
|
||||||
FullSourceLoc Loc(SM.getInstantiationLoc(L), const_cast<SourceManager&>(SM));
|
FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast<SourceManager&>(SM));
|
||||||
|
|
||||||
// Add in the length of the token, so that we cover multi-char tokens.
|
// Add in the length of the token, so that we cover multi-char tokens.
|
||||||
unsigned offset =
|
unsigned offset =
|
||||||
|
|
|
@ -100,7 +100,7 @@ public:
|
||||||
bool useWeak = canApplyWeak(Pass.Ctx, var->getType());
|
bool useWeak = canApplyWeak(Pass.Ctx, var->getType());
|
||||||
SourceManager &SM = Pass.Ctx.getSourceManager();
|
SourceManager &SM = Pass.Ctx.getSourceManager();
|
||||||
Transaction Trans(Pass.TA);
|
Transaction Trans(Pass.TA);
|
||||||
Pass.TA.replaceText(SM.getInstantiationLoc(attr->getLocation()),
|
Pass.TA.replaceText(SM.getExpansionLoc(attr->getLocation()),
|
||||||
"__block",
|
"__block",
|
||||||
useWeak ? "__weak" : "__unsafe_unretained");
|
useWeak ? "__weak" : "__unsafe_unretained");
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,11 +68,11 @@ class TransformActionsImpl {
|
||||||
SourceLocation beginLoc = range.getBegin(), endLoc = range.getEnd();
|
SourceLocation beginLoc = range.getBegin(), endLoc = range.getEnd();
|
||||||
assert(beginLoc.isValid() && endLoc.isValid());
|
assert(beginLoc.isValid() && endLoc.isValid());
|
||||||
if (range.isTokenRange()) {
|
if (range.isTokenRange()) {
|
||||||
Begin = FullSourceLoc(srcMgr.getInstantiationLoc(beginLoc), srcMgr);
|
Begin = FullSourceLoc(srcMgr.getExpansionLoc(beginLoc), srcMgr);
|
||||||
End = FullSourceLoc(getLocForEndOfToken(endLoc, srcMgr, PP), srcMgr);
|
End = FullSourceLoc(getLocForEndOfToken(endLoc, srcMgr, PP), srcMgr);
|
||||||
} else {
|
} else {
|
||||||
Begin = FullSourceLoc(srcMgr.getInstantiationLoc(beginLoc), srcMgr);
|
Begin = FullSourceLoc(srcMgr.getExpansionLoc(beginLoc), srcMgr);
|
||||||
End = FullSourceLoc(srcMgr.getInstantiationLoc(endLoc), srcMgr);
|
End = FullSourceLoc(srcMgr.getExpansionLoc(endLoc), srcMgr);
|
||||||
}
|
}
|
||||||
assert(Begin.isValid() && End.isValid());
|
assert(Begin.isValid() && End.isValid());
|
||||||
}
|
}
|
||||||
|
@ -381,7 +381,7 @@ bool TransformActionsImpl::canInsert(SourceLocation loc) {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SourceManager &SM = Ctx.getSourceManager();
|
SourceManager &SM = Ctx.getSourceManager();
|
||||||
if (SM.isInSystemHeader(SM.getInstantiationLoc(loc)))
|
if (SM.isInSystemHeader(SM.getExpansionLoc(loc)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (loc.isFileID())
|
if (loc.isFileID())
|
||||||
|
@ -394,7 +394,7 @@ bool TransformActionsImpl::canInsertAfterToken(SourceLocation loc) {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SourceManager &SM = Ctx.getSourceManager();
|
SourceManager &SM = Ctx.getSourceManager();
|
||||||
if (SM.isInSystemHeader(SM.getInstantiationLoc(loc)))
|
if (SM.isInSystemHeader(SM.getExpansionLoc(loc)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (loc.isFileID())
|
if (loc.isFileID())
|
||||||
|
@ -416,7 +416,7 @@ bool TransformActionsImpl::canReplaceText(SourceLocation loc, StringRef text) {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SourceManager &SM = Ctx.getSourceManager();
|
SourceManager &SM = Ctx.getSourceManager();
|
||||||
loc = SM.getInstantiationLoc(loc);
|
loc = SM.getExpansionLoc(loc);
|
||||||
|
|
||||||
// Break down the source location.
|
// Break down the source location.
|
||||||
std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc);
|
std::pair<FileID, unsigned> locInfo = SM.getDecomposedLoc(loc);
|
||||||
|
@ -477,7 +477,7 @@ void TransformActionsImpl::commitReplaceText(SourceLocation loc,
|
||||||
StringRef text,
|
StringRef text,
|
||||||
StringRef replacementText) {
|
StringRef replacementText) {
|
||||||
SourceManager &SM = Ctx.getSourceManager();
|
SourceManager &SM = Ctx.getSourceManager();
|
||||||
loc = SM.getInstantiationLoc(loc);
|
loc = SM.getExpansionLoc(loc);
|
||||||
// canReplaceText already checked if loc points at text.
|
// canReplaceText already checked if loc points at text.
|
||||||
SourceLocation afterText = loc.getFileLocWithOffset(text.size());
|
SourceLocation afterText = loc.getFileLocWithOffset(text.size());
|
||||||
|
|
||||||
|
@ -491,7 +491,7 @@ void TransformActionsImpl::commitIncreaseIndentation(SourceRange range,
|
||||||
IndentationRanges.push_back(
|
IndentationRanges.push_back(
|
||||||
std::make_pair(CharRange(CharSourceRange::getTokenRange(range),
|
std::make_pair(CharRange(CharSourceRange::getTokenRange(range),
|
||||||
SM, PP),
|
SM, PP),
|
||||||
SM.getInstantiationLoc(parentIndent)));
|
SM.getExpansionLoc(parentIndent)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransformActionsImpl::commitClearDiagnostic(ArrayRef<unsigned> IDs,
|
void TransformActionsImpl::commitClearDiagnostic(ArrayRef<unsigned> IDs,
|
||||||
|
@ -501,7 +501,7 @@ void TransformActionsImpl::commitClearDiagnostic(ArrayRef<unsigned> IDs,
|
||||||
|
|
||||||
void TransformActionsImpl::addInsertion(SourceLocation loc, StringRef text) {
|
void TransformActionsImpl::addInsertion(SourceLocation loc, StringRef text) {
|
||||||
SourceManager &SM = Ctx.getSourceManager();
|
SourceManager &SM = Ctx.getSourceManager();
|
||||||
loc = SM.getInstantiationLoc(loc);
|
loc = SM.getExpansionLoc(loc);
|
||||||
for (std::list<CharRange>::reverse_iterator
|
for (std::list<CharRange>::reverse_iterator
|
||||||
I = Removals.rbegin(), E = Removals.rend(); I != E; ++I) {
|
I = Removals.rbegin(), E = Removals.rend(); I != E; ++I) {
|
||||||
if (!SM.isBeforeInTranslationUnit(loc, I->End))
|
if (!SM.isBeforeInTranslationUnit(loc, I->End))
|
||||||
|
|
|
@ -540,7 +540,7 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass,
|
||||||
Diag.SuppressSystemWarnings &&
|
Diag.SuppressSystemWarnings &&
|
||||||
Loc.isValid() &&
|
Loc.isValid() &&
|
||||||
Diag.getSourceManager().isInSystemHeader(
|
Diag.getSourceManager().isInSystemHeader(
|
||||||
Diag.getSourceManager().getInstantiationLoc(Loc)))
|
Diag.getSourceManager().getExpansionLoc(Loc)))
|
||||||
return DiagnosticIDs::Ignored;
|
return DiagnosticIDs::Ignored;
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
|
|
|
@ -54,7 +54,7 @@ void SourceLocation::print(raw_ostream &OS, const SourceManager &SM)const{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SM.getInstantiationLoc(*this).print(OS, SM);
|
SM.getExpansionLoc(*this).print(OS, SM);
|
||||||
|
|
||||||
OS << " <Spelling=";
|
OS << " <Spelling=";
|
||||||
SM.getSpellingLoc(*this).print(OS, SM);
|
SM.getSpellingLoc(*this).print(OS, SM);
|
||||||
|
@ -75,9 +75,9 @@ FileID FullSourceLoc::getFileID() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FullSourceLoc FullSourceLoc::getInstantiationLoc() const {
|
FullSourceLoc FullSourceLoc::getExpansionLoc() const {
|
||||||
assert(isValid());
|
assert(isValid());
|
||||||
return FullSourceLoc(SrcMgr->getInstantiationLoc(*this), *SrcMgr);
|
return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
FullSourceLoc FullSourceLoc::getSpellingLoc() const {
|
FullSourceLoc FullSourceLoc::getSpellingLoc() const {
|
||||||
|
|
|
@ -51,7 +51,7 @@ CGDebugInfo::~CGDebugInfo() {
|
||||||
|
|
||||||
void CGDebugInfo::setLocation(SourceLocation Loc) {
|
void CGDebugInfo::setLocation(SourceLocation Loc) {
|
||||||
if (Loc.isValid())
|
if (Loc.isValid())
|
||||||
CurLoc = CGM.getContext().getSourceManager().getInstantiationLoc(Loc);
|
CurLoc = CGM.getContext().getSourceManager().getExpansionLoc(Loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getContextDescriptor - Get context info for the decl.
|
/// getContextDescriptor - Get context info for the decl.
|
||||||
|
@ -1740,7 +1740,7 @@ void CGDebugInfo::EmitStopPoint(CGBuilderTy &Builder) {
|
||||||
// Don't bother if things are the same as last time.
|
// Don't bother if things are the same as last time.
|
||||||
SourceManager &SM = CGM.getContext().getSourceManager();
|
SourceManager &SM = CGM.getContext().getSourceManager();
|
||||||
if (CurLoc == PrevLoc ||
|
if (CurLoc == PrevLoc ||
|
||||||
SM.getInstantiationLoc(CurLoc) == SM.getInstantiationLoc(PrevLoc))
|
SM.getExpansionLoc(CurLoc) == SM.getExpansionLoc(PrevLoc))
|
||||||
// New Builder may not be in sync with CGDebugInfo.
|
// New Builder may not be in sync with CGDebugInfo.
|
||||||
if (!Builder.getCurrentDebugLocation().isUnknown())
|
if (!Builder.getCurrentDebugLocation().isUnknown())
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -123,7 +123,7 @@ void DependencyFileCallback::FileChanged(SourceLocation Loc,
|
||||||
SourceManager &SM = PP->getSourceManager();
|
SourceManager &SM = PP->getSourceManager();
|
||||||
|
|
||||||
const FileEntry *FE =
|
const FileEntry *FE =
|
||||||
SM.getFileEntryForID(SM.getFileID(SM.getInstantiationLoc(Loc)));
|
SM.getFileEntryForID(SM.getFileID(SM.getExpansionLoc(Loc)));
|
||||||
if (FE == 0) return;
|
if (FE == 0) return;
|
||||||
|
|
||||||
StringRef Filename = FE->getName();
|
StringRef Filename = FE->getName();
|
||||||
|
|
|
@ -85,8 +85,8 @@ void TextDiagnosticPrinter::HighlightRange(const CharSourceRange &R,
|
||||||
"Expect a correspondence between source and caret line!");
|
"Expect a correspondence between source and caret line!");
|
||||||
if (!R.isValid()) return;
|
if (!R.isValid()) return;
|
||||||
|
|
||||||
SourceLocation Begin = SM.getInstantiationLoc(R.getBegin());
|
SourceLocation Begin = SM.getExpansionLoc(R.getBegin());
|
||||||
SourceLocation End = SM.getInstantiationLoc(R.getEnd());
|
SourceLocation End = SM.getExpansionLoc(R.getEnd());
|
||||||
|
|
||||||
// If the End location and the start location are the same and are a macro
|
// If the End location and the start location are the same and are a macro
|
||||||
// location, then the range was something that came from a macro expansion
|
// location, then the range was something that came from a macro expansion
|
||||||
|
@ -914,7 +914,7 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
|
||||||
|
|
||||||
if (DiagOpts->ShowSourceRanges && Info.getNumRanges()) {
|
if (DiagOpts->ShowSourceRanges && Info.getNumRanges()) {
|
||||||
FileID CaretFileID =
|
FileID CaretFileID =
|
||||||
SM.getFileID(SM.getInstantiationLoc(Info.getLocation()));
|
SM.getFileID(SM.getExpansionLoc(Info.getLocation()));
|
||||||
bool PrintedRange = false;
|
bool PrintedRange = false;
|
||||||
|
|
||||||
for (unsigned i = 0, e = Info.getNumRanges(); i != e; ++i) {
|
for (unsigned i = 0, e = Info.getNumRanges(); i != e; ++i) {
|
||||||
|
@ -923,8 +923,8 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
|
||||||
|
|
||||||
SourceLocation B = Info.getRange(i).getBegin();
|
SourceLocation B = Info.getRange(i).getBegin();
|
||||||
SourceLocation E = Info.getRange(i).getEnd();
|
SourceLocation E = Info.getRange(i).getEnd();
|
||||||
B = SM.getInstantiationLoc(B);
|
B = SM.getExpansionLoc(B);
|
||||||
E = SM.getInstantiationLoc(E);
|
E = SM.getExpansionLoc(E);
|
||||||
|
|
||||||
// If the End location and the start location are the same and are a
|
// If the End location and the start location are the same and are a
|
||||||
// macro location, then the range was something that came from a
|
// macro location, then the range was something that came from a
|
||||||
|
|
|
@ -394,7 +394,7 @@ unsigned Lexer::MeasureTokenLength(SourceLocation Loc,
|
||||||
|
|
||||||
// If this comes from a macro expansion, we really do want the macro name, not
|
// If this comes from a macro expansion, we really do want the macro name, not
|
||||||
// the token this macro expanded to.
|
// the token this macro expanded to.
|
||||||
Loc = SM.getInstantiationLoc(Loc);
|
Loc = SM.getExpansionLoc(Loc);
|
||||||
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
|
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
|
||||||
bool Invalid = false;
|
bool Invalid = false;
|
||||||
StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid);
|
StringRef Buffer = SM.getBufferData(LocInfo.first, &Invalid);
|
||||||
|
|
|
@ -55,7 +55,7 @@ void TokenLexer::Init(Token &Tok, SourceLocation ELEnd, MacroArgs *Actuals) {
|
||||||
// definition. Tokens that get lexed directly from the definition will
|
// definition. Tokens that get lexed directly from the definition will
|
||||||
// have their locations pointing inside this chunk. This is to avoid
|
// have their locations pointing inside this chunk. This is to avoid
|
||||||
// creating separate source location entries for each token.
|
// creating separate source location entries for each token.
|
||||||
SourceLocation macroStart = SM.getInstantiationLoc(Tokens[0].getLocation());
|
SourceLocation macroStart = SM.getExpansionLoc(Tokens[0].getLocation());
|
||||||
MacroDefStartInfo = SM.getDecomposedLoc(macroStart);
|
MacroDefStartInfo = SM.getDecomposedLoc(macroStart);
|
||||||
MacroExpansionStart = SM.createInstantiationLoc(macroStart,
|
MacroExpansionStart = SM.createInstantiationLoc(macroStart,
|
||||||
ExpandLocStart,
|
ExpandLocStart,
|
||||||
|
|
|
@ -311,7 +311,7 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {
|
||||||
const char *FIText = ": ";
|
const char *FIText = ": ";
|
||||||
const SourceManager &SM = PP.getSourceManager();
|
const SourceManager &SM = PP.getSourceManager();
|
||||||
if (FILoc.isFileID() || PP.isAtStartOfMacroExpansion(FILoc)) {
|
if (FILoc.isFileID() || PP.isAtStartOfMacroExpansion(FILoc)) {
|
||||||
FILoc = SM.getInstantiationLoc(FILoc);
|
FILoc = SM.getExpansionLoc(FILoc);
|
||||||
bool IsInvalid = false;
|
bool IsInvalid = false;
|
||||||
const char *SourcePtr =
|
const char *SourcePtr =
|
||||||
SM.getCharacterData(FILoc.getFileLocWithOffset(-1), &IsInvalid);
|
SM.getCharacterData(FILoc.getFileLocWithOffset(-1), &IsInvalid);
|
||||||
|
|
|
@ -33,8 +33,8 @@ using namespace clang;
|
||||||
void html::HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E,
|
void html::HighlightRange(Rewriter &R, SourceLocation B, SourceLocation E,
|
||||||
const char *StartTag, const char *EndTag) {
|
const char *StartTag, const char *EndTag) {
|
||||||
SourceManager &SM = R.getSourceMgr();
|
SourceManager &SM = R.getSourceMgr();
|
||||||
B = SM.getInstantiationLoc(B);
|
B = SM.getExpansionLoc(B);
|
||||||
E = SM.getInstantiationLoc(E);
|
E = SM.getExpansionLoc(E);
|
||||||
FileID FID = SM.getFileID(B);
|
FileID FID = SM.getFileID(B);
|
||||||
assert(SM.getFileID(E) == FID && "B/E not in the same file!");
|
assert(SM.getFileID(E) == FID && "B/E not in the same file!");
|
||||||
|
|
||||||
|
@ -542,7 +542,7 @@ void html::HighlightMacros(Rewriter &R, FileID FID, const Preprocessor& PP) {
|
||||||
// instantiation. It would be really nice to pop up a window with all the
|
// instantiation. It would be really nice to pop up a window with all the
|
||||||
// spelling of the tokens or something.
|
// spelling of the tokens or something.
|
||||||
while (!Tok.is(tok::eof) &&
|
while (!Tok.is(tok::eof) &&
|
||||||
SM.getInstantiationLoc(Tok.getLocation()) == LLoc.first) {
|
SM.getExpansionLoc(Tok.getLocation()) == LLoc.first) {
|
||||||
// Insert a newline if the macro expansion is getting large.
|
// Insert a newline if the macro expansion is getting large.
|
||||||
if (LineLen > 60) {
|
if (LineLen > 60) {
|
||||||
Expansion += "<br>";
|
Expansion += "<br>";
|
||||||
|
|
|
@ -112,7 +112,7 @@ void clang::RewriteMacrosInInput(Preprocessor &PP, raw_ostream *OS) {
|
||||||
// that aren't in the preprocessed view, we have macros that expand to no
|
// that aren't in the preprocessed view, we have macros that expand to no
|
||||||
// tokens, or macro arguments etc.
|
// tokens, or macro arguments etc.
|
||||||
while (RawTok.isNot(tok::eof) || PPTok.isNot(tok::eof)) {
|
while (RawTok.isNot(tok::eof) || PPTok.isNot(tok::eof)) {
|
||||||
SourceLocation PPLoc = SM.getInstantiationLoc(PPTok.getLocation());
|
SourceLocation PPLoc = SM.getExpansionLoc(PPTok.getLocation());
|
||||||
|
|
||||||
// If PPTok is from a different source file, ignore it.
|
// If PPTok is from a different source file, ignore it.
|
||||||
if (!SM.isFromMainFile(PPLoc)) {
|
if (!SM.isFromMainFile(PPLoc)) {
|
||||||
|
@ -197,7 +197,7 @@ void clang::RewriteMacrosInInput(Preprocessor &PP, raw_ostream *OS) {
|
||||||
while (PPOffs < RawOffs) {
|
while (PPOffs < RawOffs) {
|
||||||
Expansion += ' ' + PP.getSpelling(PPTok);
|
Expansion += ' ' + PP.getSpelling(PPTok);
|
||||||
PP.Lex(PPTok);
|
PP.Lex(PPTok);
|
||||||
PPLoc = SM.getInstantiationLoc(PPTok.getLocation());
|
PPLoc = SM.getExpansionLoc(PPTok.getLocation());
|
||||||
PPOffs = SM.getFileOffset(PPLoc);
|
PPOffs = SM.getFileOffset(PPLoc);
|
||||||
}
|
}
|
||||||
Expansion += ' ';
|
Expansion += ' ';
|
||||||
|
|
|
@ -690,7 +690,7 @@ void RewriteObjC::HandleTopLevelSingleDecl(Decl *D) {
|
||||||
// #included file. If the former, rewrite it now. If the later, check to see
|
// #included file. If the former, rewrite it now. If the later, check to see
|
||||||
// if we rewrote the #include/#import.
|
// if we rewrote the #include/#import.
|
||||||
SourceLocation Loc = D->getLocation();
|
SourceLocation Loc = D->getLocation();
|
||||||
Loc = SM->getInstantiationLoc(Loc);
|
Loc = SM->getExpansionLoc(Loc);
|
||||||
|
|
||||||
// If this is for a builtin, ignore it.
|
// If this is for a builtin, ignore it.
|
||||||
if (Loc.isInvalid()) return;
|
if (Loc.isInvalid()) return;
|
||||||
|
@ -2342,13 +2342,13 @@ void RewriteObjC::RewriteTypeOfDecl(VarDecl *ND) {
|
||||||
startLoc = ECE->getLParenLoc();
|
startLoc = ECE->getLParenLoc();
|
||||||
else
|
else
|
||||||
startLoc = E->getLocStart();
|
startLoc = E->getLocStart();
|
||||||
startLoc = SM->getInstantiationLoc(startLoc);
|
startLoc = SM->getExpansionLoc(startLoc);
|
||||||
const char *endBuf = SM->getCharacterData(startLoc);
|
const char *endBuf = SM->getCharacterData(startLoc);
|
||||||
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
|
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SourceLocation X = ND->getLocEnd();
|
SourceLocation X = ND->getLocEnd();
|
||||||
X = SM->getInstantiationLoc(X);
|
X = SM->getExpansionLoc(X);
|
||||||
const char *endBuf = SM->getCharacterData(X);
|
const char *endBuf = SM->getCharacterData(X);
|
||||||
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
|
ReplaceText(DeclLoc, endBuf-startBuf-1, TypeAsString);
|
||||||
}
|
}
|
||||||
|
@ -5108,7 +5108,7 @@ void RewriteObjC::RewriteByRefVar(VarDecl *ND) {
|
||||||
DeclLoc = ND->getLocation();
|
DeclLoc = ND->getLocation();
|
||||||
const char *startBuf = SM->getCharacterData(DeclLoc);
|
const char *startBuf = SM->getCharacterData(DeclLoc);
|
||||||
SourceLocation X = ND->getLocEnd();
|
SourceLocation X = ND->getLocEnd();
|
||||||
X = SM->getInstantiationLoc(X);
|
X = SM->getExpansionLoc(X);
|
||||||
const char *endBuf = SM->getCharacterData(X);
|
const char *endBuf = SM->getCharacterData(X);
|
||||||
std::string Name(ND->getNameAsString());
|
std::string Name(ND->getNameAsString());
|
||||||
std::string ByrefType;
|
std::string ByrefType;
|
||||||
|
@ -5203,7 +5203,7 @@ void RewriteObjC::RewriteByRefVar(VarDecl *ND) {
|
||||||
startLoc = ECE->getLParenLoc();
|
startLoc = ECE->getLParenLoc();
|
||||||
else
|
else
|
||||||
startLoc = E->getLocStart();
|
startLoc = E->getLocStart();
|
||||||
startLoc = SM->getInstantiationLoc(startLoc);
|
startLoc = SM->getExpansionLoc(startLoc);
|
||||||
endBuf = SM->getCharacterData(startLoc);
|
endBuf = SM->getCharacterData(startLoc);
|
||||||
ByrefType += " " + Name;
|
ByrefType += " " + Name;
|
||||||
ByrefType += " = {(void*)";
|
ByrefType += " = {(void*)";
|
||||||
|
|
|
@ -687,7 +687,7 @@ bool Sema::findMacroSpelling(SourceLocation &locref, StringRef name) {
|
||||||
|
|
||||||
// There's no good way right now to look at the intermediate
|
// There's no good way right now to look at the intermediate
|
||||||
// instantiations, so just jump to the instantiation location.
|
// instantiations, so just jump to the instantiation location.
|
||||||
loc = getSourceManager().getInstantiationLoc(loc);
|
loc = getSourceManager().getExpansionLoc(loc);
|
||||||
|
|
||||||
// If that's written with the name, stop here.
|
// If that's written with the name, stop here.
|
||||||
SmallVector<char, 16> buffer;
|
SmallVector<char, 16> buffer;
|
||||||
|
|
|
@ -4947,7 +4947,7 @@ Decl *Sema::ActOnUsingDirective(Scope *S,
|
||||||
IdentLoc, Named, CommonAncestor);
|
IdentLoc, Named, CommonAncestor);
|
||||||
|
|
||||||
if (IsUsingDirectiveInToplevelContext(CurContext) &&
|
if (IsUsingDirectiveInToplevelContext(CurContext) &&
|
||||||
!SourceMgr.isFromMainFile(SourceMgr.getInstantiationLoc(IdentLoc))) {
|
!SourceMgr.isFromMainFile(SourceMgr.getExpansionLoc(IdentLoc))) {
|
||||||
Diag(IdentLoc, diag::warn_using_directive_in_header);
|
Diag(IdentLoc, diag::warn_using_directive_in_header);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -974,10 +974,10 @@ bool EdgeBuilder::containsLocation(const PathDiagnosticLocation &Container,
|
||||||
SourceRange ContaineeR = Containee.asRange();
|
SourceRange ContaineeR = Containee.asRange();
|
||||||
|
|
||||||
SourceManager &SM = PDB.getSourceManager();
|
SourceManager &SM = PDB.getSourceManager();
|
||||||
SourceLocation ContainerRBeg = SM.getInstantiationLoc(ContainerR.getBegin());
|
SourceLocation ContainerRBeg = SM.getExpansionLoc(ContainerR.getBegin());
|
||||||
SourceLocation ContainerREnd = SM.getInstantiationLoc(ContainerR.getEnd());
|
SourceLocation ContainerREnd = SM.getExpansionLoc(ContainerR.getEnd());
|
||||||
SourceLocation ContaineeRBeg = SM.getInstantiationLoc(ContaineeR.getBegin());
|
SourceLocation ContaineeRBeg = SM.getExpansionLoc(ContaineeR.getBegin());
|
||||||
SourceLocation ContaineeREnd = SM.getInstantiationLoc(ContaineeR.getEnd());
|
SourceLocation ContaineeREnd = SM.getExpansionLoc(ContaineeR.getEnd());
|
||||||
|
|
||||||
unsigned ContainerBegLine = SM.getInstantiationLineNumber(ContainerRBeg);
|
unsigned ContainerBegLine = SM.getInstantiationLineNumber(ContainerRBeg);
|
||||||
unsigned ContainerEndLine = SM.getInstantiationLineNumber(ContainerREnd);
|
unsigned ContainerEndLine = SM.getInstantiationLineNumber(ContainerREnd);
|
||||||
|
@ -1010,8 +1010,8 @@ void EdgeBuilder::rawAddEdge(PathDiagnosticLocation NewLoc) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// FIXME: Ignore intra-macro edges for now.
|
// FIXME: Ignore intra-macro edges for now.
|
||||||
if (NewLocClean.asLocation().getInstantiationLoc() ==
|
if (NewLocClean.asLocation().getExpansionLoc() ==
|
||||||
PrevLocClean.asLocation().getInstantiationLoc())
|
PrevLocClean.asLocation().getExpansionLoc())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PD.push_front(new PathDiagnosticControlFlowPiece(NewLocClean, PrevLocClean));
|
PD.push_front(new PathDiagnosticControlFlowPiece(NewLocClean, PrevLocClean));
|
||||||
|
@ -1495,7 +1495,7 @@ static void CompactPathDiagnostic(PathDiagnostic &PD, const SourceManager& SM) {
|
||||||
// Determine the instantiation location, which is the location we group
|
// Determine the instantiation location, which is the location we group
|
||||||
// related PathDiagnosticPieces.
|
// related PathDiagnosticPieces.
|
||||||
SourceLocation InstantiationLoc = Loc.isMacroID() ?
|
SourceLocation InstantiationLoc = Loc.isMacroID() ?
|
||||||
SM.getInstantiationLoc(Loc) :
|
SM.getExpansionLoc(Loc) :
|
||||||
SourceLocation();
|
SourceLocation();
|
||||||
|
|
||||||
if (Loc.isFileID()) {
|
if (Loc.isFileID()) {
|
||||||
|
@ -1517,7 +1517,7 @@ static void CompactPathDiagnostic(PathDiagnostic &PD, const SourceManager& SM) {
|
||||||
PathDiagnosticMacroPiece *MacroGroup = 0;
|
PathDiagnosticMacroPiece *MacroGroup = 0;
|
||||||
|
|
||||||
SourceLocation ParentInstantiationLoc = InstantiationLoc.isMacroID() ?
|
SourceLocation ParentInstantiationLoc = InstantiationLoc.isMacroID() ?
|
||||||
SM.getInstantiationLoc(Loc) :
|
SM.getExpansionLoc(Loc) :
|
||||||
SourceLocation();
|
SourceLocation();
|
||||||
|
|
||||||
// Walk the entire macro stack.
|
// Walk the entire macro stack.
|
||||||
|
|
|
@ -143,7 +143,7 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D,
|
||||||
|
|
||||||
// Verify that the entire path is from the same FileID.
|
// Verify that the entire path is from the same FileID.
|
||||||
for (PathDiagnostic::const_iterator I = D.begin(), E = D.end(); I != E; ++I) {
|
for (PathDiagnostic::const_iterator I = D.begin(), E = D.end(); I != E; ++I) {
|
||||||
FullSourceLoc L = I->getLocation().asLocation().getInstantiationLoc();
|
FullSourceLoc L = I->getLocation().asLocation().getExpansionLoc();
|
||||||
|
|
||||||
if (FID.isInvalid()) {
|
if (FID.isInvalid()) {
|
||||||
FID = SMgr.getFileID(L);
|
FID = SMgr.getFileID(L);
|
||||||
|
@ -154,12 +154,12 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D,
|
||||||
for (PathDiagnosticPiece::range_iterator RI=I->ranges_begin(),
|
for (PathDiagnosticPiece::range_iterator RI=I->ranges_begin(),
|
||||||
RE=I->ranges_end(); RI!=RE; ++RI) {
|
RE=I->ranges_end(); RI!=RE; ++RI) {
|
||||||
|
|
||||||
SourceLocation L = SMgr.getInstantiationLoc(RI->getBegin());
|
SourceLocation L = SMgr.getExpansionLoc(RI->getBegin());
|
||||||
|
|
||||||
if (!L.isFileID() || SMgr.getFileID(L) != FID)
|
if (!L.isFileID() || SMgr.getFileID(L) != FID)
|
||||||
return; // FIXME: Emit a warning?
|
return; // FIXME: Emit a warning?
|
||||||
|
|
||||||
L = SMgr.getInstantiationLoc(RI->getEnd());
|
L = SMgr.getExpansionLoc(RI->getEnd());
|
||||||
|
|
||||||
if (!L.isFileID() || SMgr.getFileID(L) != FID)
|
if (!L.isFileID() || SMgr.getFileID(L) != FID)
|
||||||
return; // FIXME: Emit a warning?
|
return; // FIXME: Emit a warning?
|
||||||
|
@ -335,7 +335,7 @@ void HTMLDiagnostics::HandlePiece(Rewriter& R, FileID BugFileID,
|
||||||
// Compute the column number. Rewind from the current position to the start
|
// Compute the column number. Rewind from the current position to the start
|
||||||
// of the line.
|
// of the line.
|
||||||
unsigned ColNo = SM.getColumnNumber(LPosInfo.first, LPosInfo.second);
|
unsigned ColNo = SM.getColumnNumber(LPosInfo.first, LPosInfo.second);
|
||||||
const char *TokInstantiationPtr =Pos.getInstantiationLoc().getCharacterData();
|
const char *TokInstantiationPtr =Pos.getExpansionLoc().getCharacterData();
|
||||||
const char *LineStart = TokInstantiationPtr-ColNo;
|
const char *LineStart = TokInstantiationPtr-ColNo;
|
||||||
|
|
||||||
// Compute LineEnd.
|
// Compute LineEnd.
|
||||||
|
@ -441,7 +441,7 @@ void HTMLDiagnostics::HandlePiece(Rewriter& R, FileID BugFileID,
|
||||||
|
|
||||||
// Get the name of the macro by relexing it.
|
// Get the name of the macro by relexing it.
|
||||||
{
|
{
|
||||||
FullSourceLoc L = MP->getLocation().asLocation().getInstantiationLoc();
|
FullSourceLoc L = MP->getLocation().asLocation().getExpansionLoc();
|
||||||
assert(L.isFileID());
|
assert(L.isFileID());
|
||||||
StringRef BufferInfo = L.getBufferData();
|
StringRef BufferInfo = L.getBufferData();
|
||||||
const char* MacroName = L.getDecomposedLoc().second + BufferInfo.data();
|
const char* MacroName = L.getDecomposedLoc().second + BufferInfo.data();
|
||||||
|
@ -549,10 +549,10 @@ void HTMLDiagnostics::HighlightRange(Rewriter& R, FileID BugFileID,
|
||||||
SourceManager &SM = R.getSourceMgr();
|
SourceManager &SM = R.getSourceMgr();
|
||||||
const LangOptions &LangOpts = R.getLangOpts();
|
const LangOptions &LangOpts = R.getLangOpts();
|
||||||
|
|
||||||
SourceLocation InstantiationStart = SM.getInstantiationLoc(Range.getBegin());
|
SourceLocation InstantiationStart = SM.getExpansionLoc(Range.getBegin());
|
||||||
unsigned StartLineNo = SM.getInstantiationLineNumber(InstantiationStart);
|
unsigned StartLineNo = SM.getInstantiationLineNumber(InstantiationStart);
|
||||||
|
|
||||||
SourceLocation InstantiationEnd = SM.getInstantiationLoc(Range.getEnd());
|
SourceLocation InstantiationEnd = SM.getExpansionLoc(Range.getEnd());
|
||||||
unsigned EndLineNo = SM.getInstantiationLineNumber(InstantiationEnd);
|
unsigned EndLineNo = SM.getInstantiationLineNumber(InstantiationEnd);
|
||||||
|
|
||||||
if (EndLineNo < StartLineNo)
|
if (EndLineNo < StartLineNo)
|
||||||
|
|
|
@ -109,7 +109,7 @@ PlistDiagnostics::getGenerationScheme() const {
|
||||||
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
||||||
const SourceManager* SM, SourceLocation L) {
|
const SourceManager* SM, SourceLocation L) {
|
||||||
|
|
||||||
FileID FID = SM->getFileID(SM->getInstantiationLoc(L));
|
FileID FID = SM->getFileID(SM->getExpansionLoc(L));
|
||||||
FIDMap::iterator I = FIDs.find(FID);
|
FIDMap::iterator I = FIDs.find(FID);
|
||||||
if (I != FIDs.end()) return;
|
if (I != FIDs.end()) return;
|
||||||
FIDs[FID] = V.size();
|
FIDs[FID] = V.size();
|
||||||
|
@ -118,7 +118,7 @@ static void AddFID(FIDMap &FIDs, SmallVectorImpl<FileID> &V,
|
||||||
|
|
||||||
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
|
static unsigned GetFID(const FIDMap& FIDs, const SourceManager &SM,
|
||||||
SourceLocation L) {
|
SourceLocation L) {
|
||||||
FileID FID = SM.getFileID(SM.getInstantiationLoc(L));
|
FileID FID = SM.getFileID(SM.getExpansionLoc(L));
|
||||||
FIDMap::const_iterator I = FIDs.find(FID);
|
FIDMap::const_iterator I = FIDs.find(FID);
|
||||||
assert(I != FIDs.end());
|
assert(I != FIDs.end());
|
||||||
return I->second;
|
return I->second;
|
||||||
|
@ -134,7 +134,7 @@ static void EmitLocation(raw_ostream& o, const SourceManager &SM,
|
||||||
SourceLocation L, const FIDMap &FM,
|
SourceLocation L, const FIDMap &FM,
|
||||||
unsigned indent, bool extend = false) {
|
unsigned indent, bool extend = false) {
|
||||||
|
|
||||||
FullSourceLoc Loc(SM.getInstantiationLoc(L), const_cast<SourceManager&>(SM));
|
FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast<SourceManager&>(SM));
|
||||||
|
|
||||||
// Add in the length of the token, so that we cover multi-char tokens.
|
// Add in the length of the token, so that we cover multi-char tokens.
|
||||||
unsigned offset =
|
unsigned offset =
|
||||||
|
|
|
@ -267,7 +267,7 @@ void AnalysisConsumer::HandleCode(Decl *D) {
|
||||||
// Don't run the actions on declarations in header files unless
|
// Don't run the actions on declarations in header files unless
|
||||||
// otherwise specified.
|
// otherwise specified.
|
||||||
SourceManager &SM = Ctx->getSourceManager();
|
SourceManager &SM = Ctx->getSourceManager();
|
||||||
SourceLocation SL = SM.getInstantiationLoc(D->getLocation());
|
SourceLocation SL = SM.getExpansionLoc(D->getLocation());
|
||||||
if (!Opts.AnalyzeAll && !SM.isFromMainFile(SL))
|
if (!Opts.AnalyzeAll && !SM.isFromMainFile(SL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -2824,7 +2824,7 @@ void clang_getInstantiationLocation(CXSourceLocation location,
|
||||||
|
|
||||||
const SourceManager &SM =
|
const SourceManager &SM =
|
||||||
*static_cast<const SourceManager*>(location.ptr_data[0]);
|
*static_cast<const SourceManager*>(location.ptr_data[0]);
|
||||||
SourceLocation InstLoc = SM.getInstantiationLoc(Loc);
|
SourceLocation InstLoc = SM.getExpansionLoc(Loc);
|
||||||
|
|
||||||
// Check that the FileID is invalid on the expansion location.
|
// Check that the FileID is invalid on the expansion location.
|
||||||
// This can manifest in invalid code.
|
// This can manifest in invalid code.
|
||||||
|
@ -2865,7 +2865,7 @@ void clang_getSpellingLocation(CXSourceLocation location,
|
||||||
SM.getFileEntryForID(SM.getDecomposedLoc(SimpleSpellingLoc).first))
|
SM.getFileEntryForID(SM.getDecomposedLoc(SimpleSpellingLoc).first))
|
||||||
SpellLoc = SimpleSpellingLoc;
|
SpellLoc = SimpleSpellingLoc;
|
||||||
else
|
else
|
||||||
SpellLoc = SM.getInstantiationLoc(SpellLoc);
|
SpellLoc = SM.getExpansionLoc(SpellLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc);
|
std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc);
|
||||||
|
|
|
@ -486,7 +486,7 @@ bool USRGenerator::GenLoc(const Decl *D) {
|
||||||
IgnoreResults = true;
|
IgnoreResults = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
L = SM.getInstantiationLoc(L);
|
L = SM.getExpansionLoc(L);
|
||||||
const std::pair<FileID, unsigned> &Decomposed = SM.getDecomposedLoc(L);
|
const std::pair<FileID, unsigned> &Decomposed = SM.getDecomposedLoc(L);
|
||||||
const FileEntry *FE = SM.getFileEntryForID(Decomposed.first);
|
const FileEntry *FE = SM.getFileEntryForID(Decomposed.first);
|
||||||
if (FE) {
|
if (FE) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче