1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Symbol Table work for Content Assist By Andrew

This commit is contained in:
Hoda Amer 2003-12-16 15:18:16 +00:00
parent 3241b09765
commit c8b4fb4ce5
53 changed files with 414 additions and 137 deletions

View file

@ -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.

View file

@ -52,6 +52,7 @@ import org.eclipse.cdt.core.parser.ast.IASTMethod;
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 @@ public class CompleteParseBaseTest extends TestCase
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;
}

View file

@ -18,6 +18,12 @@ import org.eclipse.cdt.core.parser.ParserMode;
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;
/**
@ -107,4 +113,132 @@ public class ContextualParseTest extends CompleteParseBaseTest {
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" );
}
}

View file

@ -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

View file

@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.IToken;
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 @@ public interface IASTFactory
/**
* @param astClassSpecifier
*/
public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
public void signalEndOfClassSpecifier(IASTClassSpecifier astClassSpecifier);
/**
* @param kind
* @param firstExpression
*/
public IASTNode getCompletionContext(Kind kind, IASTExpression expression);
}

View file

@ -58,6 +58,6 @@ public interface IASTNode {
public Iterator getNodes();
}
public LookupResult lookup( String prefix, LookupKind kind ) throws LookupException;
public LookupResult lookup( String prefix, LookupKind kind, IASTNode context) throws LookupException;
}

View file

@ -2891,7 +2891,8 @@ public abstract class Parser implements IParser
*/
protected void statement(IASTScope scope) throws EndOfFileException, BacktrackException
{
setCurrentScope(scope);
switch (LT(1))
{
case IToken.t_case :
@ -3028,6 +3029,11 @@ public abstract class Parser implements IParser
// 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 @@ public abstract class Parser implements IParser
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 @@ public abstract class Parser implements IParser
} catch (Exception e)
{
throw backtrack;
} finally
{
setCompletionContext( null );
}
break;
case IToken.tARROW :
@ -4756,6 +4774,14 @@ public abstract class Parser implements IParser
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 @@ public abstract class Parser implements IParser
} catch (Exception e)
{
throw backtrack;
}finally
{
setCompletionContext( null );
}
break;
default :
@ -4785,6 +4814,9 @@ public abstract class Parser implements IParser
}
}
}
protected IASTExpression specialCastExpression( IASTScope scope,
IASTExpression.Kind kind)
throws EndOfFileException, BacktrackException

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
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 @@ public class ASTASMDefinition extends ASTAnonymousDeclaration implements IASTASM
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
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 @@ public class ASTAbstractTypeSpecifierDeclaration
/* (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;
}

View file

@ -268,11 +268,4 @@ public class ASTClassSpecifier extends ASTScope implements IASTClassSpecifier
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;
}
}

View file

@ -77,7 +77,7 @@ public class ASTCodeScope extends ASTScope implements IASTCodeScope {
{
return ownerCodeScope;
}
public Iterator getDeclarations()
{
return declarations.iterator();
@ -87,13 +87,5 @@ public class ASTCodeScope extends ASTScope implements IASTCodeScope {
{
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;
}
}

View file

@ -70,7 +70,7 @@ public class ASTCompilationUnit
/* do nothing */
}
}
public Iterator getDeclarations()
{
return declarations.iterator();
@ -79,12 +79,4 @@ public class ASTCompilationUnit
{
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;
}
}

View file

@ -168,11 +168,4 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
{
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;
}
}

View file

@ -155,12 +155,4 @@ public class ASTEnumerationSpecifier
{
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;
}
}

View file

@ -138,11 +138,4 @@ public class ASTEnumerator extends ASTSymbol implements IASTEnumerator
{
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;
}
}

View file

@ -330,11 +330,4 @@ public class ASTFunction extends ASTScope implements IASTFunction
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;
}
}

View file

