HomePhabricator

[include-fixer] Add fuzzy SymbolIndex, where identifier needn't match exactly.

Description

[include-fixer] Add fuzzy SymbolIndex, where identifier needn't match exactly.

Summary:
Add fuzzy SymbolIndex, where identifier needn't match exactly.

The purpose for this is global autocomplete in clangd. The query will be a
partial identifier up to the cursor, and the results will be suggestions.

It's in include-fixer because:

  • it handles SymbolInfos, actually SymbolIndex is exactly the right interface
  • it's a good harness for lit testing the fuzzy YAML index
  • (Laziness: we can't unit test clangd until reorganizing with a tool/ dir)

Other questionable choices:

  • FuzzySymbolIndex, which just refines the contract of SymbolIndex. This is an interface to allow extension to large monorepos (*cough*)
  • an always-true safety check that Identifier == Name is removed from SymbolIndexManager, as it's not true for fuzzy matching
  • exposing -db=fuzzyYaml from include-fixer is not a very useful feature, and a non-orthogonal ui (fuzziness vs data source). -db=fixed is similar though.

Reviewers: bkramer

Subscribers: cfe-commits, mgorny

Differential Revision: https://reviews.llvm.org/D30720

Details

Committed
sammccallMar 13 2017, 8:55 AM
Differential Revision
D30720: [include-fixer] Add fuzzy SymbolIndex, where identifier needn't match exactly.
Parents
rL297629: [CGP] add tests for PR31028; NFC
Branches
Unknown
Tags
Unknown