[clang-tools-extra] [clang-tidy] Fix false positive in bugprone-use-after-move for std::tie (PR #192895)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 19 22:47:34 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 3133 tests passed
* 30 tests skipped
* 2 tests failed
## Failed Tests
(click on a test name to see its output)
### Clang Tools
<details>
<summary>Clang Tools.clang-tidy/checkers/bugprone/use-after-move.cpp</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
C:/Python312/python.exe C:/_work/llvm-project/llvm-project/clang-tools-extra/test/../test\clang-tidy\check_clang_tidy.py -std=c++11,c++14 -check-suffixes=,CXX11 C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\bugprone\use-after-move.cpp bugprone-use-after-move C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp -- -config='{CheckOptions: { bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" }}' -- -fno-delayed-template-parsing
# executed command: C:/Python312/python.exe 'C:/_work/llvm-project/llvm-project/clang-tools-extra/test/../test\clang-tidy\check_clang_tidy.py' -std=c++11,c++14 -check-suffixes=,CXX11 'C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\bugprone\use-after-move.cpp' bugprone-use-after-move 'C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp' -- '-config={CheckOptions: { bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" }}' -- -fno-delayed-template-parsing
# .---command stdout------------
# | Running ['clang-tidy', '--experimental-custom-checks', 'C:\\_work\\llvm-project\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\bugprone\\Output\\use-after-move.cpp.tmp.cpp', '-fix', '--checks=-*,bugprone-use-after-move', '-config={CheckOptions: { bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" }}', '--', '-fno-delayed-template-parsing', '-std=c++11', '-nostdinc++', '-isystem', 'C:\\_work\\llvm-project\\llvm-project\\clang-tools-extra\\test\\clang-tidy\\checkers\\Inputs\\Headers\\std']...
# | clang-tidy --experimental-custom-checks C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp -fix --checks=-*,bugprone-use-after-move -config={CheckOptions: { bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" }} -- -fno-delayed-template-parsing -std=c++11 -nostdinc++ -isystem C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std failed:
# | 215 warnings and 14 errors generated.
# |
# | Error while processing C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp.
# |
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:80:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 80 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:79:15: note: move occurred here
# | 79 | A other_a = std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:110:3: warning: 'b' used after it was moved [bugprone-use-after-move]
# | 110 | b.foo(); // But destruction is not a reinitialization.
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:108:3: note: move occurred here
# | 108 | std::move(b);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:116:3: warning: 'c' used after it was moved [bugprone-use-after-move]
# | 116 | c.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:115:3: note: move occurred here
# | 115 | std::move(c);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:127:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 127 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:126:15: note: move occurred here
# | 126 | A other_a = std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:138:15: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 138 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:137:5: note: move occurred here
# | 137 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:147:17: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 147 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:147:7: note: move occurred here
# | 147 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:147:17: note: the use happens in a later loop iteration than the move
# | 147 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:158:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 158 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:157:3: note: move occurred here
# | 157 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:172:6: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 172 | *ptr;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:169:5: note: move occurred here
# | 169 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:179:5: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 179 | ptr->foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:178:5: note: move occurred here
# | 178 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:186:5: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 186 | ptr[0];
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:185:5: note: move occurred here
# | 185 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:195:6: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 195 | *ptr;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:192:5: note: move occurred here
# | 192 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:202:5: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 202 | ptr->foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:201:5: note: move occurred here
# | 201 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:209:14: warning: 'opt' used after it was moved [bugprone-use-after-move]
# | 209 | A val = *opt;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:208:5: note: move occurred here
# | 208 | std::move(opt);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:265:5: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 265 | ptr.get();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:264:5: note: move occurred here
# | 264 | std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:276:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 276 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:275:5: note: move occurred here
# | 275 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:286:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 286 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:285:5: note: move occurred here
# | 285 | A another_a(std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:303:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 303 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:302:7: note: move occurred here
# | 302 | S s{std::move(a)};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:314:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 314 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:313:7: note: move occurred here
# | 313 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:324:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 324 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:323:7: note: move occurred here
# | 323 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:356:20: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 356 | auto lambda = [a]() { a.foo(); };
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:355:5: note: move occurred here
# | 355 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:364:20: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 364 | auto lambda = [=]() { a.foo(); };
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:363:5: note: move occurred here
# | 363 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:372:21: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 372 | auto lambda = [&a]() { a.foo(); };
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:371:5: note: move occurred here
# | 371 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:379:20: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 379 | auto lambda = [&]() { a.foo(); };
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:378:5: note: move occurred here
# | 378 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:409:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 409 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:408:24: note: move occurred here
# | 408 | auto lambda = [a = std::move(a)] { a.foo(); };
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:422:3: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 422 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:421:3: note: move occurred here
# | 421 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:433:3: warning: 't' used after it was moved [bugprone-use-after-move]
# | 433 | t.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:432:3: note: move occurred here
# | 432 | std::move(t);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:449:3: warning: 'convertible' used after it was moved [bugprone-use-after-move]
# | 449 | convertible;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:448:9: note: move occurred here
# | 448 | takeA(std::move(convertible));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:528:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 528 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:532:7: note: move occurred here
# | 532 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:528:7: note: the use happens in a later loop iteration than the move
# | 528 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:540:9: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 540 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:545:9: note: move occurred here
# | 545 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:540:9: note: the use happens in a later loop iteration than the move
# | 540 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:620:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 620 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:618:7: note: move occurred here
# | 618 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:636:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 636 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:633:5: note: move occurred here
# | 633 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:719:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 719 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:718:5: note: move occurred here
# | 718 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:732:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 732 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:727:5: note: move occurred here
# | 727 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:769:25: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 769 | passByConstPointer(&a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:768:5: note: move occurred here
# | 768 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:775:24: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 775 | passByConstReference(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:774:3: note: move occurred here
# | 774 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:881:5: warning: 'container' used after it was moved [bugprone-use-after-move]
# | 881 | container.clear();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:880:5: note: move occurred here
# | 880 | std::move(container);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:890:5: warning: 'container1' used after it was moved [bugprone-use-after-move]
# | 890 | container1.empty();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:888:5: note: move occurred here
# | 888 | std::move(container1);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:936:5: warning: 'container' used after it was moved [bugprone-use-after-move]
# | 936 | container.assign(0, 0);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:935:5: note: move occurred here
# | 935 | std::move(container);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:945:5: warning: 'container1' used after it was moved [bugprone-use-after-move]
# | 945 | container1.empty();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:943:5: note: move occurred here
# | 943 | std::move(container1);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:987:5: warning: 'obj' used after it was moved [bugprone-use-after-move]
# | 987 | obj.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:986:5: note: move occurred here
# | 986 | std::move(obj);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1003:5: warning: 'obj1' used after it was moved [bugprone-use-after-move]
# | 1003 | obj1.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1001:5: note: move occurred here
# | 1001 | std::move(obj1);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1036:20: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 1036 | int inv_value = *ptr;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1034:34: note: move occurred here
# | 1034 | SmartPtrAlike<int> other_ptr = std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1063:20: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 1063 | int inv_value = *ptr;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1061:39: note: move occurred here
# | 1061 | MultipleAnnotationsType other_ptr = std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1083:3: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 1083 | ptr.get();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1082:29: note: move occurred here
# | 1082 | BadAnnotation other_ptr = std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1103:3: warning: 'ptr' used after it was moved [bugprone-use-after-move]
# | 1103 | ptr.get();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1102:33: note: move occurred here
# | 1102 | BadAnnotationArgs other_ptr = std::move(ptr);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1138:17: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1138 | passByValue(a.getInt(), std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1138:29: note: move occurred here
# | 1138 | passByValue(a.getInt(), std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1138:17: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1138 | passByValue(a.getInt(), std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1145:31: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1145 | passByValue(std::move(a), a.getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1145:17: note: move occurred here
# | 1145 | passByValue(std::move(a), a.getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1145:31: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1145 | passByValue(std::move(a), a.getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:9: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:27: note: move occurred here
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:9: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:29: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:7: note: move occurred here
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1153:29: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1153 | g(g(a, std::move(a)), g(a, std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1173:7: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1173 | v[a.getInt()] = intFromA(std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1173:21: note: move occurred here
# | 1173 | v[a.getInt()] = intFromA(std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1173:7: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1173 | v[a.getInt()] = intFromA(std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1181:44: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1181 | v[intFromA(std::move(a))] = intFromInt(a.i);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1181:7: note: move occurred here
# | 1181 | v[intFromA(std::move(a))] = intFromInt(a.i);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1181:44: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1181 | v[intFromA(std::move(a))] = intFromInt(a.i);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1199:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1199 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1198:17: note: move occurred here
# | 1198 | passByValue(std::move(a), (a = A()));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1206:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1206 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1205:28: note: move occurred here
# | 1205 | passByValue((a = A()), std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1229:17: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1229 | passByValue(a.getInt(), (a = A()));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1228:5: note: move occurred here
# | 1228 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1236:28: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1236 | passByValue((a = A()), a.getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1235:5: note: move occurred here
# | 1235 | std::move(a);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1253:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1253 | a.foo();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1252:16: note: move occurred here
# | 1252 | (a = A()), A(std::move(a));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1289:25: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1289 | S2 s2{std::move(a), a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1289:11: note: move occurred here
# | 1289 | S2 s2{std::move(a), a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1295:35: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1295 | S2 s2{.a = std::move(a), .i = a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1295:11: note: move occurred here
# | 1295 | S2 s2{.a = std::move(a), .i = a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1308:25: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1308 | S3 s3{std::move(a), a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1308:11: note: move occurred here
# | 1308 | S3 s3{std::move(a), a.getInt()};
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1325:31: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1325 | A a1 = std::move(a), a2 = a;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1325:12: note: move occurred here
# | 1325 | A a1 = std::move(a), a2 = a;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1349:41: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1349 | if (A(std::move(a)).getInt() > 0 && a.getInt() > 0) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1349:9: note: move occurred here
# | 1349 | if (A(std::move(a)).getInt() > 0 && a.getInt() > 0) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1363:41: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1363 | if (A(std::move(a)).getInt() > 0 || a.getInt() > 0) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1363:9: note: move occurred here
# | 1363 | if (A(std::move(a)).getInt() > 0 || a.getInt() > 0) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1409:43: warning: 'a1' used after it was moved [bugprone-use-after-move]
# | 1409 | if (A a1; A(std::move(a1)).getInt() > a1.getInt()) {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1409:15: note: move occurred here
# | 1409 | if (A a1; A(std::move(a1)).getInt() > a1.getInt()) {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1409:43: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1409 | if (A a1; A(std::move(a1)).getInt() > a1.getInt()) {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1416:33: warning: 'a1' used after it was moved [bugprone-use-after-move]
# | 1416 | if (A a2 = std::move(a1); A(a1) > 0) {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1416:16: note: move occurred here
# | 1416 | if (A a2 = std::move(a1); A(a1) > 0) {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1448:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1448 | a->bar(consumeA(std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1448:21: note: move occurred here
# | 1448 | a->bar(consumeA(std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1448:5: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1448 | a->bar(consumeA(std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1456:31: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1456 | getArg(std::move(a))->bar(a->getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1456:12: note: move occurred here
# | 1456 | getArg(std::move(a))->bar(a->getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1456:31: note: the use and move are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
# | 1456 | getArg(std::move(a))->bar(a->getInt());
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1466:5: warning: 'a' used after it was moved [bugprone-use-after-move]
# | 1466 | a.bar(consumeA(std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1466:11: note: move occurred here
# | 1466 | a.bar(consumeA(std::move(a)));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1538:11: warning: 'val' used after it was moved [bugprone-use-after-move]
# | 1538 | b{val.empty()}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1537:9: note: move occurred here
# | 1537 | s{std::move(val)},
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1554:12: warning: 'val' used after it was moved [bugprone-use-after-move]
# | 1554 | b{[&] { return val.empty(); }()},
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1553:9: note: move occurred here
# | 1553 | s{std::move(val)},
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1560:18: warning: 'str' used after it was moved [bugprone-use-after-move]
# | 1560 | return str.empty();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1559:11: note: move occurred here
# | 1559 | std::move(str);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1564:15: warning: 'val' used after it was moved [bugprone-use-after-move]
# | 1564 | std::move(val);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1553:9: note: move occurred here
# | 1553 | s{std::move(val)},
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1569:5: warning: 'val2' used after it was moved [bugprone-use-after-move]
# | 1569 | val2.empty();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1568:5: note: move occurred here
# | 1568 | std::move(val2);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1586:11: warning: 'val' used after it was moved [bugprone-use-after-move]
# | 1586 | b{val.empty()},
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1588:9: note: move occurred here
# | 1588 | s{std::move(val)} {} // wrong order
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1611:55: warning: 'b' used after it was moved [bugprone-use-after-move]
# | 1611 | CtorA(Obj b) : CtorB{b}, CtorC{std::move(b)}, CtorD{b} {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1611:34: note: move occurred here
# | 1611 | CtorA(Obj b) : CtorB{b}, CtorC{std::move(b)}, CtorD{b} {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1641:74: warning: 'b' used after it was moved [bugprone-use-after-move]
# | 1641 | : Base{[c = std::move(b)] mutable { return std::move(c); }}, CtorC{b} {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1641:19: note: move occurred here
# | 1641 | : Base{[c = std::move(b)] mutable { return std::move(c); }}, CtorC{b} {}
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1649:5: warning: 'val' used after it was moved [bugprone-use-after-move]
# | 1649 | val.empty();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1648:30: note: move occurred here
# | 1648 | PR38187(std::string val) : val_(std::move(val)) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1671:27: warning: 't' used after it was forwarded [bugprone-use-after-move]
# | 1671 | consume(std::forward<T>(t));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1670:11: note: forward occurred here
# | 1670 | consume(std::forward<T>(t));
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1704:3: warning: 'db1' used after it was invalidated by 'CloseConnection<>' [bugprone-use-after-move]
# | 1704 | db1.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1703:7: note: invalidation occurred here
# | 1703 | db1.CloseConnection();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1710:3: warning: 'db2' used after it was invalidated by 'StaticCloseConnection<>' [bugprone-use-after-move]
# | 1710 | db2.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1709:3: note: invalidation occurred here
# | 1709 | DB::StaticCloseConnection(db2);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1716:3: warning: 'db3' used after it was invalidated by 'StaticCloseConnection<>' [bugprone-use-after-move]
# | 1716 | db3.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1715:3: note: invalidation occurred here
# | 1715 | DB().StaticCloseConnection(db3);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1722:3: warning: 'db4' used after it was invalidated by 'FriendCloseConnection<>' [bugprone-use-after-move]
# | 1722 | db4.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1721:3: note: invalidation occurred here
# | 1721 | FriendCloseConnection(db4);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1728:3: warning: 'db5' used after it was invalidated by 'FriendCloseConnection<>' [bugprone-use-after-move]
# | 1728 | db5.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1727:3: note: invalidation occurred here
# | 1727 | FriendCloseConnection(db5, /*disconnect timeout*/ 5);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1734:3: warning: 'db6' used after it was invalidated by 'FreeCloseConnection' [bugprone-use-after-move]
# | 1734 | db6.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1733:3: note: invalidation occurred here
# | 1733 | FreeCloseConnection(db6);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1767:3: warning: 'db2' used after it was moved [bugprone-use-after-move]
# | 1767 | db2.Query();
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1766:3: note: move occurred here
# | 1766 | std::move(db2);
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1801:1: error: no template named 'pair' in namespace 'custom_reinitialization::std'; did you mean '::std::pair'? [clang-diagnostic-error]
# | 1801 | std::pair<std::string, std::string> makeStringPair(std::string a,
# | | ^~~~~~~~~
# | | ::std::pair
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\utility:31:8: note: '::std::pair' declared here
# | 31 | struct pair {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1801:16: error: no member named 'string' in namespace 'custom_reinitialization::std' [clang-diagnostic-error]
# | 1801 | std::pair<std::string, std::string> makeStringPair(std::string a,
# | | ^~~~~~
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1801:52: error: no type named 'string' in namespace 'custom_reinitialization::std'; did you mean '::std::string'? [clang-diagnostic-error]
# | 1801 | std::pair<std::string, std::string> makeStringPair(std::string a,
# | | ^~~~~~~~~~~
# | | ::std::string
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\string:101:28: note: '::std::string' declared here
# | 101 | typedef basic_string<char> string;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1802:52: error: no type named 'string' in namespace 'custom_reinitialization::std'; did you mean '::std::string'? [clang-diagnostic-error]
# | 1802 | std::string b);
# | | ^~~~~~~~~~~
# | | ::std::string
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\string:101:28: note: '::std::string' declared here
# | 101 | typedef basic_string<char> string;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1806:3: error: no type named 'string' in namespace 'custom_reinitialization::std'; did you mean '::std::string'? [clang-diagnostic-error]
# | 1806 | std::string a, b;
# | | ^~~~~~~~~~~
# | | ::std::string
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\string:101:28: note: '::std::string' declared here
# | 101 | typedef basic_string<char> string;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1807:8: error: no type named 'move' in namespace 'custom_reinitialization::std' [clang-diagnostic-error]
# | 1807 | std::move(a);
# | | ~~~~~^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1808:8: error: no type named 'move' in namespace 'custom_reinitialization::std' [clang-diagnostic-error]
# | 1808 | std::move(b);
# | | ~~~~~^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1816:3: error: no type named 'string' in namespace 'custom_reinitialization::std'; did you mean '::std::string'? [clang-diagnostic-error]
# | 1816 | std::string a, b;
# | | ^~~~~~~~~~~
# | | ::std::string
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\string:101:28: note: '::std::string' declared here
# | 101 | typedef basic_string<char> string;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1817:8: error: no type named 'move' in namespace 'custom_reinitialization::std' [clang-diagnostic-error]
# | 1817 | std::move(a);
# | | ~~~~~^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1824:3: error: no type named 'string' in namespace 'custom_reinitialization::std'; did you mean '::std::string'? [clang-diagnostic-error]
# | 1824 | std::string a, b;
# | | ^~~~~~~~~~~
# | | ::std::string
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\string:101:28: note: '::std::string' declared here
# | 101 | typedef basic_string<char> string;
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1826:37: error: no member named 'move' in namespace 'custom_reinitialization::std'; did you mean '::std::move'? [clang-diagnostic-error]
# | 1826 | std::tie(a, b) = makeStringPair(std::move(a), std::move(b));
# | | ^~~~~~~~~
# | | ::std::move
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\utility:9:55: note: '::std::move' declared here
# | 9 | constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1826:51: error: no member named 'move' in namespace 'custom_reinitialization::std'; did you mean '::std::move'? [clang-diagnostic-error]
# | 1826 | std::tie(a, b) = makeStringPair(std::move(a), std::move(b));
# | | ^~~~~~~~~
# | | ::std::move
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\utility:9:55: note: '::std::move' declared here
# | 9 | constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1828:37: error: no member named 'move' in namespace 'custom_reinitialization::std'; did you mean '::std::move'? [clang-diagnostic-error]
# | 1828 | std::tie(a, b) = makeStringPair(std::move(a), std::move(b));
# | | ^~~~~~~~~
# | | ::std::move
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\utility:9:55: note: '::std::move' declared here
# | 9 | constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
# | | ^
# | C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\checkers\bugprone\Output\use-after-move.cpp.tmp.cpp:1828:51: error: no member named 'move' in namespace 'custom_reinitialization::std'; did you mean '::std::move'? [clang-diagnostic-error]
# | 1828 | std::tie(a, b) = makeStringPair(std::move(a), std::move(b));
# | | ^~~~~~~~~
# | | ::std::move
# | C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\checkers\Inputs\Headers\std\utility:9:55: note: '::std::move' declared here
# | 9 | constexpr typename std::remove_reference<_Tp>::type &&move(_Tp &&__t) {
# | | ^
# | Suppressed 129 warnings (129 with check filters).
# |
# | Found compiler errors, but -fix-errors was not specified.
# |
# | Fixes have NOT been applied.
# |
# |
# |
# | Found compiler error(s).
# |
# |
# `-----------------------------
# .---command stderr------------
# | Traceback (most recent call last):
# | File "C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\check_clang_tidy.py", line 554, in <module>
# | main()
# | File "C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\check_clang_tidy.py", line 550, in main
# | CheckRunner(args, extra_args).run()
# | File "C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\check_clang_tidy.py", line 426, in run
# | clang_tidy_output = self.run_clang_tidy()
# | ^^^^^^^^^^^^^^^^^^^^^
# | File "C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\check_clang_tidy.py", line 289, in run_clang_tidy
# | clang_tidy_output = try_run(args)
# | ^^^^^^^^^^^^^
# | File "C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\check_clang_tidy.py", line 64, in try_run
# | process_output = subprocess.check_output(args, stderr=subprocess.STDOUT).decode(
# | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# | File "c:\python312\Lib\subprocess.py", line 466, in check_output
# | return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
# | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# | File "c:\python312\Lib\subprocess.py", line 571, in run
# | raise CalledProcessError(retcode, process.args,
# | subprocess.CalledProcessError: Command '['clang-tidy', '--experimental-custom-checks', 'C:\\_work\\llvm-project\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\bugprone\\Output\\use-after-move.cpp.tmp.cpp', '-fix', '--checks=-*,bugprone-use-after-move', '-config={CheckOptions: { bugprone-use-after-move.InvalidationFunctions: "::Database<>::StaticCloseConnection;Database<>::CloseConnection;FriendCloseConnection;FreeCloseConnection", bugprone-use-after-move.ReinitializationFunctions: "::Database<>::Reset;::Database<>::StaticReset;::FriendReset;::RegularReset" }}', '--', '-fno-delayed-template-parsing', '-std=c++11', '-nostdinc++', '-isystem', 'C:\\_work\\llvm-project\\llvm-project\\clang-tools-extra\\test\\clang-tidy\\checkers\\Inputs\\Headers\\std']' returned non-zero exit status 1.
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
<details>
<summary>Clang Tools.clang-tidy/infrastructure/alphabetical-order.test</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
C:/Python312/python.exe C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../clang-tidy/tool/check_alphabetical_order.py -o C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.clang-tidy-checks-list.rst
# executed command: C:/Python312/python.exe 'C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../clang-tidy/tool/check_alphabetical_order.py' -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.clang-tidy-checks-list.rst'
# note: command had no output on stdout or stderr
# RUN: at line 2
diff --strip-trailing-cr C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../docs/clang-tidy/checks/list.rst C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.clang-tidy-checks-list.rst
# executed command: diff --strip-trailing-cr 'C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../docs/clang-tidy/checks/list.rst' 'C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.clang-tidy-checks-list.rst'
# note: command had no output on stdout or stderr
# RUN: at line 4
C:/Python312/python.exe C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../clang-tidy/tool/check_alphabetical_order.py -o C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.ReleaseNotes.rst
# executed command: C:/Python312/python.exe 'C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../clang-tidy/tool/check_alphabetical_order.py' -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.ReleaseNotes.rst'
# .---command stderr------------
# |
# | Entries in 'clang-tools-extra/docs/ReleaseNotes.rst' are not alphabetically sorted.
# | Fix the ordering by applying diff printed below.
# |
# `-----------------------------
# RUN: at line 5
diff --strip-trailing-cr C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../docs/ReleaseNotes.rst C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.ReleaseNotes.rst
# executed command: diff --strip-trailing-cr 'C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../docs/ReleaseNotes.rst' 'C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.ReleaseNotes.rst'
# .---command stdout------------
# | *** C:\_work\llvm-project\llvm-project\clang-tools-extra\test\clang-tidy\infrastructure/../../../docs/ReleaseNotes.rst
# | --- C:\_work\llvm-project\llvm-project\build\tools\clang\tools\extra\test\clang-tidy\infrastructure\Output\alphabetical-order.test.tmp.ReleaseNotes.rst
# | ***************
# | *** 229,234 ****
# | --- 229,310 ----
# |
# | Changes in existing checks
# | ^^^^^^^^^^^^^^^^^^^^^^^^^^
# | +
# | + - Improved :doc:`bugprone-argument-comment
# | + <clang-tidy/checks/bugprone/argument-comment>` to also check for C++11
# | + inherited constructors.
# | +
# | + - Improved :doc:`bugprone-bad-signal-to-kill-thread
# | + <clang-tidy/checks/bugprone/bad-signal-to-kill-thread>` check by fixing false
# | + negatives when the ``SIGTERM`` macro is obtained from a precompiled header.
# | +
# | + - Improved :doc:`bugprone-casting-through-void
# | + <clang-tidy/checks/bugprone/casting-through-void>` check by running only on
# | + C++ files because suggested ``reinterpret_cast`` is not available in pure C.
# | +
# | + - Improved :doc:`bugprone-derived-method-shadowing-base-method
# | + <clang-tidy/checks/bugprone/derived-method-shadowing-base-method>` check by
# | + correctly ignoring function templates.
# | +
# | + - Improved :doc:`bugprone-exception-escape
# | + <clang-tidy/checks/bugprone/exception-escape>` check by adding
# | + `TreatFunctionsWithoutSpecificationAsThrowing` option to support reporting
# | + for unannotated functions, enabling reporting when no explicit ``throw``
# | + is seen and allowing separate tuning for known and unknown implementations.
# | +
# | + - Improved :doc:`bugprone-fold-init-type
# | + <clang-tidy/checks/bugprone/fold-init-type>` check by detecting precision
# | + loss in overloads with transparent standard functors (e.g. ``std::plus<>``)
# | + for ``std::accumulate``, ``std::reduce``, and ``std::inner_product``.
# | +
# | + - Improved :doc:`bugprone-inc-dec-in-conditions
# | + <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check by fixing a false
# | + positive when increment/decrement operators appear inside lambda bodies that
# | + are part of a condition expression.
# | +
# | + - Improved :doc:`bugprone-incorrect-enable-if
# | + <clang-tidy/checks/bugprone/incorrect-enable-if>` check to not
# | + insert an extraneous ``typename`` on code like
# | + ``typename std::enable_if<...>``, where there's already a ``typename`` and
# | + only the ``::type`` at the end is missing.
# | +
# | + - Improved :doc:`bugprone-macro-parentheses
# | + <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.
# | +
# | + - Improved :doc:`bugprone-std-namespace-modification
# | + <clang-tidy/checks/bugprone/std-namespace-modification>` check by fixing
# | + false positives when extending the standard library with a specialization of
# | + user-defined type and by removing detection of the compiler generated ``std``
# | + namespace extensions.
# | +
# | + - Improved :doc:`bugprone-string-constructor
# | + <clang-tidy/checks/bugprone/string-constructor>` check to detect suspicious
# | + string constructor calls when the string class constructor has a default
# | + allocator argument.
# | +
# | + - Improved :doc:`bugprone-throwing-static-initialization
# | + <clang-tidy/checks/bugprone/throwing-static-initialization>` check by adding
# | + the `AllowedTypes` option. With this option it is possible to exclude
# | + static declarations with specific types from the check.
# | +
# | + - Improved :doc:`bugprone-unchecked-optional-access
# | + <clang-tidy/checks/bugprone/unchecked-optional-access>` to recognize common
# | + GoogleTest macros such as ``ASSERT_TRUE`` and ``ASSERT_FALSE``, reducing the
# | + number of false positives in test code.
# | +
# | + - Improved :doc:`bugprone-unsafe-functions
# | + <clang-tidy/checks/bugprone/unsafe-functions>` check by adding the function
# | + ``std::get_temporary_buffer`` to the default list of unsafe functions. (This
# | + function is unsafe, useless, deprecated in C++17 and removed in C++20).
# |
# | - Improved :doc:`bugprone-use-after-move
# | <clang-tidy/checks/bugprone/use-after-move>` check to no longer emit a
# | ***************
# | *** 237,318 ****
# | std::move(b))``). The tuple assignment writes back through the stored
# | references, which fully reinitializes the captured variables.
# |
# | -
# | - - Improved :doc:`bugprone-argument-comment
# | - <clang-tidy/checks/bugprone/argument-comment>` to also check for C++11
# | - inherited constructors.
# | -
# | - - Improved :doc:`bugprone-bad-signal-to-kill-thread
# | - <clang-tidy/checks/bugprone/bad-signal-to-kill-thread>` check by fixing false
# | - negatives when the ``SIGTERM`` macro is obtained from a precompiled header.
# | -
# | - - Improved :doc:`bugprone-casting-through-void
# | - <clang-tidy/checks/bugprone/casting-through-void>` check by running only on
# | - C++ files because suggested ``reinterpret_cast`` is not available in pure C.
# | -
# | - - Improved :doc:`bugprone-derived-method-shadowing-base-method
# | - <clang-tidy/checks/bugprone/derived-method-shadowing-base-method>` check by
# | - correctly ignoring function templates.
# | -
# | - - Improved :doc:`bugprone-exception-escape
# | - <clang-tidy/checks/bugprone/exception-escape>` check by adding
# | - `TreatFunctionsWithoutSpecificationAsThrowing` option to support reporting
# | - for unannotated functions, enabling reporting when no explicit ``throw``
# | - is seen and allowing separate tuning for known and unknown implementations.
# | -
# | - - Improved :doc:`bugprone-fold-init-type
# | - <clang-tidy/checks/bugprone/fold-init-type>` check by detecting precision
# | - loss in overloads with transparent standard functors (e.g. ``std::plus<>``)
# | - for ``std::accumulate``, ``std::reduce``, and ``std::inner_product``.
# | -
# | - - Improved :doc:`bugprone-inc-dec-in-conditions
# | - <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check by fixing a false
# | - positive when increment/decrement operators appear inside lambda bodies that
# | - are part of a condition expression.
# | -
# | - - Improved :doc:`bugprone-incorrect-enable-if
# | - <clang-tidy/checks/bugprone/incorrect-enable-if>` check to not
# | - insert an extraneous ``typename`` on code like
# | - ``typename std::enable_if<...>``, where there's already a ``typename`` and
# | - only the ``::type`` at the end is missing.
# | -
# | - - Improved :doc:`bugprone-macro-parentheses
# | - <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.
# | -
# | - - Improved :doc:`bugprone-std-namespace-modification
# | - <clang-tidy/checks/bugprone/std-namespace-modification>` check by fixing
# | - false positives when extending the standard library with a specialization of
# | - user-defined type and by removing detection of the compiler generated ``std``
# | - namespace extensions.
# | -
# | - - Improved :doc:`bugprone-string-constructor
# | - <clang-tidy/checks/bugprone/string-constructor>` check to detect suspicious
# | - string constructor calls when the string class constructor has a default
# | - allocator argument.
# | -
# | - - Improved :doc:`bugprone-throwing-static-initialization
# | - <clang-tidy/checks/bugprone/throwing-static-initialization>` check by adding
# | - the `AllowedTypes` option. With this option it is possible to exclude
# | - static declarations with specific types from the check.
# | -
# | - - Improved :doc:`bugprone-unchecked-optional-access
# | - <clang-tidy/checks/bugprone/unchecked-optional-access>` to recognize common
# | - GoogleTest macros such as ``ASSERT_TRUE`` and ``ASSERT_FALSE``, reducing the
# | - number of false positives in test code.
# | -
# | - - Improved :doc:`bugprone-unsafe-functions
# | - <clang-tidy/checks/bugprone/unsafe-functions>` check by adding the function
# | - ``std::get_temporary_buffer`` to the default list of unsafe functions. (This
# | - function is unsafe, useless, deprecated in C++17 and removed in C++20).
# |
# | - Improved :doc:`bugprone-use-after-move
# | <clang-tidy/checks/bugprone/use-after-move>` check:
# | --- 313,318 ----
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/192895
More information about the cfe-commits
mailing list