From: Alp Toker Date: Sat, 25 Jan 2014 14:38:41 +0000 (+0000) Subject: PlistSupport: Eliminate duplicated EmitLocation() and EmitRange() functions X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f734c7abec348a32ee534e6bac1271f7bd3d756c;p=clang PlistSupport: Eliminate duplicated EmitLocation() and EmitRange() functions git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200077 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/PlistSupport.h b/include/clang/Basic/PlistSupport.h index e410aa3b37..e636ce2a10 100644 --- a/include/clang/Basic/PlistSupport.h +++ b/include/clang/Basic/PlistSupport.h @@ -7,13 +7,16 @@ // //===----------------------------------------------------------------------===// +#ifndef LLVM_CLANG_PLISTSUPPORT_H +#define LLVM_CLANG_PLISTSUPPORT_H + #include "llvm/Support/raw_ostream.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/SourceManager.h" #include "clang/Lex/Lexer.h" namespace clang { - +namespace markup { typedef llvm::DenseMap FIDMap; static const char *PlistHeader = @@ -24,7 +27,6 @@ static const char *PlistHeader = static void AddFID(FIDMap &FIDs, SmallVectorImpl &V, const SourceManager &SM, SourceLocation L) { - FileID FID = SM.getFileID(SM.getExpansionLoc(L)); FIDMap::iterator I = FIDs.find(FID); if (I != FIDs.end()) @@ -51,7 +53,6 @@ static void EmitLocation(raw_ostream &o, const SourceManager &SM, const LangOptions &LangOpts, SourceLocation L, const FIDMap &FM, unsigned indent, bool extend = false) { - FullSourceLoc Loc(SM.getExpansionLoc(L), const_cast(SM)); // Add in the length of the token, so that we cover multi-char tokens. @@ -107,3 +108,6 @@ static raw_ostream &EmitString(raw_ostream &o, StringRef s) { return o; } } +} + +#endif diff --git a/lib/ARCMigrate/PlistReporter.cpp b/lib/ARCMigrate/PlistReporter.cpp index 433f41c517..d88392df30 100644 --- a/lib/ARCMigrate/PlistReporter.cpp +++ b/lib/ARCMigrate/PlistReporter.cpp @@ -14,6 +14,7 @@ #include "clang/Lex/Lexer.h" using namespace clang; using namespace arcmt; +using namespace markup; void arcmt::writeARCDiagsToPlist(const std::string &outPath, ArrayRef diags, diff --git a/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp b/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp index 1a40f5e582..f10ce20382 100644 --- a/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp +++ b/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp @@ -24,6 +24,7 @@ #include "llvm/Support/Casting.h" using namespace clang; using namespace ento; +using namespace markup; namespace { class PlistDiagnostics : public PathDiagnosticConsumer { @@ -77,23 +78,6 @@ void ento::createPlistMultiFileDiagnosticConsumer(AnalyzerOptions &AnalyzerOpts, PP.getLangOpts(), true)); } -static void EmitLocation(raw_ostream &o, const SourceManager &SM, - const LangOptions &LangOpts, - const PathDiagnosticLocation &L, const FIDMap& FM, - unsigned indent, bool extend = false) { - EmitLocation(o, SM, LangOpts, L.asLocation(), FM, indent, extend); -} - -static void EmitRange(raw_ostream &o, const SourceManager &SM, - const LangOptions &LangOpts, - PathDiagnosticRange R, const FIDMap &FM, - unsigned indent) { - Indent(o, indent) << "\n"; - EmitLocation(o, SM, LangOpts, R.getBegin(), FM, indent+1); - EmitLocation(o, SM, LangOpts, R.getEnd(), FM, indent+1, !R.isPoint); - Indent(o, indent) << "\n"; -} - static void ReportControlFlow(raw_ostream &o, const PathDiagnosticControlFlowPiece& P, const FIDMap& FM, @@ -121,11 +105,13 @@ static void ReportControlFlow(raw_ostream &o, // logic for clients. Indent(o, indent) << "start\n"; SourceLocation StartEdge = I->getStart().asRange().getBegin(); - EmitRange(o, SM, LangOpts, SourceRange(StartEdge, StartEdge), FM, indent+1); + EmitRange(o, SM, LangOpts, CharSourceRange::getTokenRange(StartEdge), FM, + indent + 1); Indent(o, indent) << "end\n"; SourceLocation EndEdge = I->getEnd().asRange().getBegin(); - EmitRange(o, SM, LangOpts, SourceRange(EndEdge, EndEdge), FM, indent+1); + EmitRange(o, SM, LangOpts, CharSourceRange::getTokenRange(EndEdge), FM, + indent + 1); --indent; Indent(o, indent) << "\n"; @@ -177,7 +163,8 @@ static void ReportEvent(raw_ostream &o, const PathDiagnosticPiece& P, ++indent; for (ArrayRef::iterator I = Ranges.begin(), E = Ranges.end(); I != E; ++I) { - EmitRange(o, SM, LangOpts, *I, FM, indent+1); + EmitRange(o, SM, LangOpts, CharSourceRange::getTokenRange(*I), FM, + indent + 1); } --indent; Indent(o, indent) << "\n"; @@ -468,7 +455,7 @@ void PlistDiagnostics::FlushDiagnosticsImpl( // Output the location of the bug. o << " location\n"; - EmitLocation(o, *SM, LangOpts, D->getLocation(), FM, 2); + EmitLocation(o, *SM, LangOpts, D->getLocation().asLocation(), FM, 2); // Output the diagnostic to the sub-diagnostic client, if any. if (!filesMade->empty()) {