aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/BugReporter.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-23 23:13:51 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-23 23:13:51 +0000
commitb479dadea93b93d3f0a335c3518b703f140b3f50 (patch)
treee38ec926bdaac2ad901df9f2b041f8417ba5f918 /lib/Analysis/BugReporter.cpp
parent2d62ab1747d17cbd40b71f42535fa72be755383d (diff)
Tidy up 'ExecutionContinues' to distinguish between jumping to the end of a 'method' or 'funciton'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65346 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/BugReporter.cpp')
-rw-r--r--lib/Analysis/BugReporter.cpp31
1 files changed, 14 insertions, 17 deletions
diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp
index 09a4f2b45b..a89542d4c1 100644
--- a/lib/Analysis/BugReporter.cpp
+++ b/lib/Analysis/BugReporter.cpp
@@ -83,25 +83,22 @@ static inline Stmt* GetCurrentOrNextStmt(const ExplodedNode<GRState>* N) {
//===----------------------------------------------------------------------===//
// Diagnostics for 'execution continues on line XXX'.
//===----------------------------------------------------------------------===//
-
-static void ExecutionContinues(llvm::raw_string_ostream& os,
- SourceManager& SMgr,
- const Stmt* S) {
+
+static inline void ExecutionContinues(llvm::raw_string_ostream& os,
+ SourceManager& SMgr,
+ const ExplodedNode<GRState>* N,
+ const Decl& D) {
+
// Slow, but probably doesn't matter.
if (os.str().empty())
os << ' ';
- if (S)
+ if (Stmt *S = GetNextStmt(N))
os << "Execution continues on line "
- << SMgr.getInstantiationLineNumber(S->getLocStart()) << '.';
+ << SMgr.getInstantiationLineNumber(S->getLocStart()) << '.';
else
- os << "Execution jumps to the end of the function.";
-}
-
-static inline void ExecutionContinues(llvm::raw_string_ostream& os,
- SourceManager& SMgr,
- const ExplodedNode<GRState>* N) {
- ExecutionContinues(os, SMgr, GetNextStmt(N));
+ os << "Execution jumps to the end of the "
+ << (isa<ObjCMethodDecl>(D) ? "method" : "function") << '.';
}
//===----------------------------------------------------------------------===//
@@ -704,7 +701,7 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
}
else {
os << "'Default' branch taken. ";
- ExecutionContinues(os, SMgr, N);
+ ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
}
PD.push_front(new PathDiagnosticPiece(L, os.str()));
@@ -715,7 +712,7 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
case Stmt::ContinueStmtClass: {
std::string sbuf;
llvm::raw_string_ostream os(sbuf);
- ExecutionContinues(os, SMgr, N);
+ ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
PD.push_front(new PathDiagnosticPiece(L, os.str()));
break;
}
@@ -741,7 +738,7 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
llvm::raw_string_ostream os(sbuf);
os << "Loop condition is true. ";
- ExecutionContinues(os, SMgr, N);
+ ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
PD.push_front(new PathDiagnosticPiece(L, os.str()));
}
@@ -760,7 +757,7 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
llvm::raw_string_ostream os(sbuf);
os << "Loop condition is false. ";
- ExecutionContinues(os, SMgr, N);
+ ExecutionContinues(os, SMgr, N, getStateManager().getCodeDecl());
PD.push_front(new PathDiagnosticPiece(L, os.str()));
}