1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-09 11:33:20 +02:00
Added X-Ref/Elaborated type support w/element requestor callbacks.  

TESTS
	Added CompleteParseASTTest::testForewardDeclarationWithUsage().
This commit is contained in:
John Camelon 2003-08-12 20:40:11 +00:00
parent 8dba12bff3
commit 891454830b
16 changed files with 161 additions and 18 deletions

View file

@ -1,4 +1,7 @@
2003-08-12 2003-08-12 John Camelon
Added CompleteParseASTTest::testForewardDeclarationWithUsage().
2003-08-12 Hoda Amer
Added CompletionProposalsTest to the suit to test the generation Added CompletionProposalsTest to the suit to test the generation
of completion proposals. of completion proposals.

View file

@ -104,6 +104,7 @@ public class CompleteParseASTTest extends TestCase
public class FullParseCallback implements ISourceElementRequestor public class FullParseCallback implements ISourceElementRequestor
{ {
private List references = new ArrayList(); private List references = new ArrayList();
private List forewardDecls = new ArrayList();
private Stack inclusions = new Stack(); private Stack inclusions = new Stack();
private Scope compilationUnit; private Scope compilationUnit;
@ -499,6 +500,22 @@ public class CompleteParseASTTest extends TestCase
{ {
return references; return references;
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedForewardDeclaration(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
*/
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType)
{
forewardDecls.add( elaboratedType );
}
/**
* @return
*/
public List getForewardDecls()
{
return forewardDecls;
}
} }
protected Iterator getDeclarations( IASTScope scope ) protected Iterator getDeclarations( IASTScope scope )
@ -852,6 +869,25 @@ public class CompleteParseASTTest extends TestCase
assertEquals( variableA.getAbstractDeclaration().getTypeSpecifier(), elab ); assertEquals( variableA.getAbstractDeclaration().getTypeSpecifier(), elab );
} }
public void testForewardDeclarationWithUsage() throws Exception
{
Iterator declarations = parse( "class A; A * anA;class A { };").getDeclarations();
IASTAbstractTypeSpecifierDeclaration forewardDecl = (IASTAbstractTypeSpecifierDeclaration)declarations.next();
IASTVariable variable = (IASTVariable)declarations.next();
IASTAbstractTypeSpecifierDeclaration classDecl = (IASTAbstractTypeSpecifierDeclaration)declarations.next();
IASTElaboratedTypeSpecifier elab = (IASTElaboratedTypeSpecifier)forewardDecl.getTypeSpecifier();
IASTClassSpecifier clasSpec = (IASTClassSpecifier)classDecl.getTypeSpecifier();
assertEquals( elab.getName(), clasSpec.getName() );
String [] fqnClass = clasSpec.getFullyQualifiedName();
String [] fqnElab = elab.getFullyQualifiedName();
assertEquals( fqnClass.length, fqnElab.length );
for( int i = 0; i < fqnClass.length; ++i )
assertEquals( fqnClass[i], fqnElab[i]);
assertEquals( callback.getReferences().size(), 1 );
assertEquals( callback.getForewardDecls().size(), 1 );
}
public void testASM() throws Exception public void testASM() throws Exception
{ {
IASTASMDefinition asm = (IASTASMDefinition)parse( "asm ( \"blah blah blah\" );" ).getDeclarations().next(); IASTASMDefinition asm = (IASTASMDefinition)parse( "asm ( \"blah blah blah\" );" ).getDeclarations().next();

View file

@ -951,4 +951,12 @@ public class DOMBuilder implements ISourceElementRequestor
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedForewardDeclaration(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
*/
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType)
{
// TODO Auto-generated method stub
}
} }

View file

@ -22,6 +22,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference; import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTField; import org.eclipse.cdt.core.parser.ast.IASTField;
@ -403,4 +404,11 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo
if (reference.getReferencedElement() instanceof IASTMethod) if (reference.getReferencedElement() instanceof IASTMethod)
indexer.addMethodReference((IASTMethod) reference.getReferencedElement()); indexer.addMethodReference((IASTMethod) reference.getReferencedElement());
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedForewardDeclaration(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
*/
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType)
{
// TODO BOGDAN IMPLEMENT THIS
}
} }

View file

@ -1,3 +1,6 @@
2003-08-12 John Camelon
Added X-Ref/Elaborated type support w/element requestor callbacks.
2003-08-11 John Camelon 2003-08-11 John Camelon
Added Complete Parse support for ASM Definitions. Added Complete Parse support for ASM Definitions.
Added isVolatile() to abstract declarations. Added isVolatile() to abstract declarations.

View file

@ -15,6 +15,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference; import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTField; import org.eclipse.cdt.core.parser.ast.IASTField;
@ -54,6 +55,7 @@ public interface ISourceElementRequestor {
public void acceptASMDefinition( IASTASMDefinition asmDefinition ); public void acceptASMDefinition( IASTASMDefinition asmDefinition );
public void acceptTypedefDeclaration( IASTTypedefDeclaration typedef ); public void acceptTypedefDeclaration( IASTTypedefDeclaration typedef );
public void acceptEnumerationSpecifier( IASTEnumerationSpecifier enumeration ); public void acceptEnumerationSpecifier( IASTEnumerationSpecifier enumeration );
public void acceptElaboratedForewardDeclaration( IASTElaboratedTypeSpecifier elaboratedType );
public void acceptAbstractTypeSpecDeclaration( IASTAbstractTypeSpecifierDeclaration abstractDeclaration ); public void acceptAbstractTypeSpecDeclaration( IASTAbstractTypeSpecifierDeclaration abstractDeclaration );
public void enterFunctionBody( IASTFunction function ); public void enterFunctionBody( IASTFunction function );

View file

@ -16,5 +16,5 @@ package org.eclipse.cdt.core.parser.ast;
*/ */
public interface IASTClassReference extends IASTReference public interface IASTClassReference extends IASTReference
{ {
public boolean isResolved();
} }

View file

@ -10,13 +10,15 @@
***********************************************************************/ ***********************************************************************/
package org.eclipse.cdt.core.parser.ast; package org.eclipse.cdt.core.parser.ast;
import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
/** /**
* @author jcamelon * @author jcamelon
* *
*/ */
public interface IASTElaboratedTypeSpecifier extends IASTTypeSpecifier, IASTOffsetableElement { public interface IASTElaboratedTypeSpecifier extends IASTTypeSpecifier, IASTOffsetableElement, IASTQualifiedNameElement, ISourceElementCallbackDelegate {
public String getName(); public String getName();
public ASTClassKind getClassKind(); public ASTClassKind getClassKind();

View file

@ -7,6 +7,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference; import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTField; import org.eclipse.cdt.core.parser.ast.IASTField;
@ -396,4 +397,13 @@ public class NullSourceElementRequestor implements ISourceElementRequestor
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedForewardDeclaration(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
*/
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType)
{
// TODO Auto-generated method stub
}
} }

View file

@ -1493,6 +1493,7 @@ public class Parser implements IParser
ITokenDuple d = name(); ITokenDuple d = name();
IASTElaboratedTypeSpecifier elaboratedTypeSpec = null; IASTElaboratedTypeSpecifier elaboratedTypeSpec = null;
final boolean isForewardDecl = ( LT(1) == IToken.tSEMI );
try try
{ {
@ -1503,7 +1504,7 @@ public class Parser implements IParser
d, d,
t.getOffset(), t.getOffset(),
d.getLastToken().getEndOffset(), d.getLastToken().getEndOffset(),
( LT(1) == IToken.tSEMI ) ); isForewardDecl );
} }
catch (ASTSemanticException e) catch (ASTSemanticException e)
{ {
@ -1511,6 +1512,9 @@ public class Parser implements IParser
throw backtrack; throw backtrack;
} }
sdw.setTypeSpecifier(elaboratedTypeSpec); sdw.setTypeSpecifier(elaboratedTypeSpec);
if( isForewardDecl )
elaboratedTypeSpec.acceptElement( requestor );
} }
/** /**
* Consumes template parameters. * Consumes template parameters.

View file

@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
/** /**
* @author jcamelon * @author jcamelon
@ -23,13 +24,13 @@ public class ASTClassReference
extends ASTReference extends ASTReference
implements IASTClassReference implements IASTClassReference
{ {
private final IASTClassSpecifier reference; private final IASTTypeSpecifier reference;
/** /**
* @param i * @param i
* @param string * @param string
* @param specifier * @param specifier
*/ */
public ASTClassReference(int i, String string, IASTClassSpecifier specifier) public ASTClassReference(int i, String string, IASTTypeSpecifier specifier)
{ {
super( i, string ); super( i, string );
reference = specifier; reference = specifier;
@ -39,7 +40,7 @@ public class ASTClassReference
*/ */
public ISourceElementCallbackDelegate getReferencedElement() public ISourceElementCallbackDelegate getReferencedElement()
{ {
return reference; return (ISourceElementCallbackDelegate)reference;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
@ -60,4 +61,11 @@ public class ASTClassReference
public void exitScope(ISourceElementRequestor requestor) public void exitScope(ISourceElementRequestor requestor)
{ {
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved()
*/
public boolean isResolved()
{
return ( reference instanceof IASTClassSpecifier );
}
} }

View file

@ -10,10 +10,13 @@
***********************************************************************/ ***********************************************************************/
package org.eclipse.cdt.internal.core.parser.ast.complete; package org.eclipse.cdt.internal.core.parser.ast.complete;
import java.util.List;
import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.internal.core.parser.ast.ASTQualifiedNamedElement;
import org.eclipse.cdt.internal.core.parser.ast.Offsets; import org.eclipse.cdt.internal.core.parser.ast.Offsets;
import org.eclipse.cdt.internal.core.parser.pst.ISymbol; import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
@ -23,8 +26,11 @@ import org.eclipse.cdt.internal.core.parser.pst.ISymbol;
*/ */
public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElaboratedTypeSpecifier public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElaboratedTypeSpecifier
{ {
private final boolean isForwardDeclaration;
private final ASTClassKind kind; private final ASTClassKind kind;
private final ASTQualifiedNamedElement qualifiedName;
private Offsets offsets = new Offsets(); private Offsets offsets = new Offsets();
private final ASTReferenceStore store;
/** /**
* @param checkSymbol * @param checkSymbol
@ -32,12 +38,16 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
* @param startingOffset * @param startingOffset
* @param endOffset * @param endOffset
*/ */
public ASTElaboratedTypeSpecifier(ISymbol checkSymbol, ASTClassKind kind, int startingOffset, int endOffset) public ASTElaboratedTypeSpecifier(ISymbol checkSymbol, ASTClassKind kind, int startingOffset, int endOffset, List references, boolean isDecl )
{ {
super( checkSymbol ); super( checkSymbol );
this.kind = kind; this.kind = kind;
setStartingOffset( startingOffset ); setStartingOffset( startingOffset );
setEndingOffset( endOffset ); setEndingOffset( endOffset );
qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), checkSymbol.getName() );
store = new ASTReferenceStore( references );
isForwardDeclaration = isDecl;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getName() * @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getName()
@ -93,6 +103,9 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
*/ */
public void acceptElement(ISourceElementRequestor requestor) public void acceptElement(ISourceElementRequestor requestor)
{ {
if( isForwardDeclaration )
requestor.acceptElaboratedForewardDeclaration(this);
store.processReferences(requestor);
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor) * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
@ -106,4 +119,11 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora
public void exitScope(ISourceElementRequestor requestor) public void exitScope(ISourceElementRequestor requestor)
{ {
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName()
*/
public String[] getFullyQualifiedName()
{
return qualifiedName.getFullyQualifiedName();
}
} }

View file

@ -400,6 +400,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( lastToken.getImage(), pstType ); IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( lastToken.getImage(), pstType );
if( classSymbol != null )
classSymbol.setTypeSymbol( newSymbol );
try try
{ {
currentScopeSymbol.addSymbol( newSymbol ); currentScopeSymbol.addSymbol( newSymbol );
@ -409,9 +412,6 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
throw new ASTSemanticException(); throw new ASTSemanticException();
} }
if( classSymbol != null )
classSymbol.setTypeSymbol( newSymbol );
ASTClassSpecifier classSpecifier = new ASTClassSpecifier( newSymbol, kind, type, access, startingOffset, nameOffset, references ); ASTClassSpecifier classSpecifier = new ASTClassSpecifier( newSymbol, kind, type, access, startingOffset, nameOffset, references );
try try
{ {
@ -500,7 +500,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
symbol.getType() == TypeInfo.t_struct || symbol.getType() == TypeInfo.t_struct ||
symbol.getType() == TypeInfo.t_union ) symbol.getType() == TypeInfo.t_union )
{ {
return new ASTClassReference( offset, string, (IASTClassSpecifier)symbol.getASTExtension().getPrimaryDeclaration() ); return new ASTClassReference( offset, string, (IASTTypeSpecifier)symbol.getASTExtension().getPrimaryDeclaration() );
} }
else if( symbol.getTypeInfo().checkBit( TypeInfo.isTypedef )) else if( symbol.getTypeInfo().checkBit( TypeInfo.isTypedef ))
{ {
@ -1296,7 +1296,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
} }
ASTElaboratedTypeSpecifier elab = ASTElaboratedTypeSpecifier elab =
new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset ); new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset, references, isForewardDecl );
try try
{ {

View file

@ -10,9 +10,12 @@
***********************************************************************/ ***********************************************************************/
package org.eclipse.cdt.internal.core.parser.ast.quick; package org.eclipse.cdt.internal.core.parser.ast.quick;
import org.eclipse.cdt.core.parser.ISourceElementRequestor;
import org.eclipse.cdt.core.parser.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.ASTClassKind;
import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier; import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
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.Offsets; import org.eclipse.cdt.internal.core.parser.ast.Offsets;
/** /**
@ -25,18 +28,20 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier
private Offsets offsets = new Offsets(); private Offsets offsets = new Offsets();
private final String typeName; private final String typeName;
private final ASTClassKind classKind; private final ASTClassKind classKind;
private final ASTQualifiedNamedElement qualifiedName;
/** /**
* @param elaboratedClassKind * @param elaboratedClassKind
* @param typeName * @param typeName
* @param startingOffset * @param startingOffset
* @param endOffset * @param endOffset
*/ */
public ASTElaboratedTypeSpecifier(ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset) public ASTElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, String typeName, int startingOffset, int endOffset)
{ {
classKind = elaboratedClassKind; classKind = elaboratedClassKind;
this.typeName = typeName; this.typeName = typeName;
offsets.setStartingOffset( startingOffset ); offsets.setStartingOffset( startingOffset );
offsets.setEndingOffset( endOffset ); offsets.setEndingOffset( endOffset );
qualifiedName = new ASTQualifiedNamedElement( scope, typeName );
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getTypeName() * @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getTypeName()
@ -88,4 +93,30 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier
{ {
throw new ASTNotImplementedException(); throw new ASTNotImplementedException();
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName()
*/
public String[] getFullyQualifiedName()
{
return qualifiedName.getFullyQualifiedName();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
*/
public void acceptElement(ISourceElementRequestor requestor)
{
requestor.acceptElaboratedForewardDeclaration(this);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
*/
public void enterScope(ISourceElementRequestor requestor)
{
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
*/
public void exitScope(ISourceElementRequestor requestor)
{
}
} }

View file

@ -280,6 +280,6 @@ public class QuickParseASTFactory extends BaseASTFactory implements IASTFactory
public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, ITokenDuple typeName, int startingOffset, int endOffset, boolean isForewardDecl) public IASTElaboratedTypeSpecifier createElaboratedTypeSpecifier(IASTScope scope, ASTClassKind elaboratedClassKind, ITokenDuple typeName, int startingOffset, int endOffset, boolean isForewardDecl)
{ {
return new ASTElaboratedTypeSpecifier( elaboratedClassKind, typeName.toString(), startingOffset, endOffset ); return new ASTElaboratedTypeSpecifier( scope, elaboratedClassKind, typeName.toString(), startingOffset, endOffset );
} }
} }

View file

@ -35,6 +35,7 @@ import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassReference;
import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference; import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
import org.eclipse.cdt.core.parser.ast.IASTField; import org.eclipse.cdt.core.parser.ast.IASTField;
@ -413,6 +414,13 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants
private IASTScope currentScope = null; private IASTScope currentScope = null;
private LinkedList scopeStack = new LinkedList(); private LinkedList scopeStack = new LinkedList();
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptElaboratedForewardDeclaration(org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier)
*/
public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType)
{
//TODO BOGDAN IMPLEMENT THIS
}
} }