Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [HEAD] ArrayModifiers & Exception Specifications

CORE
        Added X-Reference support for ArrayModifiers and Exception 
Specifications. 
        Fixed Bug 41551  -  HandleInclusion always throws ScannerException 
on local includes.

TESTS
        Added CompleteParseASTTest::testArrayModExpression(), 
testPointerVariable() & 
        testExceptionSpecification(). 

JohnC

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.60
diff -u -r1.60 ChangeLog
--- ChangeLog	13 Aug 2003 23:54:09 -0000	1.60
+++ ChangeLog	14 Aug 2003 15:32:28 -0000
@@ -1,3 +1,7 @@
+2003-08-14 John Camelon
+	Added CompleteParseASTTest::testArrayModExpression(), testPointerVariable() & 
+	testExceptionSpecification().  
+
 2003-08-13 John Camelon
 	Added testBug41520() to FullParseFailedTests.java.  
 	Added testConstructorChain() to CompleteParseASTTest.java
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.13
diff -u -r1.13 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	13 Aug 2003 23:54:09 -0000	1.13
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	14 Aug 2003 15:32:29 -0000
@@ -887,6 +887,9 @@
 			assertEquals( fqnClass[i], fqnElab[i]);
 		assertEquals( callback.getReferences().size(), 1 );
 		assertEquals( callback.getForewardDecls().size(), 1 );
+		IASTClassReference ref = (IASTClassReference)callback.getReferences().get(0);
+		assertTrue( ref.getReferencedElement() instanceof IASTElaboratedTypeSpecifier );
+		assertEquals( ref.getReferencedElement(), elab );
 	}
 		
 	
@@ -947,4 +950,35 @@
 		assertEquals( reference2.getReferencedElement(), variableX ); 
 	}
 	
+	public void testArrayModExpression() throws Exception
+	{
+		Iterator i = parse( "const int x = 5; int y [ x ]; ").getDeclarations();
+		IASTVariable varX = (IASTVariable)i.next();
+		IASTVariable varY = (IASTVariable)i.next(); 
+		assertFalse( i.hasNext() );
+		assertEquals( callback.getReferences().size(), 1 );
+	}
+
+
+	public void testPointerVariable() throws Exception
+	{
+		Iterator i = parse( "class A { }; A * anA;").getDeclarations();
+		IASTClassSpecifier classA = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
+		IASTVariable varAnA = (IASTVariable)i.next();
+		assertFalse( i.hasNext() ); 
+		assertEquals( callback.getReferences().size(), 1 ); 
+		IASTClassReference ref = (IASTClassReference)callback.getReferences().get(0);
+		assertEquals( ref.getReferencedElement(), classA );
+	}	
+	
+	public void testExceptionSpecification() throws Exception
+	{
+		Iterator i = parse( "class A { }; void foo( void ) throw ( A );").getDeclarations();
+		IASTClassSpecifier classA = (IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)i.next()).getTypeSpecifier();
+		IASTFunction function = (IASTFunction)i.next();
+		assertFalse( i.hasNext() );
+		assertEquals( callback.getReferences().size(), 1 );
+		IASTClassReference ref = (IASTClassReference)callback.getReferences().get(0);
+		assertEquals( ref.getReferencedElement(), classA );		
+	} 
 }
Index: model/org/eclipse/cdt/internal/core/model/CModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java,v
retrieving revision 1.11
diff -u -r1.11 CModelBuilder.java
--- model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	12 Aug 2003 20:20:04 -0000	1.11
+++ model/org/eclipse/cdt/internal/core/model/CModelBuilder.java	14 Aug 2003 15:31:59 -0000
@@ -53,7 +53,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTVariable;
 import org.eclipse.cdt.internal.core.parser.ParserException;
 import org.eclipse.cdt.internal.core.parser.ScannerInfo;
