[cfe-dev] [RFC][PATCH] Implementation for completion in call context for C++

Francisco Lopes francisco.mailing.lists at oblita.com
Mon Jan 12 07:25:15 PST 2015


PING.

Notice that meanwhile I've just completed parts of what was previously TODO
(constructors, functors, ....).

http://reviews.llvm.org/D6880

Regards,
Francisco Lopes

2015-01-05 19:15 GMT-02:00 Francisco Lopes <
francisco.mailing.lists at oblita.com>:

> Hi,
>
> I've improved completion in call context to work with C++'s templates,
> member functions, et al.
>
> Notice: an important aspect of this implementation is that I've took
> freedom
> to change the previous behavior for completion in call context at all.
>
> As can be seen, in lib/Sema/SemaCodeComplete.cpp this comment:
>
>   // When we're code-completing for a call, we fall back to ordinary
>   // name code-completion whenever we can't produce specific
>   // results. We may want to revisit this strategy in the future,
>   // e.g., by merging the two kinds of results.
>
> was changed to this:
>
>   // When we're code-completing for a call, we DON'T fall back to ordinary
>   // name code-completion whenever we can't produce specific
>   // results. This will do "parameter completion" solely.
>   // I think "parameter completion" is not a good classification, since
> this
>   // is useful solely for providing hints and not code-completing.
>
> The rationale behind this change is:
>   - The former comment shows that completion in call context is still not
>     in a definite state, open to discussion.
>   - I firmly believe this new behavior is for good. In call context, 99% of
>     the time, code authoring tools will be interested in information about
> the
>     prototype and arguments solely, not in all possible kinds of
> expressions
>     that can fit as an argument. This behavior turns the interface slower
> than
>     necessary to have almost no benefit.
>     So I believe that completion in call context just after '(' and ','
> should
>     work similarly as for member access: only provide what's of interest,
> which
>     parametric information (function prototypes, current argument,
> parameter
>     types, etc.).
>
> Despite this, I should be able revert to the former behavior in the change
> set
> without much trouble, in case there's no agreement on this, while still
> providing the new set of completions.
>
> The following is a video that covers the new behavior, so that's easy to
> see
> what got changed. It's based on the test set that's part of the patch:
>
>   https://vimeo.com/115990512
>
> The change set can be browsed here:
>
>   https://github.com/oblitum/clang/tree/improved_argument_hints
>
> The Subversion compatible patch:
>
>   https://gist.github.com/oblitum/d24d7d2f9c6ee5cdcea1
>
> This got started for YouCompleteMe:
>
>   https://github.com/Valloric/YouCompleteMe/pull/1300
>
> TODO:
>   Functors (classes that overload operator()), Constructors, ...
>
> (I've already obtained commit access)
>
> Att,
> Francisco Lopes
>
> PS: I'm actively looking for a job, remote or relocation, any help very
> much
>     appreciated!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150112/c3de0294/attachment.html>


More information about the cfe-dev mailing list