hokein added a comment.

> please note that this might require special handling for go-to-def. as 
> go-to-def only jumps to canonical decl and in operator new's case the user 
> provided one might not be canonical, whereas the canonical one is likely 
> builtin without a source info.

this is a good point, I didn't pay much attention to this case. The global 
new/delete are a bit tricky, they are implicitly declared in every TU.

> LGTM if you are not planning to make this work with go-to-def now (or ever), 
> please LMK.

My motivation of this patch is to fix class-specific new/delete operators 
(go-to-def already works). I added a FIXME in go-to-def. I guess that case 
happens rarely in practice.



================
Comment at: clang-tools-extra/clangd/unittests/FindTargetTests.cpp:564
+  Code = R"cpp(
+    struct X {
+      static void *operator new(unsigned long s);
----------------
kadircet wrote:
> nit: you can simplify to (same for delete)
> 
> ```cpp
> void *operator new(unsigned long);
> void foo() { new int; }
> ```
I think global and class-specific new/delete operators are not the same thing, 
I would like to keep both of them. Added the global one.


================
Comment at: clang-tools-extra/clangd/unittests/FindTargetTests.cpp:565
+    struct X {
+      static void *operator new(unsigned long s);
+    };
----------------
kadircet wrote:
> you might want to set --target to a fix triplet to ensure `size_t == unsigned 
> long`
good catch, done. The test failed on the windows pre-merge test.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D85028

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

Reply via email to