-import org.eclipse.cdt.internal.core.parser.ast.quick.ASTArrayModifier;
+import org.eclipse.cdt.internal.core.parser.ast.ASTArrayModifier;
 import org.eclipse.core.resources.IProject;
 
 
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.100
diff -u -r1.100 ChangeLog
--- parser/ChangeLog	13 Aug 2003 23:54:05 -0000	1.100
+++ parser/ChangeLog	14 Aug 2003 15:32:00 -0000
@@ -1,3 +1,7 @@
+2003-08-14 John Camelon
+	Added X-Reference support for ArrayModifiers and Exception Specifications.  
+	Fixed Bug 41551  -  HandleInclusion always throws ScannerException on local includes.
+
 2003-08-13 John Camelon
 	Added constructor expression support for variables.  
 	Added constructor chain x-reference support for methods. 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclaration.java,v
retrieving revision 1.5
diff -u -r1.5 IASTAbstractDeclaration.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclaration.java	12 Aug 2003 18:19:38 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/ast/IASTAbstractDeclaration.java	14 Aug 2003 15:32:00 -0000
@@ -12,11 +12,13 @@
 
 import java.util.Iterator;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTAbstractDeclaration extends IASTTypeSpecifierOwner
+public interface IASTAbstractDeclaration extends IASTTypeSpecifierOwner, ISourceElementCallbackDelegate
 {
 	public boolean isConst();
 	public boolean isVolatile();
Index: parser/org/eclipse/cdt/core/parser/ast/IASTArrayModifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTArrayModifier.java,v
retrieving revision 1.1
diff -u -r1.1 IASTArrayModifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTArrayModifier.java	12 Aug 2003 18:19:38 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTArrayModifier.java	14 Aug 2003 15:32:00 -0000
@@ -10,12 +10,14 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.ast;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 
 /**
  * @author jcamelon
  *
  */
-public interface IASTArrayModifier
+public interface IASTArrayModifier extends ISourceElementCallbackDelegate
 {
 	public IASTExpression getExpression(); 
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTExceptionSpecification.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExceptionSpecification.java,v
retrieving revision 1.2
diff -u -r1.2 IASTExceptionSpecification.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTExceptionSpecification.java	9 Jul 2003 00:47:42 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTExceptionSpecification.java	14 Aug 2003 15:32:01 -0000
@@ -12,11 +12,13 @@
 
 import java.util.Iterator;
 
+import org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate;
+
 /**
  * @author jcamelon
  *
  */
-public interface IASTExceptionSpecification
+public interface IASTExceptionSpecification extends ISourceElementCallbackDelegate
 {
 	public Iterator getTypeIds(); 
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java,v
retrieving revision 1.22
diff -u -r1.22 IASTFactory.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	13 Aug 2003 23:54:05 -0000	1.22
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	14 Aug 2003 15:32:01 -0000
@@ -102,7 +102,7 @@
         IASTInitializerClause.Kind kind,
         IASTExpression assignmentExpression,
         List initializerClauses);
-    public IASTExceptionSpecification createExceptionSpecification(List typeIds);
+    public IASTExceptionSpecification createExceptionSpecification(IASTScope scope, List typeIds) throws ASTSemanticException;
     /**
      * @param exp
      */
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.91
diff -u -r1.91 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	13 Aug 2003 23:54:05 -0000	1.91
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	14 Aug 2003 15:32:04 -0000
@@ -1968,10 +1968,18 @@
                                     }
                                 }
                                 if (exceptionSpecIds != null)
