Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorDoug Schaefer2005-03-28 17:53:03 +0000
committerDoug Schaefer2005-03-28 17:53:03 +0000
commit0f74b22ace64b1ef7b2b22fef7141fabdd922362 (patch)
tree6b069e6fcfb7d76ca3d7e1b54ac9972d0eebb0e8 /core
parent51d42b032872cf2bcf4092321aeda65db05d68f3 (diff)
downloadorg.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')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java9
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java7
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() {

Back to the top