https://github.com/zeyi2 created 
https://github.com/llvm/llvm-project/pull/188694

None

>From 759ad9aae5451e981eb209c5e4f804c84079d160 Mon Sep 17 00:00:00 2001
From: mtx <[email protected]>
Date: Thu, 26 Mar 2026 15:07:24 +0800
Subject: [PATCH] [clang-tidy] Diagnose NULL macro expansions in
 implicit-bool-conversion

---
 .../readability/ImplicitBoolConversionCheck.cpp     |  6 ++++--
 clang-tools-extra/docs/ReleaseNotes.rst             | 13 ++++++++-----
 .../checkers/readability/implicit-bool-conversion.c |  4 ++--
 .../readability/implicit-bool-conversion.cpp        |  4 ++--
 4 files changed, 16 insertions(+), 11 deletions(-)

diff --git 
a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
index a138d1900b799..ee30b792051e0 100644
--- a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
@@ -382,7 +382,8 @@ void ImplicitBoolConversionCheck::handleCastToBool(const 
ImplicitCastExpr *Cast,
     return;
   }
 
-  auto Diag = diag(Cast->getBeginLoc(), "implicit conversion %0 -> 'bool'")
+  auto Diag = diag(Context.getSourceManager().getFileLoc(Cast->getBeginLoc()),
+                   "implicit conversion %0 -> 'bool'")
               << Cast->getSubExpr()->getType();
 
   const StringRef EquivalentLiteral =
@@ -400,7 +401,8 @@ void ImplicitBoolConversionCheck::handleCastFromBool(
     ASTContext &Context) {
   const QualType DestType =
       NextImplicitCast ? NextImplicitCast->getType() : Cast->getType();
-  auto Diag = diag(Cast->getBeginLoc(), "implicit conversion 'bool' -> %0")
+  auto Diag = diag(Context.getSourceManager().getFileLoc(Cast->getBeginLoc()),
+                   "implicit conversion 'bool' -> %0")
               << DestType;
 
   if (const auto *BoolLiteral =
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index f8550e72dcc85..5ea37e179bc13 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -396,11 +396,14 @@ Changes in existing checks
   it easier to see which specific enumerators need explicit initialization.
 
 - Improved :doc:`readability-implicit-bool-conversion
-  <clang-tidy/checks/readability/implicit-bool-conversion>` check by fixing a
-  false positive where `AllowPointerConditions` and `AllowIntegerConditions`
-  options did not suppress warnings when the condition expression involved
-  temporaries (e.g. passing a string literal to a ``const std::string&``
-  parameter)
+  <clang-tidy/checks/readability/implicit-bool-conversion>` check:
+
+  - Fixed a false positive where `AllowPointerConditions` and
+    `AllowIntegerConditions` options did not suppress warnings when the
+    condition expression involved temporaries (e.g. passing a string literal to
+    a ``const std::string&`` parameter).
+
+  - Warn and provide fix-its when ``NULL`` is defined in system headers.
 
 - Improved :doc:`readability-non-const-parameter
   <clang-tidy/checks/readability/non-const-parameter>` check by avoiding false
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.c
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.c
index f9326a185b3a6..67b9f906f888b 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.c
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.c
@@ -1,5 +1,5 @@
-// RUN: %check_clang_tidy -std=c23-or-later %s 
readability-implicit-bool-conversion %t --system-headers
-// RUN: %check_clang_tidy -std=c23-or-later -check-suffix=UPPER-CASE %s 
readability-implicit-bool-conversion %t -- --system-headers \
+// RUN: %check_clang_tidy -std=c23-or-later %s 
readability-implicit-bool-conversion %t
+// RUN: %check_clang_tidy -std=c23-or-later -check-suffix=UPPER-CASE %s 
readability-implicit-bool-conversion %t -- \
 // RUN:     -config='{CheckOptions: { \
 // RUN:         
readability-implicit-bool-conversion.UseUpperCaseLiteralSuffix: true \
 // RUN:     }}'
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.cpp
index 50e2994474452..c8312ab6183b9 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion.cpp
@@ -1,5 +1,5 @@
-// RUN: %check_clang_tidy %s readability-implicit-bool-conversion %t -- 
--system-headers
-// RUN: %check_clang_tidy -check-suffix=UPPER-CASE %s 
readability-implicit-bool-conversion %t -- --system-headers \
+// RUN: %check_clang_tidy %s readability-implicit-bool-conversion %t --
+// RUN: %check_clang_tidy -check-suffix=UPPER-CASE %s 
readability-implicit-bool-conversion %t -- \
 // RUN:     -config='{CheckOptions: { \
 // RUN:         
readability-implicit-bool-conversion.UseUpperCaseLiteralSuffix: true \
 // RUN:     }}'

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to