diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java index d45c9b32a40..96e5b54bc90 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/AbstractContentAssistTest.java @@ -39,6 +39,7 @@ import org.eclipse.ui.texteditor.AbstractTextEditor; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.cdt.core.dom.IPDOMManager; +import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.ui.CUIPlugin; @@ -240,13 +241,14 @@ public abstract class AbstractContentAssistTest extends BaseUITestCase { } } - private Map toMap(Object[] results, CompareType compareType) { + private Map toMap(Object[] results, CompareType compareType) throws CModelException { Map resultsMap = new HashMap<>(); for (Object result : results) { switch (compareType) { case REPLACEMENT: if (result instanceof ParameterGuessingProposal) { ParameterGuessingProposal proposal = (ParameterGuessingProposal) result; + proposal.generateParameterGuesses(); String pName = proposal.getReplacementString(); ICompletionProposal[][] pProposals = proposal .getParametersGuesses(); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java index 51fff869d2a..a23febdadca 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java @@ -176,27 +176,7 @@ public class ParameterGuessingProposal extends FunctionCompletionProposal { super.apply(document, trigger, offset); if (fGuessArguments) { - IStatus status = ASTProvider.getASTProvider().runOnAST(fTranslationUnit, ASTProvider.WAIT_ACTIVE_ONLY, - new NullProgressMonitor(), new ASTRunnable() { - @Override - public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException { - if (astRoot == null) - return Status.CANCEL_STATUS; - // Initialize necessary fields. - fParametersNames = getFunctionParametersNames(fFunctionParameters); - fParametersTypes = getFunctionParametersTypes(fFunctionParameters); - - try { - guessParameters(); - } catch (Exception e) { - CUIPlugin.log(e); - return Status.CANCEL_STATUS; - } - return Status.OK_STATUS; - } - }); - if (Status.CANCEL_STATUS == status) - return; + generateParameterGuesses(); } int baseOffset = getReplacementOffset(); @@ -275,8 +255,32 @@ public class ParameterGuessingProposal extends FunctionCompletionProposal { return new Point(fSelectedRegion.getOffset(), fSelectedRegion.getLength()); } + + public void generateParameterGuesses() { + IStatus status = ASTProvider.getASTProvider().runOnAST(fTranslationUnit, ASTProvider.WAIT_ACTIVE_ONLY, + new NullProgressMonitor(), new ASTRunnable() { + @Override + public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException { + if (astRoot == null) + return Status.CANCEL_STATUS; + try { + guessParameters(astRoot); + } catch (Exception e) { + CUIPlugin.log(e); + return Status.CANCEL_STATUS; + } + return Status.OK_STATUS; + } + }); + if (Status.CANCEL_STATUS == status) + return; + } + + void guessParameters(IASTTranslationUnit ast) throws CModelException { + // Initialize necessary fields. + fParametersNames = getFunctionParametersNames(fFunctionParameters); + fParametersTypes = getFunctionParametersTypes(fFunctionParameters); - private void guessParameters() throws CModelException { int count = fParametersNames.length; fPositions = new Position[count]; fChoices = new ICompletionProposal[count][];