kadircet added inline comments.

================
Comment at: clang-tools-extra/clangd/StdSymbolMap.inc:958
 SYMBOL(remainder, std::, <cmath>)
-SYMBOL(remove, std::, <cstdio>)
 SYMBOL(remove_all_extents, std::, <type_traits>)
----------------
sammccall wrote:
> Is the stdio version so uncommon we are willing to be wrong about it? For 
> `move` we omit it from here and consider it case-by-case, I'd have imagined 
> doing the same here 
> 
> (BTW at some point we may want to extend this to list alternative headers for 
> ambiguous symbols)
>Is the stdio version so uncommon we are willing to be wrong about it?

Waiting for permissions on a big codebase with lots of third_party code to 
perform some analysis.

>  For move we omit it from here and consider it case-by-case, I'd have 
> imagined doing the same here

`std::move` is different, both occurrences are marked as variants. We don't 
really drop it during post-processing saying there are multiple options, it 
just never makes it to the final list.

```
move<>() (algorithm) (since C++11)
move<>() (utility) (since C++11)
```

I am not sure how we ended up with this ignore the `variant`ed symbols behavior.

> (BTW at some point we may want to extend this to list alternative headers for 
> ambiguous symbols)

I agree, there is some room for improvement, like also listing different 
overloads with expected number of parameters and language versions.
It's unclear whether we need such detail today though.


================
Comment at: clang-tools-extra/clangd/include-mapping/cppreference_parser.py:138
       # FIXME: use these as a fallback rather than ignoring entirely.
-      if variant:
+      if variant != (namespace+symbol_name in variants_to_accept):
         continue
----------------
sammccall wrote:
> This logic seems a bit weird and non-general: it allows us to accept any 
> variant and reject any non-variant, but it doesn't allow us to accept 
> a*specific* variant (they are named) and doesn't allow us to accept both 
> (which currently would lead to the symbol being dropped as ambiguous).
I was trying to keep the change to a minimum. Happy to go with a solution that 
accepts a dictionary in the form of `(FQN, list_of_accepted_variants)`, where 
the list can have `""` variant, or instead of a list we can also have a glob, 
but I don't think it'll provide much value considering the irregularity of std 
header names.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114724

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

Reply via email to