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

Reply via email to