ajohnson-uoregon added a comment.

This is the same use case as my other patches :) 
https://github.com/ajohnson-uoregon/llvm-project/blob/feature-ajohnson/clang-tools-extra/clang-rewrite/ConstructMatchers.cpp#L545

If there's a function with default arguments, and our user doesn't specify some 
of those defaults when they're writing code for our tool, we want to match only 
the calls in their code that give the same number of arguments, but 
`argumentCountIs()` matches the total *including* default arguments, and we 
need the total *excluding* non-provided default arguments. For example, our 
user might write

  void func(int a = 0, int b = 0);
  
  [[clang::matcher("test")]]
  auto foo(int x) {
    func(x);
  }

and we don't want that to match `func()` or `func(x, y)`. When we're doing 
matcher generation, we aren't able to look up the FunctionDecl and see if there 
are defaults (because the function name itself might be a parameter for us), 
and even if we could, adding `cxxDefaultArgExpr()` for all of the missing ones 
is a lot of work that we'd rather not do.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D120956

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to