[PATCH] D52273: [clangd] Initial implementation of expected types

Eric Liu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 21 02:00:14 PDT 2018


ioeric added a comment.

In https://reviews.llvm.org/D52273#1241281, @sammccall wrote:

> This seems very clever, but extremely complicated - you've implemented much of C++'s conversion logic, it's not clear to me which parts are actually necessary to completion quality.
>  (Honestly this applies to expected types overall - it seems intuitively likely that it's a good signal, it seems less obvious that it pulls its weight if it can't be made simple).
>
> From the outside it seems much of it is YAGNI, and if we do then we need to build it up slowly with an eye for maintainability.
>  Can we start with expected type boosting (no conversions) as previously discussed, and later measure which other parts make a difference? (I think we'll need/want the simple model anyway, for this to work with Dex and other token-based indexes).


+1 to a simpler model.

As chatted offline, I think the return type can be split into multiple orthogonal signals. For example, `const T &` can be split into 3 independent signals {`const`, `type T`, `reference`}. I think this can make the reasoning of boosting/scoring easier for both index and code completion. Agree with Sam that we should start with something simple (e.g. type matching without conversing) and land basic components to make further evaluation possible.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D52273





More information about the cfe-commits mailing list