Skip to content

Conversation

@vbvictor
Copy link
Contributor

@vbvictor vbvictor commented Nov 7, 2025

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Nov 7, 2025

@llvm/pr-subscribers-clang-tools-extra

Author: Baranov Victor (vbvictor)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/167050.diff

1 Files Affected:

  • (modified) clang-tools-extra/clang-tidy/objc/AssertEquals.cpp (+10-11)
diff --git a/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp b/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
index 0871558b92569..dc4573a8f064e 100644
--- a/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
+++ b/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
@@ -8,7 +8,6 @@
 
 #include "AssertEquals.h"
 
-#include <map>
 #include <string>
 
 using namespace clang::ast_matchers;
@@ -16,8 +15,8 @@ using namespace clang::ast_matchers;
 namespace clang::tidy::objc {
 
 // Mapping from `XCTAssert*Equal` to `XCTAssert*EqualObjects` name.
-static const std::map<std::string, std::string> &nameMap() {
-  static const std::map<std::string, std::string> Map{
+static const llvm::DenseMap<std::string, std::string> &nameMap() {
+  static const llvm::DenseMap<std::string, std::string> Map{
       {"XCTAssertEqual", "XCTAssertEqualObjects"},
       {"XCTAssertNotEqual", "XCTAssertNotEqualObjects"},
 
@@ -26,34 +25,34 @@ static const std::map<std::string, std::string> &nameMap() {
 }
 
 void AssertEquals::registerMatchers(MatchFinder *Finder) {
-  for (const auto &Pair : nameMap()) {
+  for (const auto &[CurrName, _] : nameMap()) {
     Finder->addMatcher(
         binaryOperator(anyOf(hasOperatorName("!="), hasOperatorName("==")),
-                       isExpandedFromMacro(Pair.first),
+                       isExpandedFromMacro(CurrName),
                        anyOf(hasLHS(hasType(qualType(
                                  hasCanonicalType(asString("NSString *"))))),
                              hasRHS(hasType(qualType(
                                  hasCanonicalType(asString("NSString *"))))))
 
                            )
-            .bind(Pair.first),
+            .bind(CurrName),
         this);
   }
 }
 
 void AssertEquals::check(const ast_matchers::MatchFinder::MatchResult &Result) {
-  for (const auto &Pair : nameMap()) {
-    if (const auto *Root = Result.Nodes.getNodeAs<BinaryOperator>(Pair.first)) {
+  for (const auto &[CurrName, TargetName] : nameMap()) {
+    if (const auto *Root = Result.Nodes.getNodeAs<BinaryOperator>(CurrName)) {
       const SourceManager *Sm = Result.SourceManager;
       // The macros are nested two levels, so going up twice.
       auto MacroCallsite = Sm->getImmediateMacroCallerLoc(
           Sm->getImmediateMacroCallerLoc(Root->getBeginLoc()));
-      diag(MacroCallsite, "use " + Pair.second + " for comparing objects")
+      diag(MacroCallsite, "use " + TargetName + " for comparing objects")
           << FixItHint::CreateReplacement(
                  clang::CharSourceRange::getCharRange(
                      MacroCallsite,
-                     MacroCallsite.getLocWithOffset(Pair.first.length())),
-                 Pair.second);
+                     MacroCallsite.getLocWithOffset(CurrName.length())),
+                 TargetName);
     }
   }
 }

@llvmbot
Copy link
Member

llvmbot commented Nov 7, 2025

@llvm/pr-subscribers-clang-tidy

Author: Baranov Victor (vbvictor)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/167050.diff

1 Files Affected:

  • (modified) clang-tools-extra/clang-tidy/objc/AssertEquals.cpp (+10-11)
diff --git a/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp b/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
index 0871558b92569..dc4573a8f064e 100644
--- a/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
+++ b/clang-tools-extra/clang-tidy/objc/AssertEquals.cpp
@@ -8,7 +8,6 @@
 
 #include "AssertEquals.h"
 
-#include <map>
 #include <string>
 
 using namespace clang::ast_matchers;
@@ -16,8 +15,8 @@ using namespace clang::ast_matchers;
 namespace clang::tidy::objc {
 
 // Mapping from `XCTAssert*Equal` to `XCTAssert*EqualObjects` name.
-static const std::map<std::string, std::string> &nameMap() {
-  static const std::map<std::string, std::string> Map{
+static const llvm::DenseMap<std::string, std::string> &nameMap() {
+  static const llvm::DenseMap<std::string, std::string> Map{
       {"XCTAssertEqual", "XCTAssertEqualObjects"},
       {"XCTAssertNotEqual", "XCTAssertNotEqualObjects"},
 
@@ -26,34 +25,34 @@ static const std::map<std::string, std::string> &nameMap() {
 }
 
 void AssertEquals::registerMatchers(MatchFinder *Finder) {
-  for (const auto &Pair : nameMap()) {
+  for (const auto &[CurrName, _] : nameMap()) {
     Finder->addMatcher(
         binaryOperator(anyOf(hasOperatorName("!="), hasOperatorName("==")),
-                       isExpandedFromMacro(Pair.first),
+                       isExpandedFromMacro(CurrName),
                        anyOf(hasLHS(hasType(qualType(
                                  hasCanonicalType(asString("NSString *"))))),
                              hasRHS(hasType(qualType(
                                  hasCanonicalType(asString("NSString *"))))))
 
                            )
-            .bind(Pair.first),
+            .bind(CurrName),
         this);
   }
 }
 
 void AssertEquals::check(const ast_matchers::MatchFinder::MatchResult &Result) {
-  for (const auto &Pair : nameMap()) {
-    if (const auto *Root = Result.Nodes.getNodeAs<BinaryOperator>(Pair.first)) {
+  for (const auto &[CurrName, TargetName] : nameMap()) {
+    if (const auto *Root = Result.Nodes.getNodeAs<BinaryOperator>(CurrName)) {
       const SourceManager *Sm = Result.SourceManager;
       // The macros are nested two levels, so going up twice.
       auto MacroCallsite = Sm->getImmediateMacroCallerLoc(
           Sm->getImmediateMacroCallerLoc(Root->getBeginLoc()));
-      diag(MacroCallsite, "use " + Pair.second + " for comparing objects")
+      diag(MacroCallsite, "use " + TargetName + " for comparing objects")
           << FixItHint::CreateReplacement(
                  clang::CharSourceRange::getCharRange(
                      MacroCallsite,
-                     MacroCallsite.getLocWithOffset(Pair.first.length())),
-                 Pair.second);
+                     MacroCallsite.getLocWithOffset(CurrName.length())),
+                 TargetName);
     }
   }
 }

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

✅ With the latest revision this PR passed the C/C++ code linter.

@vbvictor vbvictor force-pushed the acp/vbvictor/7453195132580028 branch from bf7905c to 6858da2 Compare November 7, 2025 23:50
Finder->addMatcher(
binaryOperator(anyOf(hasOperatorName("!="), hasOperatorName("==")),
isExpandedFromMacro(Pair.first),
isExpandedFromMacro(std::string(CurrName)),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will make isExpandedFromMacro accept StringRef in another PR and remove this.

@vbvictor vbvictor merged commit e3a6792 into llvm:main Nov 8, 2025
9 of 10 checks passed
vinay-deshmukh pushed a commit to vinay-deshmukh/llvm-project that referenced this pull request Nov 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants