hjanuschka wrote:
@HerrCai0907 about the fixit.
its strange, using the llvm-lit test case it emits a warning, and even shows
where the substr() comes from:
```
738:
/home/chrome/llvm-project/build/tools/clang/tools/extra/test/clang-tidy/checkers/modernize/Output/use-starts-ends-with.cpp.tmp.cpp:315:17:
warning: use starts_with instead of substr() ==
[modernize-use-starts-ends-with]
not:imp1
!~~~~~~~
error: no match expected
739: 315 | "prefix" == SUBSTR(STR(), 0, 6);
740: | ^
741:
/home/chrome/llvm-project/build/tools/clang/tools/extra/test/clang-tidy/checkers/modernize/Output/use-starts-ends-with.cpp.tmp.cpp:309:33:
note: expanded from macro 'SUBSTR'
742: 309 | #define SUBSTR(X, A, B) (X).substr((A), (B))
743: | ^
```
to reduce the complexity and test it tried to:
```c++
// RUN: %check_clang_tidy -std=c++20 %s modernize-use-starts-ends-with %t --
-debug
#include <string>
void test_macro_case() {
std::string str("hello world");
#define SUBSTR(X, A, B) (X).substr((A), (B))
#define STR() str
"prefix" == SUBSTR(STR(), 0, 6);
}
```
```sh
./bin/clang-tidy test.cpp -checks="-*, modernize-use-starts-ends-with"
--extra-arg=-std=c++20 -
```
doesnt even come up with a warning. i dont know whats "right" now, warning and
showing root cause, seems to be fairly good, fixing a macro might be even a bad
idea?
https://github.com/llvm/llvm-project/pull/116033
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits