BugReport::getEndPath() - Only add a Stmt's range to the constructed PathDiagnosticEventPiece if the BugReport contained no explicit ranges.

llvm-svn: 71516
This commit is contained in:
Ted Kremenek 2009-05-11 23:50:59 +00:00
parent bd7d11f770
commit 5fb7847fbf
2 changed files with 13 additions and 9 deletions

View File

@ -244,11 +244,12 @@ class PathDiagnosticEventPiece : public PathDiagnosticSpotPiece {
public:
PathDiagnosticEventPiece(const PathDiagnosticLocation &pos,
const std::string& s)
: PathDiagnosticSpotPiece(pos, s, Event) {}
const std::string& s, bool addPosRange = true)
: PathDiagnosticSpotPiece(pos, s, Event, addPosRange) {}
PathDiagnosticEventPiece(const PathDiagnosticLocation &pos, const char* s)
: PathDiagnosticSpotPiece(pos, s, Event) {}
PathDiagnosticEventPiece(const PathDiagnosticLocation &pos, const char* s,
bool addPosRange = true)
: PathDiagnosticSpotPiece(pos, s, Event, addPosRange) {}
~PathDiagnosticEventPiece();

View File

@ -1198,13 +1198,16 @@ BugReport::getEndPath(BugReporterContext& BRC,
if (!S)
return NULL;
FullSourceLoc L(S->getLocStart(), BRC.getSourceManager());
PathDiagnosticPiece* P = new PathDiagnosticEventPiece(L, getDescription());
const SourceRange *Beg, *End;
getRanges(BRC.getBugReporter(), Beg, End);
getRanges(BRC.getBugReporter(), Beg, End);
PathDiagnosticLocation L(S, BRC.getSourceManager());
// Only add the statement itself as a range if we didn't specify any
// special ranges for this report.
PathDiagnosticPiece* P = new PathDiagnosticEventPiece(L, getDescription(),
Beg == End);
for (; Beg != End; ++Beg)
P->addRange(*Beg);