[PATCH] D50438: [clangd] Sort GoToDefinition results.
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 13 04:33:40 PDT 2018
ilya-biryukov added inline comments.
================
Comment at: clangd/XRefs.cpp:71
+struct DeclInfo {
+ const Decl *D;
----------------
NIT: maybe call `Occurence` instead? As this is actually a `Decl` with some extra data, computed based on the expression it originated from. Occurence seems like a nice that for that kind of thing.
================
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) {
----------------
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?
================
Comment at: clangd/XRefs.cpp:128
+ void insertDecl(const Decl *D, bool IsExplicitReferenced) {
+ auto It = Decls.find(D);
+ if (It != Decls.end())
----------------
Maybe simplify to `Decls[D] |= IsExplicitReferenced`?
================
Comment at: clangd/XRefs.cpp:143
+ auto hasImplicitExpr = [](const Expr *E) {
+ if (E && E->child_begin() != E->child_end()) {
+ // Use the first child is good enough for most cases -- normally the
----------------
NIT: [use early exits](https://llvm.org/docs/CodingStandards.html#use-early-exits-and-continue-to-simplify-code) by inverting condition
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D50438
More information about the cfe-commits
mailing list