https://github.com/HighCommander4 commented:

Thanks! This is a nice and simple fix.

 * It fixes the main issue as originally reported.
 * It fixes the additional issue discussed in [this 
comment](https://github.com/clangd/clangd/issues/2339#issuecomment-2709036107), 
taking the second approach (rendering the signature as `f(int arg)`), which I 
think is perfectly fine as that's what falls out naturally from this 
implementation.
 * It does not fix https://github.com/clangd/clangd/issues/2284, which is fine, 
it was just speculation on my part that 
https://github.com/clangd/clangd/issues/2339 and 
https://github.com/clangd/clangd/issues/2284 may have the same cause. (That 
said, if you're interested, https://github.com/clangd/clangd/issues/2284 would 
make a good follow-up issue to investigate next.)

The clangd test looks great, thanks for writing it! That said, based on my 
experience contributing changes to SemaCodeComplete.cpp, people like to 
**also** ask for a test to be added to libSema's own test suite. These tests 
work a bit differently: they're found at `clang/test/CodeCompletion` (see for 
example [this 
file](https://searchfox.org/llvm/source/clang/test/CodeCompletion/ordinary-name.cpp)),
 and they operate by running clang with the special `-code-complete-at` flag 
which invokes code completion at a point in the input file and prints the 
results in some format.

So for example, given `test.cpp` containing:

```c++
struct A
{
    void f(this A self, int arg);
};

int main() {
  A a;
  a.f
}
```

The command `clang -cc1 -fsyntax-only -code-completion-at=test.cpp:8:5 
-std=c++23 test.cpp` would previously print:

```c++
COMPLETION: A : A::
COMPLETION: f : [#void#]f(<#A self#>, <#int arg#>)
COMPLETION: operator= : [#A &#]operator=(<#const A &#>)
COMPLETION: operator= : [#A &#]operator=(<#A &&#>)
COMPLETION: ~A : [#void#]~A()
```

and with this patch it prints:

```
COMPLETION: A : A::
COMPLETION: f : [#void#]f(<#int arg#>)
COMPLETION: operator= : [#A &#]operator=(<#const A &#>)
COMPLETION: operator= : [#A &#]operator=(<#A &&#>)
COMPLETION: ~A : [#void#]~A()
```

allowing us to write a test that asserts that the output is the latter.

Would you mind writing a test of this form as well?

https://github.com/llvm/llvm-project/pull/146258
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to