diff options
author | Nathan Ridge | 2016-12-12 18:35:23 +0000 |
---|---|---|
committer | Nathan Ridge | 2016-12-19 18:35:39 +0000 |
commit | 9640ac4917bf601f4860a1fd522c236856a3125d (patch) | |
tree | cddb32cd94d373a4aa6f26edf9aefdf5c1ffea46 /core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist | |
parent | 2706699543e0a42eaa4efddb52b3a54635f8ae30 (diff) | |
download | org.eclipse.cdt-9640ac4917bf601f4860a1fd522c236856a3125d.tar.gz org.eclipse.cdt-9640ac4917bf601f4860a1fd522c236856a3125d.tar.xz org.eclipse.cdt-9640ac4917bf601f4860a1fd522c236856a3125d.zip |
Bug 455797 - Show template parameter list for alias template completions
Change-Id: I138861d305a02927014eebe882065e9c7fa877c8
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist')
-rw-r--r-- | core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java index 3f75bb26a20..c61d27bf32d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java @@ -68,6 +68,7 @@ import org.eclipse.cdt.core.dom.ast.c.ICFunctionScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDirective; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPAliasTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBlockScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplatePartialSpecialization; @@ -81,6 +82,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter; @@ -354,6 +356,8 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer final int baseRelevance= computeBaseRelevance(prefix, name); if (binding instanceof ICPPClassType) { handleClass((ICPPClassType) binding, astContext, cContext, baseRelevance, proposals); + } else if (binding instanceof ICPPAliasTemplate) { + handleAliasTemplate((ICPPAliasTemplate) binding, cContext, baseRelevance, proposals); } else if (binding instanceof IFunction) { handleFunction((IFunction) binding, cContext, baseRelevance, proposals); } else if (binding instanceof IVariable) { @@ -382,10 +386,15 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer char[] name= binding.getNameCharArray(); return name.length == 0 || name[0] == '{'; } - + private void addProposalForClassTemplate(ICPPClassTemplate templateType, CContentAssistInvocationContext context, int baseRelevance, List<ICompletionProposal> proposals) { int relevance = getClassTypeRelevance(templateType); + addProposalForTemplateDefinition(templateType, context, baseRelevance + relevance, proposals); + } + + private void addProposalForTemplateDefinition(ICPPTemplateDefinition templateType, + CContentAssistInvocationContext context, int relevance, List<ICompletionProposal> proposals) { StringBuilder representation = new StringBuilder(templateType.getName()); boolean inUsingDeclaration = context.isInUsingDirective(); String templateParameterRepresentation = ""; //$NON-NLS-1$ @@ -398,7 +407,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer String representationString = MessageFormat.format(representation.toString(), ""); //$NON-NLS-1$ String displayString = MessageFormat.format(representation.toString(), templateParameterRepresentation); CCompletionProposal proposal = createProposal(representationString, displayString, getImage(templateType), - baseRelevance + relevance, context); + relevance, context); if (!inUsingDeclaration) { CProposalContextInformation info = new CProposalContextInformation( @@ -412,7 +421,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer proposals.add(proposal); } - private String buildTemplateParameters(ICPPClassTemplate templateType, CContentAssistInvocationContext context) { + private String buildTemplateParameters(ICPPTemplateDefinition templateType, CContentAssistInvocationContext context) { ICPPTemplateParameter[] parameters = templateType.getTemplateParameters(); StringBuilder representation = new StringBuilder(); @@ -480,6 +489,12 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer baseRelevance + RelevanceConstants.CLASS_TYPE_RELEVANCE, context)); } } + + private void handleAliasTemplate(ICPPAliasTemplate aliasTemplate, + CContentAssistInvocationContext context, int baseRelevance, List<ICompletionProposal> proposals) { + addProposalForTemplateDefinition(aliasTemplate, context, + baseRelevance + RelevanceConstants.TYPEDEF_TYPE_RELEVANCE, proposals); + } private void addProposalsForConstructors(ICPPClassType classType, CContentAssistInvocationContext context, int baseRelevance, List<ICompletionProposal> proposals) { |