ilya-biryukov added a comment.

> 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.

Clearly the model that supports C++ conversions is something that **will** 
improve code completion quality.
I do agree it's not trivial, but would argue we at least want:

- qualification conversions (i.e. adding const)
- user-defined conversions (e.g. operator bool is commonly useful think)
- derived-to-base conversions (Derived* should convert to Base*)

Without those, we don't support a bunch of useful cases.

> 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.

Yeah, I do keep it in mind and I think it's a great idea. E.g., we can put all 
numeric types into one equivalence class and get rid of all numeric conversions.
That adds some complexity to the interface, though, I wanted to measure how the 
trivial solution (enumerate all types) works. To make sure we actually can't 
get away without it.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D52273



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

Reply via email to