[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