zinovy.nis updated this revision to Diff 267518.
zinovy.nis added a comment.
Fix formatting.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80896/new/
https://reviews.llvm.org/D80896
Files:
clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
@@ -793,4 +793,10 @@
return foo < GetFoo() && foo < maybe_foo;
}
};
+
+template <class... Values>
+struct Bar2 {
+ static_assert(
+ (... && (sizeof(Values) > 0)) || (... && (sizeof(Values) < 0)));
+};
}
Index: clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -72,7 +72,8 @@
Expr::const_child_iterator LeftIter = Left->child_begin();
Expr::const_child_iterator RightIter = Right->child_begin();
while (LeftIter != Left->child_end() && RightIter != Right->child_end()) {
- if (!areEquivalentExpr(dyn_cast<Expr>(*LeftIter),
+ if (*LeftIter && *RightIter &&
+ !areEquivalentExpr(dyn_cast<Expr>(*LeftIter),
dyn_cast<Expr>(*RightIter)))
return false;
++LeftIter;
@@ -117,6 +118,14 @@
case Stmt::MemberExprClass:
return cast<MemberExpr>(Left)->getMemberDecl() ==
cast<MemberExpr>(Right)->getMemberDecl();
+ case Stmt::CXXFoldExprClass: {
+ const auto LeftLHS = cast<CXXFoldExpr>(Left)->getLHS();
+ const auto RightLHS = cast<CXXFoldExpr>(Right)->getLHS();
+ const auto LeftRHS = cast<CXXFoldExpr>(Left)->getRHS();
+ const auto RightRHS = cast<CXXFoldExpr>(Right)->getRHS();
+ return areEquivalentExpr(LeftLHS, RightLHS) &&
+ areEquivalentExpr(LeftRHS, RightRHS);
+ }
case Stmt::CXXFunctionalCastExprClass:
case Stmt::CStyleCastExprClass:
return cast<ExplicitCastExpr>(Left)->getTypeAsWritten() ==
Index: clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
@@ -793,4 +793,10 @@
return foo < GetFoo() && foo < maybe_foo;
}
};
+
+template <class... Values>
+struct Bar2 {
+ static_assert(
+ (... && (sizeof(Values) > 0)) || (... && (sizeof(Values) < 0)));
+};
}
Index: clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -72,7 +72,8 @@
Expr::const_child_iterator LeftIter = Left->child_begin();
Expr::const_child_iterator RightIter = Right->child_begin();
while (LeftIter != Left->child_end() && RightIter != Right->child_end()) {
- if (!areEquivalentExpr(dyn_cast<Expr>(*LeftIter),
+ if (*LeftIter && *RightIter &&
+ !areEquivalentExpr(dyn_cast<Expr>(*LeftIter),
dyn_cast<Expr>(*RightIter)))
return false;
++LeftIter;
@@ -117,6 +118,14 @@
case Stmt::MemberExprClass:
return cast<MemberExpr>(Left)->getMemberDecl() ==
cast<MemberExpr>(Right)->getMemberDecl();
+ case Stmt::CXXFoldExprClass: {
+ const auto LeftLHS = cast<CXXFoldExpr>(Left)->getLHS();
+ const auto RightLHS = cast<CXXFoldExpr>(Right)->getLHS();
+ const auto LeftRHS = cast<CXXFoldExpr>(Left)->getRHS();
+ const auto RightRHS = cast<CXXFoldExpr>(Right)->getRHS();
+ return areEquivalentExpr(LeftLHS, RightLHS) &&
+ areEquivalentExpr(LeftRHS, RightRHS);
+ }
case Stmt::CXXFunctionalCastExprClass:
case Stmt::CStyleCastExprClass:
return cast<ExplicitCastExpr>(Left)->getTypeAsWritten() ==
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits