[llvm-branch-commits] [clang-tools-extra] 858e6ae - Revert "[clang-tidy] fix `bugprone-narrowing-conversions` false positive for …"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Aug 3 03:57:14 PDT 2025
Author: Baranov Victor
Date: 2025-08-03T13:57:11+03:00
New Revision: 858e6ae29b80ee992d60cfba199938934db2ea5f
URL: https://github.com/llvm/llvm-project/commit/858e6ae29b80ee992d60cfba199938934db2ea5f
DIFF: https://github.com/llvm/llvm-project/commit/858e6ae29b80ee992d60cfba199938934db2ea5f.diff
LOG: Revert "[clang-tidy] fix `bugprone-narrowing-conversions` false positive for …"
This reverts commit c3902e46b748cd808fbffeea25489bb41b15a6b2.
Added:
Modified:
clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
clang-tools-extra/docs/ReleaseNotes.rst
Removed:
clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
################################################################################
diff --git a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
index 249c77ca0c432..53782231b6421 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.cpp
@@ -555,22 +555,15 @@ bool NarrowingConversionsCheck::handleConditionalOperator(
// We have an expression like so: `output = cond ? lhs : rhs`
// From the point of view of narrowing conversion we treat it as two
// expressions `output = lhs` and `output = rhs`.
- handleConditionalOperatorArgument(Context, Lhs, CO->getLHS());
- handleConditionalOperatorArgument(Context, Lhs, CO->getRHS());
+ handleBinaryOperator(Context, CO->getLHS()->getExprLoc(), Lhs,
+ *CO->getLHS());
+ handleBinaryOperator(Context, CO->getRHS()->getExprLoc(), Lhs,
+ *CO->getRHS());
return true;
}
return false;
}
-void NarrowingConversionsCheck::handleConditionalOperatorArgument(
- const ASTContext &Context, const Expr &Lhs, const Expr *Arg) {
- if (const auto *ICE = llvm::dyn_cast<ImplicitCastExpr>(Arg))
- if (!Arg->getIntegerConstantExpr(Context))
- Arg = ICE->getSubExpr();
-
- handleBinaryOperator(Context, Arg->getExprLoc(), Lhs, *Arg);
-}
-
void NarrowingConversionsCheck::handleImplicitCast(
const ASTContext &Context, const ImplicitCastExpr &Cast) {
if (Cast.getExprLoc().isMacroID())
diff --git a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
index 116a8cba8d321..20403f920b925 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
+++ b/clang-tools-extra/clang-tidy/bugprone/NarrowingConversionsCheck.h
@@ -85,8 +85,6 @@ class NarrowingConversionsCheck : public ClangTidyCheck {
bool handleConditionalOperator(const ASTContext &Context, const Expr &Lhs,
const Expr &Rhs);
- void handleConditionalOperatorArgument(const ASTContext &Context,
- const Expr &Lhs, const Expr *Arg);
void handleImplicitCast(const ASTContext &Context,
const ImplicitCastExpr &Cast);
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst
index b9261f61c8789..ef0e804962927 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -134,10 +134,6 @@ Changes in existing checks
<clang-tidy/checks/bugprone/infinite-loop>` check by adding detection for
variables introduced by structured bindings.
-- Improved :doc:`bugprone-narrowing-conversions
- <clang-tidy/checks/bugprone/narrowing-conversions>` check by fixing
- false positive from analysis of a conditional expression in C.
-
- Improved :doc:`bugprone-reserved-identifier
<clang-tidy/checks/bugprone/reserved-identifier>` check by ignoring
declarations in system headers.
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
deleted file mode 100644
index 0ea83bc8559af..0000000000000
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.c
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %check_clang_tidy %s bugprone-narrowing-conversions %t -- --
-
-char test_char(int cond, char c) {
- char ret = cond > 0 ? ':' : c;
- return ret;
-}
-
-short test_short(int cond, short s) {
- short ret = cond > 0 ? ':' : s;
- return ret;
-}
-
-int test_int(int cond, int i) {
- int ret = cond > 0 ? ':' : i;
- return ret;
-}
-
-void test(int cond, int i) {
- char x = cond > 0 ? ':' : i;
- // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: narrowing conversion from 'int' to signed type 'char' is implementation-defined [bugprone-narrowing-conversions]
-}
diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
deleted file mode 100644
index 0ea83bc8559af..0000000000000
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/narrowing-conversions-conditional-expressions.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %check_clang_tidy %s bugprone-narrowing-conversions %t -- --
-
-char test_char(int cond, char c) {
- char ret = cond > 0 ? ':' : c;
- return ret;
-}
-
-short test_short(int cond, short s) {
- short ret = cond > 0 ? ':' : s;
- return ret;
-}
-
-int test_int(int cond, int i) {
- int ret = cond > 0 ? ':' : i;
- return ret;
-}
-
-void test(int cond, int i) {
- char x = cond > 0 ? ':' : i;
- // CHECK-MESSAGES: :[[@LINE-1]]:29: warning: narrowing conversion from 'int' to signed type 'char' is implementation-defined [bugprone-narrowing-conversions]
-}
More information about the llvm-branch-commits
mailing list