mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
Added content assist for expressions in return statements. Also added the icon for namespaces.
This commit is contained in:
parent
363f066567
commit
67c1fbfc3f
2 changed files with 31 additions and 3 deletions
|
@ -1676,11 +1676,36 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
|
||||||
int startOffset;
|
int startOffset;
|
||||||
startOffset = consume(IToken.t_return).getOffset();
|
startOffset = consume(IToken.t_return).getOffset();
|
||||||
IASTExpression result = null;
|
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();
|
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();
|
IASTReturnStatement return_statement = createReturnStatement();
|
||||||
((ASTNode) return_statement).setOffsetAndLength(startOffset, lastOffset
|
((ASTNode) return_statement).setOffsetAndLength(startOffset, lastOffset
|
||||||
|
|
|
@ -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.IVariable;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
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.ICPPField;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
||||||
import org.eclipse.cdt.core.model.IWorkingCopy;
|
import org.eclipse.cdt.core.model.IWorkingCopy;
|
||||||
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
||||||
|
@ -229,6 +230,8 @@ public class DOMCompletionContributor implements ICompletionContributor {
|
||||||
}
|
}
|
||||||
} else if (binding instanceof IVariable) {
|
} else if (binding instanceof IVariable) {
|
||||||
imageDescriptor = CElementImageProvider.getVariableImageDescriptor();
|
imageDescriptor = CElementImageProvider.getVariableImageDescriptor();
|
||||||
|
} else if (binding instanceof ICPPNamespace) {
|
||||||
|
imageDescriptor = CElementImageProvider.getNamespaceImageDescriptor();
|
||||||
}
|
}
|
||||||
} catch (DOMException e) {
|
} catch (DOMException e) {
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue