llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-tidy

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

Author: Mao Chuanjun (maochuanjun)

<details>
<summary>Changes</summary>

Fix #<!-- -->191337

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


3 Files Affected:

- (modified) 
clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp (+3) 
- (modified) clang-tools-extra/docs/ReleaseNotes.rst (+4) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions.cpp 
(+8) 


``````````diff
diff --git 
a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
index f0a0f6c9b3106..58119078f89ab 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
@@ -402,6 +402,9 @@ void NarrowingConversionsCheck::handleIntegralCast(const 
ASTContext &Context,
       return;
     const BuiltinType *FromType = getBuiltinType(Rhs);
 
+    if (FromType->getKind() == BuiltinType::Bool)
+      return;
+
     // With this option, we don't warn on conversions that have equivalent 
width
     // in bits. eg. uint32 <-> int32.
     if (!WarnOnEquivalentBitWidth) {
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index d51cbc07c0b6d..6979c2cbcfff2 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -262,6 +262,10 @@ Changes in existing checks
   <clang-tidy/checks/bugprone/macro-parentheses>` check by printing the macro
   definition in the warning message if the macro is defined on command line.
 
+- Improved :doc:`bugprone-narrowing-conversions
+  <clang-tidy/checks/bugprone/narrowing-conversions>` check by fixing a false
+  positive when converting a ``bool`` to a signed integer type.
+
 - Improved :doc:`bugprone-pointer-arithmetic-on-polymorphic-object
   <clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>` check
   by fixing a false positive when ``operator[]`` is used in a dependent 
context.
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions.cpp
index 39875264bd1e6..fb7a268625840 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions.cpp
@@ -355,4 +355,12 @@ void typedef_context() {
   // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: narrowing conversion from 
'myint64_t' (aka 'long long') to signed type 'int' is implementation-defined 
[bugprone-narrowing-conversions]
 }
 
+void testBoolToSignedType() {
+  bool b = true;
+  auto c = char{b};
+  auto sc = (signed char){b};
+  auto s = short{b};
+  auto i = int{b};
+}
+
 } // namespace floats

``````````

</details>


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

Reply via email to