diff options
author | Nathan Ridge | 2017-01-13 04:04:43 +0000 |
---|---|---|
committer | Nathan Ridge | 2017-01-23 01:21:39 +0000 |
commit | 8956d2c7e6e1227083f39df6f9121db9cdd92bff (patch) | |
tree | 9defa67c97131ae506d91c2f5e0a4275f31b0af1 /core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist | |
parent | d45ff124e3912dd2734856c91f5c88c3eb6b9f9f (diff) | |
download | org.eclipse.cdt-8956d2c7e6e1227083f39df6f9121db9cdd92bff.tar.gz org.eclipse.cdt-8956d2c7e6e1227083f39df6f9121db9cdd92bff.tar.xz org.eclipse.cdt-8956d2c7e6e1227083f39df6f9121db9cdd92bff.zip |
Bug 72809 - Improve content assist inside inactive code
Change-Id: If24e354d00aaf886da1571fc525b556e08c94897
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist')
2 files changed, 11 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 152814a9621..bdf4c766438 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 @@ -97,6 +97,7 @@ import org.eclipse.cdt.ui.text.ICPartitions; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.ASTQueries; +import org.eclipse.cdt.internal.core.dom.parser.IASTInactiveCompletionName; import org.eclipse.cdt.internal.core.dom.parser.c.CBuiltinParameter; import org.eclipse.cdt.internal.core.dom.parser.c.CBuiltinVariable; import org.eclipse.cdt.internal.core.dom.parser.c.CImplicitFunction; @@ -162,8 +163,11 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer IASTName[] names = completionNode.getNames(); for (IASTName name : names) { - if (name.getTranslationUnit() == null) { + if (name.getTranslationUnit() == null && !(name instanceof IASTInactiveCompletionName)) { // The node isn't properly hooked up, must have backtracked out of this node. + // Inactive completion names are special in that they are not hooked up + // (because there is no AST for the inactive code), but we still want to + // attempt completion for them. continue; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/HelpCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/HelpCompletionProposalComputer.java index 4be7afc935c..cc1e7f4bd21 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/HelpCompletionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/HelpCompletionProposalComputer.java @@ -29,6 +29,8 @@ import org.eclipse.cdt.ui.IFunctionSummary; import org.eclipse.cdt.ui.text.ICHelpInvocationContext; import org.eclipse.cdt.ui.text.IContentAssistHelpInvocationContext; +import org.eclipse.cdt.internal.core.dom.parser.IASTInactiveCompletionName; + import org.eclipse.cdt.internal.ui.CHelpProviderManager; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; @@ -46,8 +48,10 @@ public class HelpCompletionProposalComputer extends ParsingBasedProposalComputer for (int i = 0; i < names.length; ++i) { IASTName name = names[i]; - // ignore if not connected - if (name.getTranslationUnit() == null) + // Ignore if not connected. + // See the corresponding code in DOMCompletionProposalComputer for why + // inactive completion names are special. + if (name.getTranslationUnit() == null && !(name instanceof IASTInactiveCompletionName)) continue; // ignore if this is a member access |