-                                    d.setExceptionSpecification(
-                                        astFactory
-                                            .createExceptionSpecification(
-                                            exceptionSpecIds));
+                                    try
+                                    {
+                                        d.setExceptionSpecification(
+                                            astFactory
+                                                .createExceptionSpecification(
+                                                d.getDeclarationWrapper().getScope(), exceptionSpecIds));
+                                    }
+                                    catch (ASTSemanticException e)
+                                    {
+                                        failParse();
+                                        throw backtrack;
+                                    }
                             }
                             // check for optional pure virtual							
                             if (LT(1) == IToken.tASSIGN
Index: parser/org/eclipse/cdt/internal/core/parser/Scanner.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java,v
retrieving revision 1.46
diff -u -r1.46 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/Scanner.java	13 Aug 2003 21:51:48 -0000	1.46
+++ parser/org/eclipse/cdt/internal/core/parser/Scanner.java	14 Aug 2003 15:32:05 -0000
@@ -308,6 +308,9 @@
 					}
 				}
 			}
+			
+			if (throwExceptionOnInclusionNotFound && inclusionReader == null )
+				throw new ScannerException("Cannot find inclusion " + fileName);
 		}
 		else // local inclusion
 		{
@@ -332,9 +335,6 @@
 				handleInclusion( fileName, true, nameOffset, beginOffset, endOffset );
 			}
 		}
-
-		if (throwExceptionOnInclusionNotFound && inclusionReader == null )
-			throw new ScannerException("Cannot find inclusion " + fileName);
 		
 		IASTInclusion inclusion = astFactory.createInclusion( fileName, newPath, !useIncludePaths, beginOffset, endOffset, nameOffset ); 
 		contextStack.updateContext(inclusionReader, newPath, ScannerContext.INCLUSION, inclusion, requestor );
