[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Applied [HEAD] Cross references and Elaborated Types
|
CORE
Added X-Ref/Elaborated type support w/element requestor callbacks.
TESTS
Added CompleteParseASTTest::testForewardDeclarationWithUsage().
Bogdan : update the Indexer/Search callbacks as I have indicated in the
comments.
I Love CDT
JohnC
Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java,v
retrieving revision 1.46
diff -u -r1.46 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java 12 Aug 2003 18:19:39 -0000 1.46
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java 12 Aug 2003 20:36:04 -0000
@@ -951,4 +951,12 @@
// 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
+
+ }
}
Index: index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java,v
retrieving revision 1.10
diff -u -r1.10 SourceIndexerRequestor.java
--- index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java 11 Aug 2003 19:10:45 -0000 1.10
+++ index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java 12 Aug 2003 20:36:05 -0000
@@ -22,6 +22,7 @@
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 @@
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
+ }
}
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.97
diff -u -r1.97 ChangeLog
--- parser/ChangeLog 12 Aug 2003 18:19:39 -0000 1.97
+++ parser/ChangeLog 12 Aug 2003 20:36:06 -0000
@@ -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.
Index: parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java,v
retrieving revision 1.9
diff -u -r1.9 ISourceElementRequestor.java
--- parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java 30 Jul 2003 01:31:13 -0000 1.9
+++ parser/org/eclipse/cdt/core/parser/ISourceElementRequestor.java 12 Aug 2003 20:36:06 -0000
@@ -15,6 +15,7 @@
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 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 );
Index: parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java,v
retrieving revision 1.2
diff -u -r1.2 IASTClassReference.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java 18 Jul 2003 16:39:22 -0000 1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTClassReference.java 12 Aug 2003 20:36:06 -0000
@@ -16,5 +16,5 @@
*/
public interface IASTClassReference extends IASTReference
{
-
+ public boolean isResolved();
}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java,v
retrieving revision 1.6
diff -u -r1.6 IASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java 12 Aug 2003 18:19:38 -0000 1.6
+++ parser/org/eclipse/cdt/core/parser/ast/IASTElaboratedTypeSpecifier.java 12 Aug 2003 20:36:06 -0000
@@ -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();
Index: parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java,v
retrieving revision 1.9
diff -u -r1.9 NullSourceElementRequestor.java
--- parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java 30 Jul 2003 01:31:14 -0000 1.9
+++ parser/org/eclipse/cdt/internal/core/parser/NullSourceElementRequestor.java 12 Aug 2003 20:36:07 -0000
@@ -7,6 +7,7 @@
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;
@@ -392,6 +393,15 @@
* @see org.eclipse.cdt.core.parser.ISourceElementRequestor#acceptMethodReference(org.eclipse.cdt.core.parser.ast.IASTMethodReference)
*/
public void acceptMethodReference(IASTMethodReference reference)
+ {
+ // 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
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java,v
retrieving revision 1.88
diff -u -r1.88 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java 12 Aug 2003 18:19:38 -0000 1.88
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java 12 Aug 2003 20:36:11 -0000
@@ -1493,7 +1493,8 @@
ITokenDuple d = name();
IASTElaboratedTypeSpecifier elaboratedTypeSpec = null;
-
+ final boolean isForewardDecl = ( LT(1) == IToken.tSEMI );
+
try
{
elaboratedTypeSpec =
@@ -1503,7 +1504,7 @@
d,
t.getOffset(),
d.getLastToken().getEndOffset(),
- ( LT(1) == IToken.tSEMI ) );
+ isForewardDecl );
}
catch (ASTSemanticException e)
{
@@ -1511,6 +1512,9 @@
throw backtrack;
}
sdw.setTypeSpecifier(elaboratedTypeSpec);
+
+ if( isForewardDecl )
+ elaboratedTypeSpec.acceptElement( requestor );
}
/**
* Consumes template parameters.
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java,v
retrieving revision 1.2
diff -u -r1.2 ASTClassReference.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java 22 Jul 2003 22:02:20 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTClassReference.java 12 Aug 2003 20:36:11 -0000
@@ -14,6 +14,7 @@
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 @@
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 ISourceElementCallbackDelegate getReferencedElement()
{
- return reference;
+ return (ISourceElementCallbackDelegate)reference;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
@@ -59,5 +60,12 @@
*/
public void exitScope(ISourceElementRequestor requestor)
{
+ }
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTClassReference#isResolved()
+ */
+ public boolean isResolved()
+ {
+ return ( reference instanceof IASTClassSpecifier );
}
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java,v
retrieving revision 1.2
diff -u -r1.2 ASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java 12 Aug 2003 18:19:39 -0000 1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTElaboratedTypeSpecifier.java 12 Aug 2003 20:36:11 -0000
@@ -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 @@
*/
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 @@
* @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 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)
@@ -105,5 +118,12 @@
*/
public void exitScope(ISourceElementRequestor requestor)
{
+ }
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName()
+ */
+ public String[] getFullyQualifiedName()
+ {
+ return qualifiedName.getFullyQualifiedName();
}
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java,v
retrieving revision 1.12
diff -u -r1.12 CompleteParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 12 Aug 2003 18:19:39 -0000 1.12
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java 12 Aug 2003 20:36:12 -0000
@@ -400,6 +400,9 @@
IDerivableContainerSymbol newSymbol = pst.newDerivableContainerSymbol( lastToken.getImage(), pstType );
+ if( classSymbol != null )
+ classSymbol.setTypeSymbol( newSymbol );
+
try
{
currentScopeSymbol.addSymbol( newSymbol );
@@ -408,9 +411,6 @@
{
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 @@
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 @@
}
ASTElaboratedTypeSpecifier elab =
- new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset );
+ new ASTElaboratedTypeSpecifier( checkSymbol, kind, startingOffset, endOffset, references, isForewardDecl );
try
{
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java,v
retrieving revision 1.5
diff -u -r1.5 ASTElaboratedTypeSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java 12 Aug 2003 18:19:38 -0000 1.5
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTElaboratedTypeSpecifier.java 12 Aug 2003 20:36:13 -0000
@@ -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 @@
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()
@@ -87,5 +92,31 @@
public boolean isResolved() throws 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)
+ {
}
}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java,v
retrieving revision 1.20
diff -u -r1.20 QuickParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java 12 Aug 2003 18:19:38 -0000 1.20
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java 12 Aug 2003 20:36:13 -0000
@@ -280,6 +280,6 @@
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 );
}
}
Index: search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java,v
retrieving revision 1.18
diff -u -r1.18 MatchLocator.java
--- search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java 12 Aug 2003 14:29:07 -0000 1.18
+++ search/org/eclipse/cdt/internal/core/search/matching/MatchLocator.java 12 Aug 2003 20:36:14 -0000
@@ -35,6 +35,7 @@
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 @@
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
+ }
}
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.55
diff -u -r1.55 ChangeLog
--- ChangeLog 12 Aug 2003 20:19:47 -0000 1.55
+++ ChangeLog 12 Aug 2003 20:34:52 -0000
@@ -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.
Index: parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java,v
retrieving revision 1.10
diff -u -r1.10 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 12 Aug 2003 18:19:54 -0000 1.10
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 12 Aug 2003 20:34:54 -0000
@@ -104,6 +104,7 @@
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 @@
{
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 )
@@ -851,6 +868,25 @@
assertEquals( variableA.getName(), "a");
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
{