aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2011-09-15 18:56:07 +0000
committerAnna Zaks <ganna@apple.com>2011-09-15 18:56:07 +0000
commit4fdf97bf51d2a156cec3232efd6dae110aa02aa0 (patch)
tree7240de9e4106b186574f079a990100dc6227361b /lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
parent1a995ddaa53a20dcd063ea47eb1f533ecb0d243a (diff)
[analyzer] Refactor: make PathDiagnosticLocation responsible for validation of SourceLocations (commit 2 of ?):
- Fix a fixme and move the logic of creating a PathDiagnosticLocation corresponding to a ProgramPoint into a PathDiagnosticLocation constructor. - Rename PathDiagnosticLocation::create to differentiate from the added constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139825 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/BugReporterVisitors.cpp')
-rw-r--r--lib/StaticAnalyzer/Core/BugReporterVisitors.cpp36
1 files changed, 6 insertions, 30 deletions
diff --git a/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
index c6fd63f3bd..baef8cc9c0 100644
--- a/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
+++ b/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
@@ -238,23 +238,11 @@ PathDiagnosticPiece *FindLastStoreBRVisitor::VisitNode(const ExplodedNode *N,
return NULL;
}
- // FIXME: Refactor this into BugReporterContext.
- const Stmt *S = 0;
+ // Construct a new PathDiagnosticPiece.
ProgramPoint P = N->getLocation();
-
- if (BlockEdge *BE = dyn_cast<BlockEdge>(&P)) {
- const CFGBlock *BSrc = BE->getSrc();
- S = BSrc->getTerminatorCondition();
- }
- else if (PostStmt *PS = dyn_cast<PostStmt>(&P)) {
- S = PS->getStmt();
- }
-
- if (!S)
+ PathDiagnosticLocation L = PathDiagnosticLocation(P,BRC.getSourceManager());
+ if (!L.isValid())
return NULL;
-
- // Construct a new PathDiagnosticPiece.
- PathDiagnosticLocation L(S, BRC.getSourceManager(), P.getLocationContext());
return new PathDiagnosticEventPiece(L, os.str());
}
@@ -298,23 +286,11 @@ TrackConstraintBRVisitor::VisitNode(const ExplodedNode *N,
if (os.str().empty())
return NULL;
- // FIXME: Refactor this into BugReporterContext.
- const Stmt *S = 0;
+ // Construct a new PathDiagnosticPiece.
ProgramPoint P = N->getLocation();
-
- if (BlockEdge *BE = dyn_cast<BlockEdge>(&P)) {
- const CFGBlock *BSrc = BE->getSrc();
- S = BSrc->getTerminatorCondition();
- }
- else if (PostStmt *PS = dyn_cast<PostStmt>(&P)) {
- S = PS->getStmt();
- }
-
- if (!S)
+ PathDiagnosticLocation L = PathDiagnosticLocation(P,BRC.getSourceManager());
+ if (!L.isValid())
return NULL;
-
- // Construct a new PathDiagnosticPiece.
- PathDiagnosticLocation L(S, BRC.getSourceManager(), P.getLocationContext());
return new PathDiagnosticEventPiece(L, os.str());
}