<div dir="ltr">Revision 226670 improves parameter completion for C++ considerably, but there's<br>still a fundamental piece missing (besides the other non-fundamental FIXMEs).<br>This is also a problem that exists prior to the recent additions.<br><span style="font-family:monospace,monospace"><br>    int foo(int a, int b = 42);<br>    <br>    int main() {<br>        foo(4, 2);<br>    }</span><br><br>For the previous code, this is the relevant entries you get for completion:<br><br><span style="font-family:monospace,monospace">$ c-index-test -code-completion-at=sample.cpp:4:11 sample.cpp<br><br>FunctionDecl:{ResultType int}{TypedText foo}{LeftParen (}{Placeholder int a} ↩<br>  {Optional {Comma , }{Placeholder int b}}{RightParen )} (12)<br><br>OverloadCandidate:{ResultType int}{Text foo}{LeftParen (}{Text int a} ↩<br>  {Comma , }{CurrentParameter int b}{RightParen )} (1)<br><br>$ clang -cc1 -fsyntax-only -code-completion-at=sample.cpp:4:11 sample.cpp -o -<br><br>COMPLETION: foo : [#int#]foo(<#int a#>{#, <#int b#>#})<br>OVERLOAD: [#int#]foo(int a, <#int b#>)<br></span><br>As can be seen, the code building the code completion string for overloads is<br>providing less detail compared to the one building completion strings for the<br>function declarations in general. There's no information about optionals and<br>no information about what's a parameter and what's a function identifier,<br>everything besides <span style="font-family:monospace,monospace">ResultType</span>, <span style="font-family:monospace,monospace">CurrentParameter</span> and special characters is<br>classified as <span style="font-family:monospace,monospace">Text</span>.<br><br>I propose code completion strings for overload candidates to follow the pattern<br>already in use for function declarations.<br><br> - return type chunk: <span style="font-family:monospace,monospace">ResultType</span><br> - function identifier: <span style="font-family:monospace,monospace">TypedText</span> (or <span style="font-family:monospace,monospace">Text</span> since we're in parameter completion context)<br> - parameters: <span style="font-family:monospace,monospace">Placeholder</span><br> - current parameter: <span style="font-family:monospace,monospace">CurrentParameter</span><br><br>This shouldn't be a big commit. Discussion lies more at the changed<br>functionality.<br><br>Since overload candidate results were previously tagged as non implemented, and were<br>not widely used, any objections?<br><br>Regards,<br>Francisco Lopes<br><br></div>