diff options
author | Doug Schaefer | 2005-03-28 17:53:03 +0000 |
---|---|---|
committer | Doug Schaefer | 2005-03-28 17:53:03 +0000 |
commit | 0f74b22ace64b1ef7b2b22fef7141fabdd922362 (patch) | |
tree | 6b069e6fcfb7d76ca3d7e1b54ac9972d0eebb0e8 /core | |
parent | 51d42b032872cf2bcf4092321aeda65db05d68f3 (diff) | |
download | org.eclipse.cdt-0f74b22ace64b1ef7b2b22fef7141fabdd922362.tar.gz org.eclipse.cdt-0f74b22ace64b1ef7b2b22fef7141fabdd922362.tar.xz org.eclipse.cdt-0f74b22ace64b1ef7b2b22fef7141fabdd922362.zip |
Added content assist handling for fields.
Diffstat (limited to 'core')
3 files changed, 19 insertions, 6 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 bf47cda7ccc..329890f59e1 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 @@ -120,6 +120,12 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { return completionNode; } + // Use to create the completion node + protected ASTCompletionNode createCompletionNode(IToken token) { + if (completionNode == null) + completionNode = new ASTCompletionNode(token); + return completionNode; + } /** * Look Ahead in the token list to see what is coming. * @@ -524,8 +530,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { exprName.setParent(expr); exprName.setPropertyInParent(IASTIdExpression.ID_NAME); - if (completionNode == null) - completionNode = new ASTCompletionNode(token); + createCompletionNode(token); completionNode.addName(exprName); // Now the declaration statement diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index f062ac5b5fe..7411de9f823 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -344,6 +344,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { switch (LT(1)) { case IToken.tIDENTIFIER: + case IToken.tCOMPLETION: last = consume(); last = consumeTemplateArguments(last, argumentList); if (last.getType() == IToken.tGT) @@ -2596,7 +2597,15 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { return createQualifiedName(duple); if( duple.getTemplateIdArgLists() != null ) return createTemplateID( duple ); + + // We're a single token CPPASTName name = new CPPASTName(duple.toCharArray()); + IToken token = duple.getFirstToken(); + if (token.getType() == IToken.tCOMPLETION) { + createCompletionNode(token); + completionNode.addName(name); + } + name.setOffsetAndLength(duple.getStartOffset(), duple.getEndOffset() - duple.getStartOffset()); return name; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java index a6f49150d89..c889ccbe761 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java @@ -1551,7 +1551,6 @@ abstract class BaseScanner implements IScanner { if (!exception) finished = true; } else if (nextToken.getType() == IToken.tCOMPLETION) { - lastToken.setNext(nextToken); finished = true; } else if (nextToken.getType() == IToken.tPOUNDPOUND) { // time for a pasting @@ -1629,10 +1628,10 @@ abstract class BaseScanner implements IScanner { // Find the first thing we would care about skipOverWhiteSpace(); - while (++bufferPos[bufferStackPos] >= bufferLimit[bufferStackPos]) { + if (++bufferPos[bufferStackPos] >= bufferLimit[bufferStackPos]) { // We're at the end of a context, pop it off and try again popContext(); - continue contextLoop; + continue; } // Tokens don't span buffers, stick to our current one @@ -1992,7 +1991,7 @@ abstract class BaseScanner implements IScanner { } // We've run out of contexts, our work is done here - return null; + return contentAssistMode ? eocToken : null; } protected IToken scanIdentifier() { |