[PATCH] D50517: [clangd] Generate incomplete trigrams for the Dex index

Kirill Bobyrev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 10 02:24:32 PDT 2018


kbobyrev planned changes to this revision.
kbobyrev added a comment.

As discussed offline with @ilya-biryukov, the better approach would be to prefix match first symbols of each distinct identifier piece instead of prefix matching (just looking at the first letter of the identifier) the whole identifier.

Example:

- Query: `"u"`
- Symbols: `"unique_ptr"`, `"user"`, `"super_user"`

Current implementation would match `"unique_ptr"` and `"user"` only.
Proposed implementation would match all three symbols, because the second piece of `"super_user"` starts with `u`.

This might be useful for codebases where e.g. each identifier starts with some project prefix (`ProjectInstruction`, `ProjectGraph`, etc). For C++, it's better to use namespaces instead of this naming which is not really great, but I am aware of the C++ projects which actually opt for such naming convention. However, in pure C this relatively common practice, e.g. a typical piece of code for GNOME might be

  	GtkOrientation        orientation;
  	GtkWrapAllocationMode mode;
  
  	GtkWrapBoxSpreading   horizontal_spreading;
  	GtkWrapBoxSpreading   vertical_spreading;
  
  	guint16               vertical_spacing;
  	guint16               horizontal_spacing;
  
  	guint16               minimum_line_children;
  	guint16               natural_line_children;
  
  	GList                *children;
  };

Also, this is better for macros, which can not be put into namespaces anyway and there's `BENCHMARK_UNREACHABLE` and so on.

I'll update the patch with the proposed solution.


https://reviews.llvm.org/D50517





More information about the cfe-commits mailing list