From 67c1fbfc3f1f65df5280b9d138c8ee0093494c7d Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Fri, 1 Apr 2005 21:01:46 +0000 Subject: [PATCH] Added content assist for expressions in return statements. Also added the icon for namespaces. --- .../parser/AbstractGNUSourceCodeParser.java | 31 +++++++++++++++++-- .../DOMCompletionContributor.java | 3 ++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index efb5770e436..f4109ac8784 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -1676,11 +1676,36 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { int startOffset; startOffset = consume(IToken.t_return).getOffset(); IASTExpression result = null; - if (LT(1) != IToken.tSEMI) { + + // See if there is a return expression + switch (LT(1)) { + case IToken.tEOC: + // We're trying to start one + IASTName name = createName(LA(1)); + IASTIdExpression idExpr = createIdExpression(); + idExpr.setName(name); + name.setParent(idExpr); + name.setPropertyInParent(IASTIdExpression.ID_NAME); + result = idExpr; + break; + case IToken.tSEMI: + // None + break; + default: + // Yes result = expression(); - + break; } - int lastOffset = consume(IToken.tSEMI).getEndOffset(); + + int lastOffset = 0; + switch (LT(1)) { + case IToken.tSEMI: + case IToken.tEOC: + lastOffset = consume().getEndOffset(); + break; + default: + throwBacktrack(LA(1)); + } IASTReturnStatement return_statement = createReturnStatement(); ((ASTNode) return_statement).setOffsetAndLength(startOffset, lastOffset diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java index b290e075116..f93cedc7875 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java @@ -27,6 +27,7 @@ import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; @@ -229,6 +230,8 @@ public class DOMCompletionContributor implements ICompletionContributor { } } else if (binding instanceof IVariable) { imageDescriptor = CElementImageProvider.getVariableImageDescriptor(); + } else if (binding instanceof ICPPNamespace) { + imageDescriptor = CElementImageProvider.getNamespaceImageDescriptor(); } } catch (DOMException e) { }