[PATCH] D82126: [libTooling] Change Transformer's `cat` to handle some cases of text in macros.

Tom Lokovic via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 19 10:19:25 PDT 2020


tdl-g added a comment.

Interesting, in all three of those cases, it's reasonable to replace the entire expression, thus eliminating the macro.  None of those "tear" the macro; if we had a case like

#define FOO(a,b,c,d) ((a).find(b) == std::string::npos ? (c) : (d))
FOO("helo", "x", 5, 6);

I guess in that case we'd want to suppress an edit change, since it would have to modify the macro to make the change.  But I guess all the existing test cases are actually safe to convert with the macro.

Do you want to remove the existing macro cases and add the "tearing" one above to confirm that it doesn't propose an edit?

In D82126#2103934 <https://reviews.llvm.org/D82126#2103934>, @ymandel wrote:

> Tests show that this breaks the test for the clang tidy `abseil-string-find-str-contains`.  Curious if this is a desirable change in behavior (in which case I'll update your test file) or the wrong behavior:
>
> https://github.com/llvm/llvm-project/blob/master/clang-tools-extra/test/clang-tidy/checkers/abseil-string-find-str-contains.cpp#L246-L252
>
>   void no_macros() {
>      std::string s;
>   -  COMPARE_MACRO(s.find("a"), std::string::npos);
>   -  FIND_MACRO(s, "a") == std::string::npos;
>   -  FIND_COMPARE_MACRO(s, "a", std::string::npos);
>   +  !absl::StrContains(s, "a");
>   +  !absl::StrContains(s, "a");
>   +  !absl::StrContains(s, "a");
>    }
>





Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82126/new/

https://reviews.llvm.org/D82126





More information about the cfe-commits mailing list