Index: parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java,v
retrieving revision 1.3
diff -u -r1.3 ASTAbstractDeclaration.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java	12 Aug 2003 18:19:38 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/ASTAbstractDeclaration.java	14 Aug 2003 15:32:05 -0000
@@ -13,8 +13,10 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
 import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
 
 /**
@@ -65,6 +67,7 @@
      */
     public Iterator getPointerOperators()
     {
+    	if( pointerOperators == null ) return new EmptyIterator();
         return pointerOperators.iterator();
     }
     /* (non-Javadoc)
@@ -72,6 +75,7 @@
      */
     public Iterator getArrayModifiers()
     {
+		if( arrayModifiers == null ) return new EmptyIterator();
         return arrayModifiers.iterator();
     }
     /* (non-Javadoc)
@@ -79,6 +83,7 @@
      */
     public Iterator getParameters()
     {
+		if( parms == null ) return new EmptyIterator();
         return parms.iterator();
     }
     /* (non-Javadoc)
@@ -94,5 +99,26 @@
     public boolean isVolatile()
     {
         return isVolatile;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	Iterator arrayMods = getArrayModifiers();
+    	while( arrayMods.hasNext() )
+    		((IASTArrayModifier)arrayMods.next()).acceptElement(requestor);
+    }
+    /* (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/ASTArrayModifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/ASTArrayModifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/ASTArrayModifier.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/ast/ASTArrayModifier.java	14 Aug 2003 15:32:05 -0000
@@ -0,0 +1,62 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software 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 Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.core.parser.ast;
+
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
+import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
+import org.eclipse.cdt.core.parser.ast.IASTExpression;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ASTArrayModifier implements IASTArrayModifier
+{
+	private final IASTExpression expression;
+    /**
+     * @param exp
+     */
+    public ASTArrayModifier(IASTExpression exp)
+    {
+        expression = exp; 
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier#getExpression()
+     */
+    public IASTExpression getExpression()
+    {
+        return expression;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    	if( expression != null )
+    		expression.acceptElement( requestor );
+    }
+
+    /* (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/ASTInitializerClause.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/ASTInitializerClause.java,v
retrieving revision 1.2
diff -u -r1.2 ASTInitializerClause.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/ASTInitializerClause.java	13 Aug 2003 23:54:05 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/ASTInitializerClause.java	14 Aug 2003 15:32:05 -0000
@@ -12,7 +12,6 @@
 
 import java.util.Iterator;
 import java.util.List;
-import java.util.NoSuchElementException;
 
 import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
Index: parser/org/eclipse/cdt/internal/core/parser/ast/BaseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/BaseASTFactory.java,v
retrieving revision 1.8
diff -u -r1.8 BaseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/BaseASTFactory.java	13 Aug 2003 21:51:48 -0000	1.8
+++ parser/org/eclipse/cdt/internal/core/parser/ast/BaseASTFactory.java	14 Aug 2003 15:32:05 -0000
@@ -14,6 +14,7 @@
 
 import org.eclipse.cdt.core.parser.ast.ASTPointerOperator;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
 import org.eclipse.cdt.core.parser.ast.IASTExpression;
 import org.eclipse.cdt.core.parser.ast.IASTInclusion;
 import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
@@ -63,6 +64,11 @@
     public IASTInitializerClause createInitializerClause(IASTInitializerClause.Kind kind, IASTExpression assignmentExpression, List initializerClauses)
     {
     	return new ASTInitializerClause( kind, assignmentExpression, initializerClauses );
+    }
+
+    public IASTArrayModifier createArrayModifier(IASTExpression exp)
+    {
+        return new ASTArrayModifier( exp );
     }
 
 
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExceptionSpecification.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExceptionSpecification.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExceptionSpecification.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTExceptionSpecification.java	14 Aug 2003 15:32:05 -0000
@@ -0,0 +1,68 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software 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 Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.core.parser.ast.complete;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
+import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
+import org.eclipse.cdt.internal.core.parser.ast.EmptyIterator;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ASTExceptionSpecification implements IASTExceptionSpecification
+{
+	private final List typeIds;
+	private final ASTReferenceStore store;  
+    /**
+     * @param newTypeIds
+     * @param references
+     */
+    public ASTExceptionSpecification(List newTypeIds, List references)
+    {
+        this.typeIds = newTypeIds;
+        store = new ASTReferenceStore( references );        
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification#getTypeIds()
+     */
+    public Iterator getTypeIds()
+    {
+        if( typeIds == null ) return new EmptyIterator();
+        return typeIds.iterator();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+        store.processReferences(requestor);
+    }
+
+    /* (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/complete/ASTField.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTField.java,v
retrieving revision 1.3
diff -u -r1.3 ASTField.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTField.java	13 Aug 2003 23:54:05 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTField.java	14 Aug 2003 15:32:05 -0000
@@ -57,6 +57,7 @@
 		referenceDelegate.processReferences(requestor);
 		if( getInitializerClause() != null )
 			getInitializerClause().acceptElement(requestor);
-
+		if( getAbstractDeclaration() != null )
+			getAbstractDeclaration().acceptElement(requestor);			
 	}
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java,v
retrieving revision 1.3
diff -u -r1.3 ASTFunction.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java	13 Aug 2003 21:51:48 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTFunction.java	14 Aug 2003 15:32:06 -0000
@@ -15,6 +15,7 @@
 
 import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
 import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
 import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
@@ -191,13 +192,22 @@
     public void acceptElement(ISourceElementRequestor requestor)
     {
         requestor.acceptFunctionDeclaration(this);
+        functionCallbacks(requestor);
+    }
+    
+    protected  void functionCallbacks(ISourceElementRequestor requestor)
+    {
         references.processReferences(requestor);
-        processParameterInitializers(requestor);
+        processParameterInitializersAndArrayMods(requestor);
+        if( getReturnType() != null )
+        	getReturnType().acceptElement(requestor);
+        if( getExceptionSpec() != null )
+        	getExceptionSpec().acceptElement(requestor);
     }
     /**
      * @param requestor
      */
-    protected void processParameterInitializers(ISourceElementRequestor requestor)
+    protected void processParameterInitializersAndArrayMods(ISourceElementRequestor requestor)
     {
         Iterator i = parameters.iterator();
         while( i.hasNext() )
@@ -205,6 +215,11 @@
         	IASTParameterDeclaration parm = (IASTParameterDeclaration)i.next();
         	if( parm.getDefaultValue() != null )
         		parm.getDefaultValue().acceptElement(requestor);
+        	Iterator arrays = parm.getArrayModifiers();
+        	while( arrays.hasNext() )
+        	{
+        		((IASTArrayModifier)arrays.next()).acceptElement(requestor);
+        	}
         }
     }
 
@@ -215,8 +230,7 @@
     public void enterScope(ISourceElementRequestor requestor)
     {
 		requestor.enterFunctionBody( this );
-		references.processReferences(requestor);
-		processParameterInitializers(requestor);
+		functionCallbacks( requestor );
     }
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java,v
retrieving revision 1.4
diff -u -r1.4 ASTMethod.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java	13 Aug 2003 23:54:05 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTMethod.java	14 Aug 2003 15:32:06 -0000
@@ -126,8 +126,11 @@
     public void acceptElement(ISourceElementRequestor requestor)
     {
         requestor.acceptMethodDeclaration(this);
-        references.processReferences(requestor);
-        processParameterInitializers(requestor);
+        methodCallbacks(requestor);
+    }
+    protected void methodCallbacks(ISourceElementRequestor requestor)
+    {
+        functionCallbacks(requestor);
         processConstructorChain(requestor);
     }
     
@@ -149,8 +152,7 @@
     public void enterScope(ISourceElementRequestor requestor)
     {
 		requestor.enterMethodBody(this);
-		references.processReferences(requestor);
-		processConstructorChain(requestor);
+		methodCallbacks( requestor );
     }
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#exitScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java,v
retrieving revision 1.2
diff -u -r1.2 ASTTypedef.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java	30 Jul 2003 01:31:14 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTTypedef.java	14 Aug 2003 15:32:06 -0000
@@ -70,7 +70,8 @@
     public void acceptElement(ISourceElementRequestor requestor)
     {
         requestor.acceptTypedefDeclaration(this);
-        referenceStore.processReferences(requestor);        
+        referenceStore.processReferences(requestor);
+        getAbstractDeclarator().acceptElement( requestor );
     }
 
     /* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java,v
retrieving revision 1.3
diff -u -r1.3 ASTVariable.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java	13 Aug 2003 23:54:05 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/ASTVariable.java	14 Aug 2003 15:32:06 -0000
@@ -166,6 +166,9 @@
         	initializerClause.acceptElement(requestor);
         if( constructorExpression != null )
         	constructorExpression.acceptElement(requestor);
+		if( getAbstractDeclaration() != null )
+			getAbstractDeclaration().acceptElement(requestor);
+
     }
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#enterScope(org.eclipse.cdt.core.parser.ISourceElementRequestor)
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.15
diff -u -r1.15 CompleteParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java	13 Aug 2003 23:54:05 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/parser/ast/complete/CompleteParseASTFactory.java	14 Aug 2003 15:32:07 -0000
@@ -483,7 +483,11 @@
 					symbol = (IContainerSymbol)symbol.lookup( t.getImage() );
 				else
 					symbol = symbol.lookupNestedNameSpecifier( t.getImage() );
-				references.add( createReference( symbol, t.getImage(), t.getOffset() ));
+				
+				if( symbol != null )
+					references.add( createReference( symbol, t.getImage(), t.getOffset() ));
+				else
+					throw new ASTSemanticException();
 			}
 			catch( ParserSymbolTableException pste )
 			{
@@ -687,18 +691,24 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExceptionSpecification(java.util.List)
      */
-    public IASTExceptionSpecification createExceptionSpecification(List typeIds)
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createArrayModifier(org.eclipse.cdt.core.parser.ast.IASTExpression)
-     */
-    public IASTArrayModifier createArrayModifier(IASTExpression exp)
+    public IASTExceptionSpecification createExceptionSpecification(IASTScope scope, List typeIds) throws ASTSemanticException
     {
-        // TODO Auto-generated method stub
-        return null;
+    	List references = new ArrayList(); 
+    	List newTypeIds = new ArrayList(); 
+        if( typeIds != null )
+        {
+        	Iterator iter =typeIds.iterator();
+        	while( iter.hasNext() )
+        	{
+        		ITokenDuple duple = (ITokenDuple)iter.next();
+        		if( duple != null )
+        		{
+        			lookupQualifiedName( scopeToSymbol( scope ), duple, references, false  );
+        			newTypeIds.add( duple.toString() );
+        		}
+        	}
+        }
+        return new ASTExceptionSpecification( newTypeIds, references );
     }
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createConstructorMemberInitializer(org.eclipse.cdt.core.parser.ITokenDuple, org.eclipse.cdt.core.parser.ast.IASTExpression)
@@ -784,8 +794,11 @@
                     	typeSymbol = ((IContainerSymbol)typeSymbol).lookupNestedNameSpecifier( current.getImage());
                     else
 						typeSymbol = ((IContainerSymbol)typeSymbol).lookup( current.getImage());
-						
-                    references.add( createReference( typeSymbol, current.getImage(), current.getOffset() ));
+					
+					if( typeSymbol != null )	
+                    	references.add( createReference( typeSymbol, current.getImage(), current.getOffset() ));
+                    else
+                    	throw new ASTSemanticException();
                 }
                 catch (ParserSymbolTableException e)
                 {
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTArrayModifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTArrayModifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTArrayModifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTArrayModifier.java	12 Aug 2003 18:19:38 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,38 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software 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 Rational Software - Initial API and implementation
-***********************************************************************/
-package org.eclipse.cdt.internal.core.parser.ast.quick;
-
-import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
-import org.eclipse.cdt.core.parser.ast.IASTExpression;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTArrayModifier implements IASTArrayModifier
-{
-	private final IASTExpression expression;
-    /**
-     * @param exp
-     */
-    public ASTArrayModifier(IASTExpression exp)
-    {
-        expression = exp; 
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.internal.core.parser.ast.IASTArrayModifier#getExpression()
-     */
-    public IASTExpression getExpression()
-    {
-        return expression;
-    }
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExceptionSpecification.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExceptionSpecification.java,v
retrieving revision 1.2
diff -u -r1.2 ASTExceptionSpecification.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExceptionSpecification.java	9 Jul 2003 00:47:42 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTExceptionSpecification.java	14 Aug 2003 15:32:07 -0000
@@ -14,6 +14,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.cdt.core.parser.ISourceElementRequestor;
 import org.eclipse.cdt.core.parser.ITokenDuple;
 import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
 
@@ -41,5 +42,26 @@
     public Iterator getTypeIds()
     {
         return typeIds.iterator();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ISourceElementCallbackDelegate#acceptElement(org.eclipse.cdt.core.parser.ISourceElementRequestor)
+     */
+    public void acceptElement(ISourceElementRequestor requestor)
+    {
+    }
+
+    /* (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.23
diff -u -r1.23 QuickParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	13 Aug 2003 23:54:05 -0000	1.23
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	14 Aug 2003 15:32:07 -0000
@@ -20,7 +20,6 @@
 import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTArrayModifier;
 import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
@@ -163,17 +162,9 @@
 	/* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createExceptionSpecification(java.util.List)
      */
-    public IASTExceptionSpecification createExceptionSpecification(List typeIds)
+    public IASTExceptionSpecification createExceptionSpecification(IASTScope scope, List typeIds)
     {
         return new ASTExceptionSpecification( typeIds );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createArrayModifier(org.eclipse.cdt.core.parser.ast.IASTExpression)
-     */
-    public IASTArrayModifier createArrayModifier(IASTExpression exp)
-    {
-        return new ASTArrayModifier( exp );
     }
 
     /* (non-Javadoc)

Back to the top