From: Ted Kremenek Date: Sat, 12 Mar 2011 04:08:07 +0000 (+0000) Subject: Don't have side-effects (or rather non-trivial computation) in StringSwitch "cases." X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7084da3e944fdfaa922dda0d57c0fe4cb7b88178;p=clang Don't have side-effects (or rather non-trivial computation) in StringSwitch "cases." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127528 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp b/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp index add9751d65..1925131632 100644 --- a/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp @@ -282,12 +282,15 @@ const GRState *IteratorsChecker::handleAssign(const GRState *state, // Finally, see if it is one of the calls that will create // a valid iterator and mark it if so, else mark as Unknown. llvm::StringRef mName = ME->getMemberDecl()->getName(); - return llvm::StringSwitch(mName) - .Cases("begin", "insert", "erase", - state->set(MR, RefState::getBeginValid(IMR))) - .Case("end", - state->set(MR, RefState::getEndValid(IMR))) - .Default(state->set(MR, RefState::getUnknown())); + + if (llvm::StringSwitch(mName) + .Cases("begin", "insert", "erase", true).Default(false)) { + return state->set(MR, RefState::getBeginValid(IMR)); + } + if (mName == "end") + return state->set(MR, RefState::getEndValid(IMR)); + + return state->set(MR, RefState::getUnknown()); } } // Handle straight copy from another iterator.