ClangCodeModel: Show only valid applicable overloads when completing

libclang is smart enough to filter the overloads according to which
arguments have already been entered, so let's make use of that.

Fixes: QTCREATORBUG-650
Change-Id: Ic2711f460c908c6fd9c8efe28c3c63a0ce2d9205
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2021-02-12 11:36:17 +01:00
committed by Christian Stenger
parent 9c9ca280ea
commit dfa24f09ad
7 changed files with 38 additions and 8 deletions

View File

@@ -183,11 +183,8 @@ void ClangCompletionContextAnalyzer::handleFunctionCall(int afterOperatorPositio
const int functionNameStart = startOfFunctionCall(afterOperatorPosition);
if (functionNameStart >= 0) {
m_addSnippets = functionNameStart == afterOperatorPosition;
// Always pass the position right after '(' to libclang because
// positions after the comma might be problematic if a preceding
// argument is invalid code.
setActionAndClangPosition(PassThroughToLibClangAfterLeftParen,
m_positionForProposal,
afterOperatorPosition,
functionNameStart);
} else { // e.g. "(" without any function name in front
m_addSnippets = true;