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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits