diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 0e86ce1701c..99bd2a52013 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -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 of completion proposals. diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index 24c9ddb411d..f08cd76c40b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -104,6 +104,7 @@ public class CompleteParseASTTest extends TestCase public class FullParseCallback implements ISourceElementRequestor { private List references = new ArrayList(); + private List forewardDecls = new ArrayList(); private Stack inclusions = new Stack(); private Scope compilationUnit; @@ -499,6 +500,22 @@ public class CompleteParseASTTest extends TestCase { 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 ) @@ -852,6 +869,25 @@ public class CompleteParseASTTest extends TestCase 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 { IASTASMDefinition asm = (IASTASMDefinition)parse( "asm ( \"blah blah blah\" );" ).getDeclarations().next(); diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java index 20d4fa4f1a3..2c3abadaf9f 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java @@ -951,4 +951,12 @@ public class DOMBuilder implements ISourceElementRequestor // 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 + + } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java index e8bef7775b7..f6c34965702 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java @@ -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.IASTClassSpecifier; 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.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -403,4 +404,11 @@ public class SourceIndexerRequestor implements ISourceElementRequestor, IIndexCo if (reference.getReferencedElement() instanceof IASTMethod) 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 + } } diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index 0ecde66fc85..7f6daf09af7 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,6 @@ +2003-08-12 John Camelon + Added X-Ref/Elaborated type support w/element requestor callbacks. + 2003-08-11 John Camelon Added Complete Parse support for ASM Definitions. Added isVolatile() to abstract declarations. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java index 769b6f7ecd8..94dcc97cca5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java @@ -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.IASTClassSpecifier; 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.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -54,6 +55,7 @@ public interface ISourceElementRequestor { public void acceptASMDefinition( IASTASMDefinition asmDefinition ); public void acceptTypedefDeclaration( IASTTypedefDeclaration typedef ); public void acceptEnumerationSpecifier( IASTEnumerationSpecifier enumeration ); + public void acceptElaboratedForewardDeclaration( IASTElaboratedTypeSpecifier elaboratedType ); public void acceptAbstractTypeSpecDeclaration( IASTAbstractTypeSpecifierDeclaration abstractDeclaration ); public void enterFunctionBody( IASTFunction function ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java index 44d44d42845..1c4e1d87a5e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java @@ -16,5 +16,5 @@ package org.eclipse.cdt.core.parser.ast; */ public interface IASTClassReference extends IASTReference { - + public boolean isResolved(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java index ef26efacfb5..39ae3fac6e0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java @@ -10,13 +10,15 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate; + /** * @author jcamelon * */ -public interface IASTElaboratedTypeSpecifier extends IASTTypeSpecifier, IASTOffsetableElement { +public interface IASTElaboratedTypeSpecifier extends IASTTypeSpecifier, IASTOffsetableElement, IASTQualifiedNameElement, ISourceElementCallbackDelegate { public String getName(); public ASTClassKind getClassKind(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java index 58a7719d4b5..3f8d91152fd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java @@ -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.IASTClassSpecifier; 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.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -395,5 +396,14 @@ public class NullSourceElementRequestor implements ISourceElementRequestor { // 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 + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index 606edcb46f3..faba2b5a609 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -1493,7 +1493,8 @@ public class Parser implements IParser ITokenDuple d = name(); IASTElaboratedTypeSpecifier elaboratedTypeSpec = null; - + final boolean isForewardDecl = ( LT(1) == IToken.tSEMI ); + try { elaboratedTypeSpec = @@ -1503,7 +1504,7 @@ public class Parser implements IParser d, t.getOffset(), d.getLastToken().getEndOffset(), - ( LT(1) == IToken.tSEMI ) ); + isForewardDecl ); } catch (ASTSemanticException e) { @@ -1511,6 +1512,9 @@ public class Parser implements IParser throw backtrack; } sdw.setTypeSpecifier(elaboratedTypeSpec); + + if( isForewardDecl ) + elaboratedTypeSpec.acceptElement( requestor ); } /** * Consumes template parameters. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java index ce6fd93f8d2..5a73a06bc34 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java @@ -14,6 +14,7 @@ import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate; import org.eclipse.cdt.core.parser.ISourceElementRequestor; import org.eclipse.cdt.core.parser.ast.IASTClassReference; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; +import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier; /** * @author jcamelon @@ -23,13 +24,13 @@ public class ASTClassReference extends ASTReference implements IASTClassReference { - private final IASTClassSpecifier reference; + private final IASTTypeSpecifier reference; /** * @param i * @param string * @param specifier */ - public ASTClassReference(int i, String string, IASTClassSpecifier specifier) + public ASTClassReference(int i, String string, IASTTypeSpecifier specifier) { super( i, string ); reference = specifier; @@ -39,7 +40,7 @@ public class ASTClassReference */ public ISourceElementCallbackDelegate getReferencedElement() { - return reference; + return (ISourceElementCallbackDelegate)reference; } /* (non-Javadoc) * @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) { } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved() + */ + public boolean isResolved() + { + return ( reference instanceof IASTClassSpecifier ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java index 80c4b072b6d..062322f63fb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java @@ -10,10 +10,13 @@ ***********************************************************************/ 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.ast.ASTClassKind; import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException; 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.pst.ISymbol; @@ -23,8 +26,11 @@ import org.eclipse.cdt.internal.core.parser.pst.ISymbol; */ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElaboratedTypeSpecifier { - private final ASTClassKind kind; + private final boolean isForwardDeclaration; + private final ASTClassKind kind; + private final ASTQualifiedNamedElement qualifiedName; private Offsets offsets = new Offsets(); + private final ASTReferenceStore store; /** * @param checkSymbol @@ -32,12 +38,16 @@ public class ASTElaboratedTypeSpecifier extends ASTSymbol implements IASTElabora * @param startingOffset * @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 ); this.kind = kind; setStartingOffset( startingOffset ); setEndingOffset( endOffset ); + qualifiedName = new ASTQualifiedNamedElement( getOwnerScope(), checkSymbol.getName() ); + store = new ASTReferenceStore( references ); + isForwardDeclaration = isDecl; + } /* (non-Javadoc) * @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) { + if( isForwardDeclaration ) + requestor.acceptElaboratedForewardDeclaration(this); + store.processReferences(requestor); } /* (non-Javadoc) * @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) { } + /* (non-Javadoc) + * @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName() + */ + public String[] getFullyQualifiedName() + { + return qualifiedName.getFullyQualifiedName(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java index 7d2abccaba0..d57fdab14ee 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java @@ -400,6 +400,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( lastToken.getImage(), pstType ); + if( classSymbol != null ) + classSymbol.setTypeSymbol( newSymbol ); + try { currentScopeSymbol.addSymbol( newSymbol ); @@ -408,9 +411,6 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto { throw new ASTSemanticException(); } - - if( classSymbol != null ) - classSymbol.setTypeSymbol( newSymbol ); ASTClassSpecifier classSpecifier = new ASTClassSpecifier( newSymbol, kind, type, access, startingOffset, nameOffset, references ); try @@ -500,7 +500,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto symbol.getType() == TypeInfo.t_struct || 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 )) { @@ -1296,7 +1296,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto } ASTElaboratedTypeSpecifier elab = - new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset ); + new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset, references, isForewardDecl ); try { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java index 419626f54b4..7d4da1728c8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java @@ -10,9 +10,12 @@ ***********************************************************************/ 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.ASTNotImplementedException; 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; /** @@ -24,19 +27,21 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier private Offsets offsets = new Offsets(); private final String typeName; - private final ASTClassKind classKind; + private final ASTClassKind classKind; + private final ASTQualifiedNamedElement qualifiedName; /** * @param elaboratedClassKind * @param typeName * @param startingOffset * @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; this.typeName = typeName; offsets.setStartingOffset( startingOffset ); offsets.setEndingOffset( endOffset ); + qualifiedName = new ASTQualifiedNamedElement( scope, typeName ); } /* (non-Javadoc) * @see org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier#getTypeName() @@ -88,4 +93,30 @@ public class ASTElaboratedTypeSpecifier implements IASTElaboratedTypeSpecifier { 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) + { + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java index 5cee802e6fa..9bdac7e0d28 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java @@ -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) { - return new ASTElaboratedTypeSpecifier( elaboratedClassKind, typeName.toString(), startingOffset, endOffset ); + return new ASTElaboratedTypeSpecifier( scope, elaboratedClassKind, typeName.toString(), startingOffset, endOffset ); } } diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java index 277f5ae10a5..1724ae50130 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java @@ -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.IASTClassSpecifier; 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.IASTEnumerationSpecifier; import org.eclipse.cdt.core.parser.ast.IASTField; @@ -413,6 +414,13 @@ public class MatchLocator implements ISourceElementRequestor, ICSearchConstants private IASTScope currentScope = null; 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 + } }