[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Parser Support for Content Assist
|
Parser support for content assist.
Implemented IASTNode, which provides lookup for content assist by using
the Symbol table's IContainerSymbol.prefixLookup and
IContainerSymbol.isVisible methods.
Changed the signature of IASTNode.lookup to take the context provided by
the IASTComplationNode and updated the CompletionEngine accordingly.
Set the completion scope and context in the Parser for statements and .
and -> expressions.
added ContextualParseTest.testCompletionLookup_Unqualified
added ContextualParseTest.testCompletionLookup_Qualified
added ContextualParseTest.testCompletionLookup_Pointer
-Andrew
Index: parser/ChangeLog-parser
===================================================================
retrieving revision 1.6
diff -u -r1.6 ChangeLog-parser
--- parser/ChangeLog-parser 15 Dec 2003 19:49:56 -0000 1.6
+++ parser/ChangeLog-parser 15 Dec 2003 20:08:41 -0000
@@ -1,3 +1,9 @@
+2003-12-15 Andrew Niefer
+ Changed IASTNode.lookup to take the context as a parameter
+ created ASTNode to implement IASTNode, ASTSymbolOwner extends it.
+ Set Completion Scope for statements
+ Set Completion context for . and -> expressions
+
2003-12-15 Hoda Amer
Fixed [Bug 47234] new ParserMode required for a better CModel :
- Added a core plugin preference to build the CModel in Structural mode
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java
===================================================================
retrieving revision 1.41
diff -u -r1.41 IASTFactory.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java 5 Nov 2003 18:15:11 -0000 1.41
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java 15 Dec 2003 20:08:42 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ITokenDuple;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType;
import org.eclipse.cdt.core.parser.ast.IASTExpression.IASTNewExpressionDescriptor;
+import org.eclipse.cdt.core.parser.ast.IASTExpression.Kind;
/**
* @author jcamelon
*
@@ -232,5 +233,11 @@
/**
* @param astClassSpecifier
*/
- public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
+ public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
+
+ /**
+ * @param kind
+ * @param firstExpression
+ */
+ public IASTNode getCompletionContext(Kind kind, IASTExpression expression);
}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTNode.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 IASTNode.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTNode.java 12 Dec 2003 02:01:50 -0000 1.5
+++ parser/org/eclipse/cdt/core/parser/ast/IASTNode.java 15 Dec 2003 20:08:42 -0000
@@ -58,6 +58,6 @@
public Iterator getNodes();
}
- public LookupResult lookup( String prefix, LookupKind kind ) throws LookupException;
+ public LookupResult lookup( String prefix, LookupKind kind, IASTNode context) throws LookupException;
}
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
retrieving revision 1.129
diff -u -r1.129 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java 12 Dec 2003 19:44:52 -0000 1.129
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java 15 Dec 2003 20:08:46 -0000
@@ -2891,7 +2891,8 @@
*/
protected void statement(IASTScope scope) throws EndOfFileException, BacktrackException
{
-
+ setCurrentScope(scope);
+
switch (LT(1))
{
case IToken.t_case :
@@ -3028,6 +3029,11 @@
// declarationStatement
declaration(scope, null);
}
+
+ if( scope instanceof IASTScopedElement )
+ setCurrentScope( ((IASTScopedElement)scope).getOwnerScope() );
+ else
+ setCurrentScope( null );
}
protected void catchHandlerSequence(IASTScope scope)
throws EndOfFileException, BacktrackException
@@ -4719,11 +4725,20 @@
case IToken.tDOT :
// member access
consume(IToken.tDOT);
+
if (LT(1) == IToken.t_template)
{
consume(IToken.t_template);
isTemplate = true;
}
+
+ IASTNode context = astFactory.getCompletionContext( (isTemplate
+ ? IASTExpression.Kind.POSTFIX_DOT_TEMPL_IDEXPRESS
+ : IASTExpression.Kind.POSTFIX_DOT_IDEXPRESSION),
+ firstExpression );
+ setCompletionContext( context );
+ setCompletionKind( IASTCompletionNode.CompletionKind.MEMBER_REFERENCE );
+
secondExpression = primaryExpression(scope);
try
{
@@ -4746,6 +4761,9 @@
} catch (Exception e)
{
throw backtrack;
+ } finally
+ {
+ setCompletionContext( null );
}
break;
case IToken.tARROW :
@@ -4756,6 +4774,14 @@
consume(IToken.t_template);
isTemplate = true;
}
+
+ context = astFactory.getCompletionContext( (isTemplate
+ ? IASTExpression.Kind.POSTFIX_ARROW_TEMPL_IDEXP
+ : IASTExpression.Kind.POSTFIX_ARROW_IDEXPRESSION),
+ firstExpression );
+ setCompletionContext( context );
+ setCompletionKind( IASTCompletionNode.CompletionKind.MEMBER_REFERENCE );
+
secondExpression = primaryExpression(scope);
try
{
@@ -4778,6 +4804,9 @@
} catch (Exception e)
{
throw backtrack;
+ }finally
+ {
+ setCompletionContext( null );
}
break;
default :
@@ -4785,6 +4814,9 @@
}
}
}
+
+
+
protected IASTExpression specialCastExpression( IASTScope scope,
IASTExpression.Kind kind)
throws EndOfFileException, BacktrackException
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTASMDefinition.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTASMDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTASMDefinition.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTASMDefinition.java 15 Dec 2003 20:08:46 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
@@ -98,7 +99,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTAbstractTypeSpecifierDeclaration.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ASTAbstractTypeSpecifierDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTAbstractTypeSpecifierDeclaration.java 3 Nov 2003 14:17:15 -0000 1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTAbstractTypeSpecifierDeclaration.java 15 Dec 2003 20:08:46 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -121,7 +122,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java 15 Dec 2003 19:49:56 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassSpecifier.java 15 Dec 2003 20:08:46 -0000
@@ -268,11 +268,4 @@
declarations.add(declaration);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCodeScope.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 ASTCodeScope.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCodeScope.java 15 Dec 2003 19:49:56 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCodeScope.java 15 Dec 2003 20:08:46 -0000
@@ -77,7 +77,7 @@
{
return ownerCodeScope;
}
-
+
public Iterator getDeclarations()
{
return declarations.iterator();
@@ -87,13 +87,5 @@
{
declarations.add(declaration);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCompilationUnit.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTCompilationUnit.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCompilationUnit.java 15 Dec 2003 19:49:56 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTCompilationUnit.java 15 Dec 2003 20:08:46 -0000
@@ -70,7 +70,7 @@
/* do nothing */
}
}
-
+
public Iterator getDeclarations()
{
return declarations.iterator();
@@ -79,12 +79,4 @@
{
declarations.add(declaration);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java 3 Nov 2003 14:17:15 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java 15 Dec 2003 20:08:46 -0000
@@ -168,11 +168,4 @@
{
offsets.setNameEndOffset(o);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTEnumerationSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerationSpecifier.java 15 Dec 2003 20:08:46 -0000
@@ -155,12 +155,4 @@
{
offsets.setNameEndOffset(o);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerator.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTEnumerator.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerator.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTEnumerator.java 15 Dec 2003 20:08:47 -0000
@@ -138,11 +138,4 @@
{
offsets.setNameEndOffset(o);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java
===================================================================
retrieving revision 1.11
diff -u -r1.11 ASTFunction.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java 15 Dec 2003 19:49:56 -0000 1.11
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java 15 Dec 2003 20:08:47 -0000
@@ -330,11 +330,4 @@
declarations.add(declaration);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTLinkageSpecification.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTLinkageSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTLinkageSpecification.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTLinkageSpecification.java 15 Dec 2003 20:08:47 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
@@ -115,7 +116,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceAlias.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ASTNamespaceAlias.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceAlias.java 3 Nov 2003 14:17:15 -0000 1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceAlias.java 15 Dec 2003 20:08:47 -0000
@@ -147,11 +147,4 @@
{
offsets.setNameEndOffset(o);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTNamespaceDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java 15 Dec 2003 19:49:56 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNamespaceDefinition.java 15 Dec 2003 20:08:47 -0000
@@ -174,11 +174,4 @@
declarations.add(declaration);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTParameterDeclaration.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTParameterDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTParameterDeclaration.java 3 Nov 2003 14:17:15 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTParameterDeclaration.java 15 Dec 2003 20:08:47 -0000
@@ -193,12 +193,5 @@
{
offsets.setNameEndOffset(o);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
-
+
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSimpleTypeSpecifier.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ASTSimpleTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSimpleTypeSpecifier.java 3 Nov 2003 14:17:15 -0000 1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSimpleTypeSpecifier.java 15 Dec 2003 20:08:47 -0000
@@ -13,6 +13,7 @@
import java.util.List;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
@@ -151,7 +152,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSymbolOwner.java
===================================================================
retrieving revision 1.2
diff -u -r1.2 ASTSymbolOwner.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSymbolOwner.java 11 Sep 2003 18:05:55 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTSymbolOwner.java 15 Dec 2003 20:08:47 -0000
@@ -17,7 +17,7 @@
* @author jcamelon
*
*/
-public class ASTSymbolOwner implements ISymbolOwner
+public class ASTSymbolOwner extends ASTNode implements ISymbolOwner
{
protected ISymbol symbol;
/**
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateDeclaration.java
===================================================================
retrieving revision 1.2
diff -u -r1.2 ASTTemplateDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateDeclaration.java 3 Nov 2003 14:17:15 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateDeclaration.java 15 Dec 2003 20:08:47 -0000
@@ -14,6 +14,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
@@ -124,7 +125,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateInstantiation.java
===================================================================
retrieving revision 1.2
diff -u -r1.2 ASTTemplateInstantiation.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateInstantiation.java 3 Nov 2003 14:17:15 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateInstantiation.java 15 Dec 2003 20:08:48 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
@@ -106,7 +107,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateSpecialization.java
===================================================================
retrieving revision 1.2
diff -u -r1.2 ASTTemplateSpecialization.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateSpecialization.java 3 Nov 2003 14:17:15 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTemplateSpecialization.java 15 Dec 2003 20:08:48 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
@@ -106,7 +107,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 ASTTypedef.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java 3 Nov 2003 14:17:15 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java 15 Dec 2003 20:08:48 -0000
@@ -167,12 +167,4 @@
offsets.setNameEndOffset(o);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
-
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDeclaration.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ASTUsingDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDeclaration.java 3 Nov 2003 14:17:15 -0000 1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDeclaration.java 15 Dec 2003 20:08:48 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
@@ -130,7 +131,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDirective.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTUsingDirective.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDirective.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTUsingDirective.java 15 Dec 2003 20:08:48 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
@@ -125,7 +126,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTVariable.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java 3 Nov 2003 14:17:15 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java 15 Dec 2003 20:08:48 -0000
@@ -16,6 +16,7 @@
import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
@@ -242,11 +243,5 @@
{
return constructorExpression;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
- */
- public LookupResult lookup(String prefix, LookupKind kind) {
- // TODO Auto-generated method stub
- return null;
- }
+
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
===================================================================
retrieving revision 1.59
diff -u -r1.59 CompleteParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 3 Dec 2003 21:48:19 -0000 1.59
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 15 Dec 2003 20:08:50 -0000
@@ -46,6 +46,7 @@
import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTReference;
import org.eclipse.cdt.core.parser.ast.IASTScope;
@@ -2736,4 +2737,24 @@
{
return new ASTInitializerClause( kind, assignmentExpression, initializerClauses, designators );
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTFactory#getCompletionContext(org.eclipse.cdt.core.parser.ast.IASTExpression.Kind, org.eclipse.cdt.core.parser.ast.IASTExpression)
+ */
+ public IASTNode getCompletionContext(Kind kind, IASTExpression expression) {
+ IContainerSymbol context = null;
+ try {
+ context = getSearchScope( kind, expression, null );
+ } catch (ASTSemanticException e) {
+ return null;
+ }
+
+ if( context != null ){
+ ISymbolASTExtension extension = context.getASTExtension();
+ return ( extension != null ) ? extension.getPrimaryDeclaration() : null;
+ }
+
+ return null;
+
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java
===================================================================
retrieving revision 1.6
diff -u -r1.6 ASTASMDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java 3 Nov 2003 14:17:15 -0000 1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTASMDefinition.java 15 Dec 2003 20:08:50 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -100,7 +101,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 ASTAbstractTypeSpecifierDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java 3 Nov 2003 14:17:15 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTAbstractTypeSpecifierDeclaration.java 15 Dec 2003 20:08:50 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
@@ -118,7 +119,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java
===================================================================
retrieving revision 1.6
diff -u -r1.6 ASTCompilationUnit.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java 12 Dec 2003 02:01:50 -0000 1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTCompilationUnit.java 15 Dec 2003 20:08:50 -0000
@@ -17,6 +17,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
/**
* @author jcamelon
@@ -77,7 +78,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java
===================================================================
retrieving revision 1.9
diff -u -r1.9 ASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java 3 Nov 2003 14:17:15 -0000 1.9
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java 15 Dec 2003 20:08:50 -0000
@@ -14,6 +14,7 @@
import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
@@ -158,7 +159,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java
===================================================================
retrieving revision 1.14
diff -u -r1.14 ASTFunction.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java 3 Nov 2003 14:17:15 -0000 1.14
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java 15 Dec 2003 20:08:51 -0000
@@ -19,6 +19,7 @@
import org.eclipse.cdt.core.parser.ast.IASTCodeScope;
import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplate;
@@ -283,7 +284,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTLinkageSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java 3 Nov 2003 14:17:15 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTLinkageSpecification.java 15 Dec 2003 20:08:51 -0000
@@ -17,6 +17,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -129,7 +130,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceAlias.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ASTNamespaceAlias.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceAlias.java 3 Nov 2003 14:17:15 -0000 1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceAlias.java 15 Dec 2003 20:08:51 -0000
@@ -14,6 +14,7 @@
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
@@ -148,7 +149,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java
===================================================================
retrieving revision 1.9
diff -u -r1.9 ASTNamespaceDefinition.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java 3 Nov 2003 14:17:15 -0000 1.9
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTNamespaceDefinition.java 15 Dec 2003 20:08:51 -0000
@@ -17,6 +17,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
@@ -162,7 +163,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java
===================================================================
retrieving revision 1.4
diff -u -r1.4 ASTScopedTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java 3 Nov 2003 14:17:15 -0000 1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java 15 Dec 2003 20:08:51 -0000
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.internal.core.parser.ast.quick;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTScopedTypeSpecifier;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
@@ -37,7 +38,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTSimpleTypeSpecifier.java
===================================================================
retrieving revision 1.6
diff -u -r1.6 ASTSimpleTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTSimpleTypeSpecifier.java 3 Nov 2003 14:17:15 -0000 1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTSimpleTypeSpecifier.java 15 Dec 2003 20:08:51 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ITokenDuple;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
@@ -196,7 +197,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java
===================================================================
retrieving revision 1.6
diff -u -r1.6 ASTTemplateDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java 3 Nov 2003 14:17:15 -0000 1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateDeclaration.java 15 Dec 2003 20:08:51 -0000
@@ -15,6 +15,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -140,7 +141,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 ASTTemplateInstantiation.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java 3 Nov 2003 14:17:15 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateInstantiation.java 15 Dec 2003 20:08:51 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -123,7 +124,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 ASTTemplateSpecialization.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java 3 Nov 2003 14:17:15 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTemplateSpecialization.java 15 Dec 2003 20:08:51 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -117,7 +118,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java
===================================================================
retrieving revision 1.6
diff -u -r1.6 ASTTypedefDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java 3 Nov 2003 14:17:15 -0000 1.6
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java 15 Dec 2003 20:08:51 -0000
@@ -12,6 +12,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
@@ -150,7 +151,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java
===================================================================
retrieving revision 1.8
diff -u -r1.8 ASTUsingDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java 3 Nov 2003 14:17:15 -0000 1.8
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDeclaration.java 15 Dec 2003 20:08:51 -0000
@@ -13,6 +13,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -115,7 +116,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java
===================================================================
retrieving revision 1.7
diff -u -r1.7 ASTUsingDirective.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java 3 Nov 2003 14:17:15 -0000 1.7
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTUsingDirective.java 15 Dec 2003 20:08:52 -0000
@@ -13,6 +13,7 @@
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
import org.eclipse.cdt.internal.core.parser.ast.Offsets;
@@ -107,7 +108,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java
===================================================================
retrieving revision 1.11
diff -u -r1.11 ASTVariable.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java 3 Nov 2003 14:17:15 -0000 1.11
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java 15 Dec 2003 20:08:52 -0000
@@ -14,6 +14,7 @@
import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTExpression;
import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
@@ -231,7 +232,7 @@
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java
===================================================================
retrieving revision 1.41
diff -u -r1.41 QuickParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java 24 Oct 2003 17:49:16 -0000 1.41
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java 15 Dec 2003 20:08:52 -0000
@@ -38,6 +38,7 @@
import org.eclipse.cdt.core.parser.ast.IASTMethod;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceAlias;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTScope;
import org.eclipse.cdt.core.parser.ast.IASTSimpleTypeSpecifier;
@@ -315,5 +316,13 @@
{
return new ASTInitializerClause( kind, assignmentExpression, initializerClauses, designators );
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTFactory#getCompletionContext(org.eclipse.cdt.core.parser.ast.IASTExpression.Kind, org.eclipse.cdt.core.parser.ast.IASTExpression)
+ */
+ public IASTNode getCompletionContext(Kind kind, IASTExpression expression) {
+ //we have no cross-reference information about the type of the expression
+ return null;
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java
===================================================================
retrieving revision 1.29
diff -u -r1.29 ParserSymbolTable.java
--- parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java 10 Dec 2003 00:07:26 -0000 1.29
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java 15 Dec 2003 20:08:53 -0000
@@ -16,6 +16,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
@@ -290,7 +291,7 @@
* Look for data.name in our collection _containedDeclarations
*/
protected static Map lookupInContained( LookupData data, IContainerSymbol lookIn ) throws ParserSymbolTableException{
- Map found = new HashMap();
+ Map found = new LinkedHashMap();
boolean foundSomething = false;
ISymbol temp = null;
Index: parser/org/eclipse/cdt/internal/core/parser/pst/TypeFilter.java
===================================================================
retrieving revision 1.2
diff -u -r1.2 TypeFilter.java
--- parser/org/eclipse/cdt/internal/core/parser/pst/TypeFilter.java 12 Dec 2003 02:01:50 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/pst/TypeFilter.java 15 Dec 2003 20:08:53 -0000
@@ -96,7 +96,8 @@
* @param lookupKind
*/
private void populatedFilteredTypes(LookupKind kind) {
- if ( kind == LookupKind.STRUCTURES ) { acceptedTypes.add( TypeInfo.t_class );
+ if ( kind == LookupKind.ALL ) { acceptedTypes.add( TypeInfo.t_any ); }
+ else if ( kind == LookupKind.STRUCTURES ) { acceptedTypes.add( TypeInfo.t_class );
acceptedTypes.add( TypeInfo.t_struct );
acceptedTypes.add( TypeInfo.t_union ); }
else if ( kind == LookupKind.STRUCS ) { acceptedTypes.add( TypeInfo.t_struct ); }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNode.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNode.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNode.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTNode.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ *
+ * Contributors:
+ * IBM Corp. - Rational Software - initial implementation
+ ******************************************************************************/
+package org.eclipse.cdt.internal.core.parser.ast.complete;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.eclipse.cdt.core.parser.ast.IASTNode;
+import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbolASTExtension;
+import org.eclipse.cdt.internal.core.parser.pst.ISymbolOwner;
+import org.eclipse.cdt.internal.core.parser.pst.ParserSymbolTableException;
+import org.eclipse.cdt.internal.core.parser.pst.TypeFilter;
+
+/**
+ * @author aniefer
+ */
+public class ASTNode implements IASTNode {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind, org.eclipse.cdt.core.parser.ast.IASTNode)
+ */
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) throws LookupException {
+ if( ! ( this instanceof ISymbolOwner ) || ( context != null && !(context instanceof ISymbolOwner) ) ){
+ return null;
+ }
+
+ IContainerSymbol thisContainer = (IContainerSymbol) ((ISymbolOwner)this).getSymbol();
+ IContainerSymbol qualification = null;
+
+ if( context != null ){
+ ISymbol sym = (IContainerSymbol) ((ISymbolOwner)context).getSymbol();
+ if( sym == null || !(sym instanceof IContainerSymbol) ){
+ throw new LookupException();
+ }
+ qualification = (IContainerSymbol) sym;
+ }
+
+ ISymbolOwner owner = (ISymbolOwner) this;
+ ISymbol symbol = owner.getSymbol();
+ if( symbol == null || !(symbol instanceof IContainerSymbol) ){
+ throw new LookupException();
+ }
+
+ TypeFilter filter = new TypeFilter( kind );
+ List lookupResults = null;
+ try {
+ if( qualification != null ){
+ lookupResults = qualification.prefixLookup( filter, prefix, true );
+ } else {
+ lookupResults = thisContainer.prefixLookup( filter, prefix, false );
+ }
+ } catch (ParserSymbolTableException e) {
+ throw new LookupException();
+ }
+
+ ListIterator iter = lookupResults.listIterator();
+ while( iter.hasNext() ){
+ ISymbol s = (ISymbol) iter.next();
+ if( !thisContainer.isVisible( s, qualification ) ){
+ iter.remove();
+ }
+ }
+
+ SymbolIterator iterator = new SymbolIterator( lookupResults.iterator() );
+
+ return new Result( prefix, iterator );
+ }
+
+ private class Result implements LookupResult{
+ private String prefix;
+ private Iterator iterator;
+
+ public Result( String pref, Iterator iter ){
+ prefix = pref;
+ iterator = iter;
+ }
+
+ public String getPrefix() { return prefix; }
+ public Iterator getNodes() { return iterator; }
+ }
+
+ private class SymbolIterator implements Iterator{
+ Iterator interalIterator;
+
+ public SymbolIterator( Iterator iter ){
+ interalIterator = iter;
+ }
+
+ public boolean hasNext() {
+ return interalIterator.hasNext();
+ }
+
+ public Object next() {
+ ISymbol nextSymbol = (ISymbol) interalIterator.next();
+
+ ISymbolASTExtension extension = (nextSymbol != null ) ? nextSymbol.getASTExtension() : null;
+
+ return (extension != null ) ? extension.getPrimaryDeclaration() : null;
+ }
+
+ public void remove() {
+ interalIterator.remove();
+ }
+ }
+}
Index: ChangeLog
===================================================================
retrieving revision 1.154
diff -u -r1.154 ChangeLog
--- ChangeLog 12 Dec 2003 19:44:42 -0000 1.154
+++ ChangeLog 15 Dec 2003 20:09:10 -0000
@@ -1,3 +1,8 @@
+2003-12-15 Andrew Niefer
+ added ContextualParseTest.testCompletionLookup_Unqualified
+ added ContextualParseTest.testCompletionLookup_Qualified
+ added ContextualParseTest.testCompletionLookup_Pointer
+
2003-12-12 John Camelon
Updated testBaseCase_SimpleDeclaration() for keyword assertions.
Index: parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java
===================================================================
retrieving revision 1.14
diff -u -r1.14 CompleteParseBaseTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java 12 Dec 2003 02:01:36 -0000 1.14
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseBaseTest.java 15 Dec 2003 20:09:12 -0000
@@ -52,6 +52,7 @@
import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
import org.eclipse.cdt.core.parser.ast.IASTReference;
@@ -116,10 +117,11 @@
return scope;
}
+
/* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind)
+ * @see org.eclipse.cdt.core.parser.ast.IASTNode#lookup(java.lang.String, org.eclipse.cdt.core.parser.ast.IASTNode.LookupKind, org.eclipse.cdt.core.parser.ast.IASTNode)
*/
- public LookupResult lookup(String prefix, LookupKind kind) {
+ public LookupResult lookup(String prefix, LookupKind kind, IASTNode context) throws LookupException {
// TODO Auto-generated method stub
return null;
}
Index: parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java
===================================================================
retrieving revision 1.3
diff -u -r1.3 ContextualParseTest.java
--- parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java 12 Dec 2003 19:44:42 -0000 1.3
+++ parser/org/eclipse/cdt/core/parser/tests/ContextualParseTest.java 15 Dec 2003 20:09:12 -0000
@@ -18,6 +18,12 @@
import org.eclipse.cdt.core.parser.ScannerInfo;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
+import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTNode;
+import org.eclipse.cdt.core.parser.ast.IASTVariable;
+import org.eclipse.cdt.core.parser.ast.IASTNode.LookupResult;
import org.eclipse.cdt.internal.core.parser.ParserLogService;
/**
@@ -106,5 +112,133 @@
assertEquals( node.getCompletionKind(), IASTCompletionNode.CompletionKind.USER_SPECIFIED_NAME );
keywords = node.getKeywords();
assertFalse( keywords.hasNext() );
+ }
+
+ public void testCompletionLookup_Unqualified() throws Exception
+ {
+ StringWriter writer = new StringWriter();
+ writer.write( "int aVar; " );
+ writer.write( "void foo( ) { " );
+ writer.write( " int anotherVar; " );
+ writer.write( " a " );
+ writer.write( "} " );
+
+ String code = writer.toString();
+ int index = code.indexOf( " a " );
+
+ IASTCompletionNode node = parse( code, index + 2 );
+ assertNotNull( node );
+
+ String prefix = node.getCompletionPrefix();
+ assertNotNull( prefix );
+ assertTrue( node.getCompletionScope() instanceof IASTFunction );
+ assertEquals( prefix, "a" );
+ assertEquals( node.getCompletionKind(), IASTCompletionNode.CompletionKind.VARIABLE_TYPE );
+
+
+ LookupResult result = node.getCompletionScope().lookup( prefix, IASTNode.LookupKind.ALL, node.getCompletionContext() );
+ assertEquals( result.getPrefix(), prefix );
+
+ Iterator iter = result.getNodes();
+
+ IASTVariable anotherVar = (IASTVariable) iter.next();
+ IASTVariable aVar = (IASTVariable) iter.next();
+
+ assertFalse( iter.hasNext() );
+ assertEquals( anotherVar.getName(), "anotherVar" );
+ assertEquals( aVar.getName(), "aVar" );
+ }
+
+ public void testCompletionLookup_Qualified() throws Exception
+ {
+ StringWriter writer = new StringWriter();
+ writer.write( "int aVar; " );
+ writer.write( "struct D{ " );
+ writer.write( " int aField; " );
+ writer.write( " void aMethod(); " );
+ writer.write( "}; " );
+ writer.write( "void foo(){" );
+ writer.write( " D d; " );
+ writer.write( " d.a " );
+ writer.write( "}\n" );
+
+ String code = writer.toString();
+ int index = code.indexOf( "d.a" );
+
+ IASTCompletionNode node = parse( code, index + 3 );
+ assertNotNull( node );
+
+ String prefix = node.getCompletionPrefix();
+ assertNotNull( prefix );
+ assertEquals( prefix, "a" );
+
+ assertTrue( node.getCompletionScope() instanceof IASTFunction );
+ assertEquals( node.getCompletionKind(), IASTCompletionNode.CompletionKind.MEMBER_REFERENCE );
+ assertNotNull( node.getCompletionContext() );
+ assertTrue( node.getCompletionContext() instanceof IASTClassSpecifier );
+
+ LookupResult result = node.getCompletionScope().lookup( prefix, IASTNode.LookupKind.ALL, node.getCompletionContext() );
+ assertEquals( result.getPrefix(), prefix );
+
+ Iterator iter = result.getNodes();
+
+ IASTMethod aMethod = null;
+ IASTField aField = null;
+
+ //we can't currently predict the order in this case
+ for( int i = 1; i <= 2; i++ ){
+ IASTNode astNode = (IASTNode) iter.next();
+ if( astNode instanceof IASTMethod ){
+ aMethod = (IASTMethod) astNode;
+ } else{
+ aField = (IASTField) astNode;
+ }
+ }
+
+ assertFalse( iter.hasNext() );
+
+ assertEquals( aMethod.getName(), "aMethod" );
+ assertEquals( aField.getName(), "aField" );
+ }
+
+ public void testCompletionLookup_Pointer() throws Exception{
+ StringWriter writer = new StringWriter();
+ writer.write( "class A {" );
+ writer.write( " public: void aPublicBaseMethod();" );
+ writer.write( " private: void aPrivateBaseMethod();" );
+ writer.write( "};" );
+ writer.write( "class B : public A {" );
+ writer.write( " public: void aMethod();" );
+ writer.write( "};" );
+ writer.write( "void foo(){" );
+ writer.write( " B * b = new B();" );
+ writer.write( " b->a \n" );
+
+ String code = writer.toString();
+ int index = code.indexOf( "b->a" );
+
+ IASTCompletionNode node = parse( code, index + 4 );
+
+ assertNotNull( node );
+
+ String prefix = node.getCompletionPrefix();
+ assertEquals( prefix, "a" );
+
+ assertTrue( node.getCompletionScope() instanceof IASTFunction );
+ assertEquals( node.getCompletionKind(), IASTCompletionNode.CompletionKind.MEMBER_REFERENCE );
+ assertNotNull( node.getCompletionContext() );
+ assertTrue( node.getCompletionContext() instanceof IASTClassSpecifier );
+
+ LookupResult result = node.getCompletionScope().lookup( prefix, IASTNode.LookupKind.METHODS, node.getCompletionContext() );
+ assertEquals( result.getPrefix(), prefix );
+
+ Iterator iter = result.getNodes();
+ IASTMethod method = (IASTMethod) iter.next();
+ IASTMethod baseMethod = (IASTMethod) iter.next();
+
+ assertFalse( iter.hasNext() );
+
+ assertEquals( method.getName(), "aMethod" );
+ assertEquals( baseMethod.getName(), "aPublicBaseMethod" );
}
}
Index: ChangeLog
===================================================================
retrieving revision 1.228
diff -u -r1.228 ChangeLog
--- ChangeLog 15 Dec 2003 19:50:46 -0000 1.228
+++ ChangeLog 15 Dec 2003 20:09:25 -0000
@@ -1,3 +1,6 @@
+2003-12-15 Andrew Niefer
+ Updated CompletionEngine to match new signature for IASTNode.lookup
+
2003-12-15 Hoda Amer
Fixed [Bug 47234] new ParserMode required for a better CModel :
- Added a user preference to build the CModel using Structural mode
Index: src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java
===================================================================
retrieving revision 1.5
diff -u -r1.5 CompletionEngine.java
--- src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java 15 Dec 2003 19:50:46 -0000 1.5
+++ src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java 15 Dec 2003 20:09:30 -0000
@@ -301,7 +301,7 @@
// 2. lookup fields & add to completion proposals
try
{
- result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.FIELDS);
+ result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.FIELDS, completionNode.getCompletionContext());
addToCompletions (result);
}
catch( IASTNode.LookupException ilk )
@@ -312,7 +312,7 @@
try
{
// 3. looup methods & add to completion proposals
- result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS);
+ result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS, completionNode.getCompletionContext());
addToCompletions (result);
}
catch( IASTNode.LookupException ilk )
@@ -323,7 +323,7 @@
try {
// 4. lookup nested structures & add to completion proposals
- result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.STRUCTURES);
+ result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.STRUCTURES, completionNode.getCompletionContext());
addToCompletions (result);
} catch (LookupException e) {
}
@@ -338,7 +338,7 @@
// 2. Lookup all types that could be used here
LookupResult result;
try {
- result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.STRUCTURES);
+ result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.STRUCTURES, completionNode.getCompletionContext());
addToCompletions(result);
} catch (LookupException e) {
}
@@ -363,7 +363,7 @@
// We have to lookup functions that could be overridden here.
LookupResult result;
try {
- result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS);
+ result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS, completionNode.getCompletionContext());
addToCompletions(result);
} catch (LookupException e) {
// TODO Auto-generated catch block
@@ -385,7 +385,7 @@
// 1. lookup local variables, global variables, functions, methods, structures, enums, macros, and namespaces
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.ALL);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.ALL, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -397,7 +397,7 @@
// 1. look only for local variables
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.LOCAL_VARIABLES);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.LOCAL_VARIABLES, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -417,7 +417,7 @@
// 1. lookup local variables, global variables, functions, methods, structures, enums, macros, and namespaces
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.ALL);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.ALL, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -432,7 +432,7 @@
// only look for classes
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.CLASSES);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.CLASSES, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -445,7 +445,7 @@
// only look for classes
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.NAMESPACES);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.NAMESPACES, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -466,7 +466,7 @@
// only look for macros
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.MACROS);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.MACROS, completionNode.getCompletionContext());
addToCompletions(result);
}
catch( LookupException ilk )
@@ -482,7 +482,7 @@
// only lookup constructors
try
{
- LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.CONSTRUCTORS);
+ LookupResult result = searchNode.lookup(completionNode.getCompletionPrefix(), IASTNode.LookupKind.CONSTRUCTORS, completionNode.getCompletionContext());
}
catch( LookupException ilk )
{