ilya-biryukov accepted this revision.
ilya-biryukov added a comment.
This revision is now accepted and ready to land.

LG, thanks.
And a question of what are the things we can accidentally misdetect as explicit



================
Comment at: clangd/XRefs.cpp:105
+    // Sort results. Declarations being referenced explicitly come first.
+    std::sort(Result.begin(), Result.end(),
+              [](const DeclInfo &L, const DeclInfo &R) {
----------------
hokein wrote:
> ilya-biryukov wrote:
> > ilya-biryukov wrote:
> > > Maybe sort further at the callers instead?
> > > It would be a more intrusive change, but would also give a well-defined 
> > > result order for findDefinitions and other cases. E.g. findDefinitions 
> > > currently gives results in an arbitrary order (specifically, the one 
> > > supplied by DenseMap+sort) when multiple decls are returned.
> > > WDYT?
> > Just to clarify the original suggestion.
> > 
> > Maybe we can sort the `(location, is_explicit)` pairs instead of the 
> > `(decl, is_explicit)` pairs?
> > Sorting based on pointer equality (see `L.D < R.D`) provides 
> > non-deterministic results and we can have fully deterministic order on 
> > locations.
> > 
> > DeclarationAndMacrosFinder can return the results in arbitrary orders and 
> > the client code would be responsible for getting locations and finally 
> > sorting them.
> > WDYT?
> I think we'd better sort them in `DeclarationAndMacrosFinder` -- because we 
> have a few clients in `XRefs.cpp` using this class, and it seems that they 
> don't have their specific needs for sorting, having them sorting results 
> seems unnecessary.
That LG, as long as we have a deterministic order, we should be fine


================
Comment at: clangd/XRefs.cpp:141
+          return false;
+        // Use the first child is good enough for most cases -- normally the
+        // expression returned by handleDeclOccurence contains exactly one
----------------
Do we know which cases break? Just wondering is there are more reliable ways to 
handle those cases?


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D50438



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

Reply via email to