[clang-tools-extra] [clang-tidy] Add new check `modernize-use-structured-binding` (PR #158462)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 14 03:51:57 PDT 2025
================
@@ -0,0 +1,216 @@
+// RUN: %check_clang_tidy -std=c++17-or-later %s modernize-use-structured-binding %t -- -- -I %S/Inputs/use-structured-binding/
+
+#include "fake_std_pair_tuple.h"
+
+template<typename T>
+void MarkUsed(T x);
+
+struct TestClass {
+ int a;
+ int b;
+ TestClass() : a(0), b(0) {}
+ TestClass(int x, int y) : a(x), b(y) {}
+};
+
+void DecomposeByAssignWarnCases() {
+ {
+ auto P = getPair<int, int>();
+ // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: Should use structured binding to decompose pair [modernize-use-structured-binding]
+ // CHECK-FIXES: {{^}} auto [x, y] = getPair<int, int>();
+ int x = P.first;
+ int y = P.second;
+ }
+
+ {
+ auto P = getPair<int, int>();
+ // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: Should use structured binding to decompose pair [modernize-use-structured-binding]
+ // CHECK-FIXES: {{^}} auto [x, y] = getPair<int, int>();
----------------
flovent wrote:
It will not fail.
I did a search in test folder, other check's test file use comment after AST Node to test they are removed. I add a `// REMOVE` after them. [c97ce9b](https://github.com/llvm/llvm-project/pull/158462/commits/c97ce9b2c775c9d0967483404ff82e2ff6ed68a8)
https://github.com/llvm/llvm-project/pull/158462
More information about the cfe-commits
mailing list