88
99#include " AssertEquals.h"
1010
11- #include < map>
1211#include < string>
1312
1413using namespace clang ::ast_matchers;
1514
1615namespace clang ::tidy::objc {
1716
1817// Mapping from `XCTAssert*Equal` to `XCTAssert*EqualObjects` name.
19- static const std::map <std::string, std::string> &nameMap () {
20- static const std::map <std::string, std::string> Map{
18+ static const llvm::DenseMap <std::string, std::string> &nameMap () {
19+ static const llvm::DenseMap <std::string, std::string> Map{
2120 {" XCTAssertEqual" , " XCTAssertEqualObjects" },
2221 {" XCTAssertNotEqual" , " XCTAssertNotEqualObjects" },
2322
@@ -26,34 +25,34 @@ static const std::map<std::string, std::string> &nameMap() {
2625}
2726
2827void AssertEquals::registerMatchers (MatchFinder *Finder) {
29- for (const auto &Pair : nameMap ()) {
28+ for (const auto &[CurrName, _] : nameMap ()) {
3029 Finder->addMatcher (
3130 binaryOperator (anyOf (hasOperatorName (" !=" ), hasOperatorName (" ==" )),
32- isExpandedFromMacro (Pair. first ),
31+ isExpandedFromMacro (CurrName ),
3332 anyOf (hasLHS (hasType (qualType (
3433 hasCanonicalType (asString (" NSString *" ))))),
3534 hasRHS (hasType (qualType (
3635 hasCanonicalType (asString (" NSString *" ))))))
3736
3837 )
39- .bind (Pair. first ),
38+ .bind (CurrName ),
4039 this );
4140 }
4241}
4342
4443void AssertEquals::check (const ast_matchers::MatchFinder::MatchResult &Result) {
45- for (const auto &Pair : nameMap ()) {
46- if (const auto *Root = Result.Nodes .getNodeAs <BinaryOperator>(Pair. first )) {
44+ for (const auto &[CurrName, TargetName] : nameMap ()) {
45+ if (const auto *Root = Result.Nodes .getNodeAs <BinaryOperator>(CurrName )) {
4746 const SourceManager *Sm = Result.SourceManager ;
4847 // The macros are nested two levels, so going up twice.
4948 auto MacroCallsite = Sm->getImmediateMacroCallerLoc (
5049 Sm->getImmediateMacroCallerLoc (Root->getBeginLoc ()));
51- diag (MacroCallsite, " use " + Pair. second + " for comparing objects" )
50+ diag (MacroCallsite, " use " + TargetName + " for comparing objects" )
5251 << FixItHint::CreateReplacement (
5352 clang::CharSourceRange::getCharRange (
5453 MacroCallsite,
55- MacroCallsite.getLocWithOffset (Pair. first .length ())),
56- Pair. second );
54+ MacroCallsite.getLocWithOffset (CurrName .length ())),
55+ TargetName );
5756 }
5857 }
5958}
0 commit comments