@ -15,6 +15,7 @@ import java.util.Iterator;
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 @@ public class ASTLinkageSpecification extends ASTAnonymousDeclaration implements
/* (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;
}

View file

@ -147,11 +147,4 @@ public class ASTNamespaceAlias extends ASTSymbol implements IASTNamespaceAlias
{
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;
}
}

View file

@ -174,11 +174,4 @@ public class ASTNamespaceDefinition
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;
}
}

View file

@ -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();
}
}
}

View file

@ -193,12 +193,5 @@ public class ASTParameterDeclaration extends ASTSymbol implements IASTParameterD
{
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;
}
}

View file

@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
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 @@ public class ASTSimpleTypeSpecifier implements IASTSimpleTypeSpecifier
/* (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;
}

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.internal.core.parser.pst.ISymbolOwner;
* @author jcamelon
*
*/
public class ASTSymbolOwner implements ISymbolOwner
public class ASTSymbolOwner extends ASTNode implements ISymbolOwner
{
protected ISymbol symbol;
/**

View file

@ -14,6 +14,7 @@ import java.util.Iterator;
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 @@ public class ASTTemplateDeclaration implements IASTTemplateDeclaration
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
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 @@ public class ASTTemplateInstantiation implements IASTTemplateInstantiation
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.complete;
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 @@ public class ASTTemplateSpecialization implements IASTTemplateSpecialization
/* (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;
}

View file

@ -167,12 +167,4 @@ public class ASTTypedef extends ASTSymbol implements IASTTypedefDeclaration
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;
}
}

View file

@ -15,6 +15,7 @@ import java.util.List;
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 @@ public class ASTUsingDeclaration implements IASTUsingDeclaration
/* (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;
}

View file

@ -15,6 +15,7 @@ import java.util.List;
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 @@ public class ASTUsingDirective extends ASTAnonymousDeclaration implements IASTUs
/* (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;
}

View file

@ -16,6 +16,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
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 @@ public class ASTVariable extends ASTSymbol implements IASTVariable
{
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;
}
}

View file

@ -46,6 +46,7 @@ import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
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 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
{
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;
}
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTASMDefinition
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTAbstractTypeSpecifierDeclaration
/* (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;
}

View file

@ -17,6 +17,7 @@ import java.util.List;
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 @@ public class ASTCompilationUnit implements IASTCompilationUnit, IASTQScope {
/* (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;
}

View file

@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
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 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier
/* (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;
}

View file

@ -19,6 +19,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
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 @@ public class ASTFunction extends ASTDeclaration implements IASTFunction
/* (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;
}

View file

@ -17,6 +17,7 @@ import java.util.List;
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 @@ public class ASTLinkageSpecification
/* (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;
}

View file

@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
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 @@ public class ASTNamespaceAlias extends ASTDeclaration implements IASTNamespaceAl
/* (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;
}

View file

@ -17,6 +17,7 @@ import java.util.List;
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 @@ public class ASTNamespaceDefinition extends ASTDeclaration implements IASTNamesp
/* (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;
}

View file

@ -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 @@ public class ASTScopedTypeSpecifier extends ASTQualifiedNamedElement implements
/* (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;
}

View file

@ -15,6 +15,7 @@ import java.util.Map;
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 @@ public class ASTSimpleTypeSpecifier implements IASTSimpleTypeSpecifier
/* (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;
}

View file

@ -15,6 +15,7 @@ import java.util.List;
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 @@ public class ASTTemplateDeclaration extends ASTDeclaration implements IASTTempla
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTTemplateInstantiation extends ASTDeclaration implements IASTTemp
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTTemplateSpecialization extends ASTDeclaration implements IASTTem
/* (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;
}

View file

@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTTypedefDeclaration extends ASTDeclaration implements IASTTypedef
/* (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;
}

View file

@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTUsingDeclaration
/* (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;
}

View file

@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser.ast.quick;
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 @@ public class ASTUsingDirective
/* (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;
}

View file

@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementRequestor;
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 @@ public class ASTVariable extends ASTDeclaration implements IASTVariable
/* (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;
}

View file

@ -38,6 +38,7 @@ import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
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;
@ -316,4 +317,12 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
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;
}
}

View file

@ -16,6 +16,7 @@ package org.eclipse.cdt.internal.core.parser.pst;
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 @@ public class ParserSymbolTable {
* 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;

View file

@ -96,7 +96,8 @@ public class TypeFilter {
* @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 ); }

View file

@ -1,3 +1,6 @@
2003-12-15 Andrew Niefer
Updated CompletionEngine to match new signature for IASTNode.lookup
2003-12-15 Alain Magloire
Header icon provide by Mirza Hadzic PR 26486. Thanks.

View file

@ -301,7 +301,7 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
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 @@ public class CompletionEngine implements RelevanceConstants{
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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 @@ public class CompletionEngine implements RelevanceConstants{
// 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 )
{