Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [HEAD] - add Qualified Name support in Parser AST

CORE
        Removed DeclaratorDuple as it was obsolete.
        Fixed offsets in quickParse's IASTTypedefDeclaration 
implementation.
        Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search 
features)

TESTS
        Wrote new tests in QuickParseASTQualifiedNameTest.java and added 
it to ParserTestSuite's suite.
 
JohnC

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.23
diff -u -r1.23 ChangeLog
--- ChangeLog	18 Jul 2003 12:18:22 -0000	1.23
+++ ChangeLog	18 Jul 2003 12:40:25 -0000
@@ -1,7 +1,10 @@
+2003-07-18 John Camelon
+	Wrote new tests in QuickParseASTQualifiedNameTest.java and added it to ParserTestSuite's suite.
+
 2003-07-18 Peter Graves	
 	Removed un-needed file that was using a Java 1.4 reserved keyword (assert)
-
-2003-07-17
+	
+2003-07-17 John Camelon
 	Rewrote the entire DOMTests suite to now be AST tests.  
 	Removed DOMTests, BaseDOMTest, DOMFailedTests after methods were migrated to QuickParseASTTests & ASTFailedTests.  
 	Made sure every parser failed test had a defect number associated with it. 
Index: parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java,v
retrieving revision 1.1
diff -u -r1.1 BaseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java	17 Jul 2003 20:15:03 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java	18 Jul 2003 12:40:25 -0000
@@ -104,4 +104,15 @@
         fail( "We should not reach this point");
     }
 
+    protected void assertQualifiedName(String [] fromAST, String [] theTruth)
+    {
+    	assertNotNull( fromAST );
+    	assertNotNull( theTruth );
+    	assertEquals( fromAST.length, theTruth.length );
+    	for( int i = 0; i < fromAST.length; ++i )
+    	{
+    		assertEquals( fromAST[i], theTruth[i]);
+    	}
+    }
+
 }
Index: parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java,v
retrieving revision 1.5
diff -u -r1.5 ParserTestSuite.java
--- parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java	17 Jul 2003 20:15:03 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java	18 Jul 2003 12:40:25 -0000
@@ -35,6 +35,7 @@
 		suite.addTestSuite(MacroTests.class);
 		suite.addTestSuite( PreprocessorTest.class );
 		suite.addTestSuite( PreprocessorConditionalTest.class );
+		suite.addTestSuite( QuickParseASTQualifiedNameTest.class);
 		return suite;
 	}
 
Index: parser/org/eclipse/cdt/core/parser/tests/QuickParseASTQualifiedNameTest.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/tests/QuickParseASTQualifiedNameTest.java
diff -N parser/org/eclipse/cdt/core/parser/tests/QuickParseASTQualifiedNameTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/tests/QuickParseASTQualifiedNameTest.java	18 Jul 2003 12:40:25 -0000
@@ -0,0 +1,114 @@
+/**********************************************************************
+ * 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.core.parser.tests;
+
+import java.util.Iterator;
+
+import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
+import org.eclipse.cdt.core.parser.ast.IASTField;
+import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTVariable;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class QuickParseASTQualifiedNameTest extends BaseASTTest
+{
+    /**
+     * @param a
+     */
+    public QuickParseASTQualifiedNameTest(String a)
+    {
+        super(a);
+    }
+    
+    public void testNamespace() throws Exception
+    {
+    	IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)assertSoleDeclaration("namespace A { namespace B { int x; } }");
+    	assertQualifiedName( namespace.getFullyQualifiedName(), new String [] {"A" } );
+    	IASTNamespaceDefinition namespace2 = (IASTNamespaceDefinition)namespace.getDeclarations().next();
+		assertQualifiedName( namespace2.getFullyQualifiedName(), new String [] { "A", "B" } );
+    	
+    }
+    
+    public void testClass() throws Exception
+    {
+    	IASTAbstractTypeSpecifierDeclaration abs = (IASTAbstractTypeSpecifierDeclaration)assertSoleDeclaration( "class A { class B { int a; }; };"); 
+    	IASTClassSpecifier classSpec = (IASTClassSpecifier)abs.getTypeSpecifier();
+    	assertQualifiedName( classSpec.getFullyQualifiedName(), new String [] { "A" } );    	
+    	Iterator subDecls = classSpec.getDeclarations();
+    	abs = (IASTAbstractTypeSpecifierDeclaration)subDecls.next(); 
+    	assertFalse( subDecls.hasNext() );
+		classSpec = (IASTClassSpecifier)abs.getTypeSpecifier();
+		assertQualifiedName( classSpec.getFullyQualifiedName(), new String [] { "A", "B" } ); 
+    }
+    
+    public void testEnum() throws Exception
+    {
+    	Iterator declarations = parse( "class A { enum E1 { enumerator = 1 }; };\n namespace N { enum E2 { enumerator = 4 }; }\n" ).getDeclarations();
+    	IASTAbstractTypeSpecifierDeclaration abs = (IASTAbstractTypeSpecifierDeclaration)declarations.next(); 
+    	IASTClassSpecifier classSpec = (IASTClassSpecifier)abs.getTypeSpecifier();
+    	IASTEnumerationSpecifier enumSpec = (IASTEnumerationSpecifier)(((IASTAbstractTypeSpecifierDeclaration)classSpec.getDeclarations().next()).getTypeSpecifier());
+    	assertQualifiedName( enumSpec.getFullyQualifiedName(), new String[] { "A", "E1" } );
+    	IASTNamespaceDefinition nms = (IASTNamespaceDefinition)declarations.next(); 
+		enumSpec = (IASTEnumerationSpecifier)(((IASTAbstractTypeSpecifierDeclaration)nms.getDeclarations().next()).getTypeSpecifier());
+		assertQualifiedName( enumSpec.getFullyQualifiedName(), new String[] { "N", "E2" } );		
+    	assertFalse( declarations.hasNext() );
+    }
+    
+    public void testVariable() throws Exception
+    {
+    	IASTNamespaceDefinition topNMS = (IASTNamespaceDefinition)assertSoleDeclaration("namespace A { int x; namespace B { int y; } }");
+    	Iterator level1 = topNMS.getDeclarations();
+    	IASTVariable var = (IASTVariable)level1.next();
+    	assertQualifiedName( var.getFullyQualifiedName(), new String[] {"A","x"});
+    	Iterator level2 = ((IASTNamespaceDefinition)level1.next()).getDeclarations();
+		assertFalse( level1.hasNext());
+    	var = (IASTVariable)level2.next();
+		assertQualifiedName( var.getFullyQualifiedName(), new String[] {"A","B","y"});
+    }
+
+	public void testTypedef() throws Exception
+	{
+		IASTNamespaceDefinition topNMS = (IASTNamespaceDefinition)
+			assertSoleDeclaration("namespace FLEA { typedef int GODS_INT; class ANTHONY { typedef ANTHONY * tonyPointer; }; }");
+		Iterator level1 = topNMS.getDeclarations();
+		assertQualifiedName( ((IASTTypedefDeclaration)level1.next()).getFullyQualifiedName(), new String [] { "FLEA", "GODS_INT" } );
+		assertQualifiedName( ((IASTTypedefDeclaration)((IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)level1.next()).getTypeSpecifier()).getDeclarations().next()).getFullyQualifiedName(), new String [] { "FLEA", "ANTHONY", "tonyPointer" } ); 
+	}
+    
+
+	public void testMembers() throws Exception
+	{
+		IASTNamespaceDefinition topNMS = 
+			(IASTNamespaceDefinition)assertSoleDeclaration( "namespace John { class David { int Shannon; void Camelon(); }; } ");
+		Iterator members = 
+			((IASTClassSpecifier)((IASTAbstractTypeSpecifierDeclaration)topNMS.getDeclarations().next()).getTypeSpecifier()).getDeclarations();
+		assertQualifiedName( ((IASTField)members.next()).getFullyQualifiedName(), new String[] { "John", "David", "Shannon" } );
+		assertQualifiedName( ((IASTMethod)members.next()).getFullyQualifiedName(), new String[] { "John", "David", "Camelon" } ); 
+	}
+	
+	public void testFunction() throws Exception
+	{
+		IASTNamespaceDefinition topNMS = 
+			(IASTNamespaceDefinition)assertSoleDeclaration( "namespace Bogdan { void Wears(); namespace Fancy { int Pants(); } }" );
+		Iterator members = topNMS.getDeclarations(); 
+		assertQualifiedName( ((IASTFunction)members.next()).getFullyQualifiedName(), new String[] { "Bogdan", "Wears" } );
+		assertQualifiedName( ((IASTFunction)((IASTNamespaceDefinition)members.next()).getDeclarations().next()).getFullyQualifiedName(), new String[] { "Bogdan", "Fancy", "Pants" } );
+	}
+	
+}
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.78
diff -u -r1.78 ChangeLog
--- parser/ChangeLog	17 Jul 2003 20:15:13 -0000	1.78
+++ parser/ChangeLog	18 Jul 2003 12:40:10 -0000
@@ -1,3 +1,8 @@
+2003-07-18 John Camelon
+	Removed DeclaratorDuple as it was obsolete.
+	Fixed offsets in quickParse's IASTTypedefDeclaration implementation.
+	Fixed Bug 40436 - Fully Qualified Names Needed (for Indexer/Search features)
+
 2003-07-17 John Camelon
 	Removed IParserCallback.  
 	Partially converted DOM to ISourceElementRequestor (requires refactoring of CModelBuilder & StuctureComparator modules in near future).  
Index: parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java,v
retrieving revision 1.8
diff -u -r1.8 IASTClassSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	17 Jul 2003 20:15:13 -0000	1.8
+++ parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java	18 Jul 2003 12:40:10 -0000
@@ -18,7 +18,7 @@
  * @author jcamelon
  *
  */
-public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTScopedElement, IASTOffsetableNamedElement, IASTQualifiedNameElement {
+public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTScopedTypeSpecifier {
 
 	public class ClassNameType extends Enum {
 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java,v
retrieving revision 1.2
diff -u -r1.2 IASTEnumerationSpecifier.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java	24 Jun 2003 20:18:11 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/ast/IASTEnumerationSpecifier.java	18 Jul 2003 12:40:10 -0000
@@ -16,7 +16,7 @@
  * @author jcamelon
  *
  */
-public interface IASTEnumerationSpecifier extends IASTTypeSpecifier, IASTOffsetableNamedElement {
+public interface IASTEnumerationSpecifier extends IASTScopedTypeSpecifier, IASTOffsetableNamedElement {
 
 	public void addEnumerator( IASTEnumerator enumerator );
 	public Iterator getEnumerators(); 
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.11
diff -u -r1.11 IASTFactory.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	17 Jul 2003 20:15:13 -0000	1.11
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java	18 Jul 2003 12:40:10 -0000
@@ -82,9 +82,9 @@
         int startingOffset,
         int endOffset);
     public IASTEnumerationSpecifier createEnumerationSpecifier(
+        IASTScope scope,
         String name,
-        int startingOffset,
-        int nameOffset);
+        int startingOffset, int nameOffset);
     public void addEnumerator(
         IASTEnumerationSpecifier enumeration,
         String string,
Index: parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java,v
retrieving revision 1.4
diff -u -r1.4 IASTFunction.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java	9 Jul 2003 00:47:42 -0000	1.4
+++ parser/org/eclipse/cdt/core/parser/ast/IASTFunction.java	18 Jul 2003 12:40:10 -0000
@@ -16,7 +16,7 @@
  * @author jcamelon
  *
  */
-public interface IASTFunction extends IASTScope, IASTOffsetableNamedElement, IASTTemplatedDeclaration, IASTDeclaration {
+public interface IASTFunction extends IASTScope, IASTOffsetableNamedElement, IASTTemplatedDeclaration, IASTDeclaration, IASTQualifiedNameElement {
 	
 	public boolean isInline(); 
 	public boolean isFriend();
Index: parser/org/eclipse/cdt/core/parser/ast/IASTMember.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTMember.java,v
retrieving revision 1.1
diff -u -r1.1 IASTMember.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTMember.java	9 Jul 2003 00:47:42 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTMember.java	18 Jul 2003 12:40:10 -0000
@@ -14,7 +14,7 @@
  * @author jcamelon
  *
  */
-public interface IASTMember extends IASTDeclaration
+public interface IASTMember extends IASTDeclaration, IASTQualifiedNameElement
 {
 	public ASTAccessVisibility getVisiblity();
 }
Index: parser/org/eclipse/cdt/core/parser/ast/IASTScopedTypeSpecifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/ast/IASTScopedTypeSpecifier.java
diff -N parser/org/eclipse/cdt/core/parser/ast/IASTScopedTypeSpecifier.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/ast/IASTScopedTypeSpecifier.java	18 Jul 2003 12:40:10 -0000
@@ -0,0 +1,19 @@
+/**********************************************************************
+ * 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.core.parser.ast;
+
+/**
+ * @author jcamelon
+ *
+ */
+public interface IASTScopedTypeSpecifier extends IASTTypeSpecifier, IASTScopedElement, IASTQualifiedNameElement
+{
+}
Index: parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java,v
retrieving revision 1.1
diff -u -r1.1 IASTTypedefDeclaration.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java	17 Jul 2003 20:15:13 -0000	1.1
+++ parser/org/eclipse/cdt/core/parser/ast/IASTTypedefDeclaration.java	18 Jul 2003 12:40:10 -0000
@@ -14,7 +14,7 @@
  * @author jcamelon
  *
  */
-public interface IASTTypedefDeclaration extends IASTDeclaration, IASTOffsetableNamedElement {
+public interface IASTTypedefDeclaration extends IASTDeclaration, IASTOffsetableNamedElement, IASTQualifiedNameElement {
 	
 	public String getName(); 
 	public IASTAbstractDeclaration getAbstractDeclarator(); 
Index: parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java,v
retrieving revision 1.5
diff -u -r1.5 IASTVariable.java
--- parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java	10 Jul 2003 21:31:33 -0000	1.5
+++ parser/org/eclipse/cdt/core/parser/ast/IASTVariable.java	18 Jul 2003 12:40:10 -0000
@@ -14,7 +14,7 @@
  * @author jcamelon
  *
  */
-public interface IASTVariable extends IASTDeclaration, IASTOffsetableNamedElement {
+public interface IASTVariable extends IASTDeclaration, IASTOffsetableNamedElement, IASTQualifiedNameElement {
 
 	public boolean isAuto(); 
 	public boolean isRegister(); 
Index: parser/org/eclipse/cdt/internal/core/parser/DeclaratorDuple.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/DeclaratorDuple.java
diff -N parser/org/eclipse/cdt/internal/core/parser/DeclaratorDuple.java
--- parser/org/eclipse/cdt/internal/core/parser/DeclaratorDuple.java	17 Jul 2003 20:15:13 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,30 +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;
-
-/**
- * @author jcamelon
- */
-public class DeclaratorDuple {
-
-	public DeclaratorDuple( Declarator d )
-	{
-		declarator = d;
-	}
-	
-	private final Declarator declarator;  
-	/**
-	 * @return
-	 */
-	public Declarator getDeclarator() {
-		return declarator;
-	}
-}
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.70
diff -u -r1.70 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	17 Jul 2003 20:15:13 -0000	1.70
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	18 Jul 2003 12:40:12 -0000
@@ -766,18 +766,18 @@
                     sdw.isUnsigned(),
                     sdw.isTypeNamed()));
         
-        DeclaratorDuple d = null;
+        Declarator declarator = null;
         if (LT(1) != IToken.tSEMI)
             try
             {
-                d = initDeclarator(sdw);
+                declarator = initDeclarator(sdw);
                 
                 while (LT(1) == IToken.tCOMMA)
                 {
                     consume();
                     try
                     {
-                        d = initDeclarator(sdw);
+                        initDeclarator(sdw);
                     }
                     catch (Backtrack b)
                     {
@@ -800,12 +800,12 @@
             case IToken.tCOLON :
                 if (forKR)
                     throw backtrack;
-                ctorInitializer(d.getDeclarator());
+                ctorInitializer(declarator);
                 // Falling through on purpose
             case IToken.tLBRACE :
                 if (forKR)
                     throw backtrack;
-                d.getDeclarator().hasFunctionBody(true);
+                declarator.hasFunctionBody(true);
                 hasFunctionBody = true;
                 break;
             default :
@@ -869,7 +869,7 @@
                     }
                 }
    
-                handleFunctionBody(d.getDeclarator());
+                handleFunctionBody(declarator);
   
                 if (declaration instanceof IASTMethod)
                     requestor.exitMethodBody((IASTMethod)declaration);
@@ -987,7 +987,7 @@
         if (LT(1) != IToken.tSEMI)
             try
             {
-                DeclaratorDuple d = initDeclarator(sdw);
+                initDeclarator(sdw);
             }
             catch (Backtrack b)
             {
@@ -1633,12 +1633,11 @@
      * @return				declarator that this parsing produced.  
      * @throws Backtrack	request a backtrack
      */
-    protected DeclaratorDuple initDeclarator(
+    protected Declarator initDeclarator(
         DeclarationWrapper sdw)
         throws Backtrack
     {
-        DeclaratorDuple duple = declarator(sdw);
-        Declarator d = duple.getDeclarator();
+        Declarator d = declarator(sdw);
         // handle = initializerClause
         if (LT(1) == IToken.tASSIGN)
         {
@@ -1655,7 +1654,7 @@
             d.setConstructorExpression(astExpression);
         }
         sdw.addDeclarator(d);
-        return duple;
+        return d;
     }
     /**
      * 
@@ -1732,7 +1731,7 @@
      * @return				declarator that this parsing produced.
      * @throws Backtrack	request a backtrack
      */
-    protected DeclaratorDuple declarator(
+    protected Declarator declarator(
         IDeclaratorOwner owner)
         throws Backtrack
     {
@@ -1756,7 +1755,7 @@
             if (LT(1) == IToken.tLPAREN)
             {
                 consume();
-                DeclaratorDuple subDeclarator = declarator(d);
+                declarator(d);
                 consume(IToken.tRPAREN);
             }
             else if (LT(1) == IToken.t_operator)
@@ -1988,7 +1987,7 @@
         while (true);
         if (d.getOwner() instanceof Declarator)
              ((Declarator)d.getOwner()).setOwnedDeclarator(d);
-        return new DeclaratorDuple(d);
+        return d;
     }
     protected void operatorId(
         Declarator d,
@@ -2138,9 +2137,9 @@
         {
             IASTEnumerationSpecifier enumeration =
                 astFactory.createEnumerationSpecifier(
+                    sdw.getScope(),
                     ((identifier == null) ? "" : identifier.getImage()),
-                    mark.getOffset(),
-                    ((identifier == null)
+                    mark.getOffset(), ((identifier == null)
                         ? mark.getOffset()
                         : identifier.getOffset()));
             consume(IToken.tLBRACE);
Index: parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java,v
retrieving revision 1.11
diff -u -r1.11 FullParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java	17 Jul 2003 20:15:13 -0000	1.11
+++ parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java	18 Jul 2003 12:40:12 -0000
@@ -206,7 +206,7 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createEnumerationSpecifier(java.lang.String, int)
      */
-    public IASTEnumerationSpecifier createEnumerationSpecifier(String name, int startingOffset, int nameOffset)
+    public IASTEnumerationSpecifier createEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int nameOffset)
     {
         // TODO Auto-generated method stub
         return null;
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java,v
retrieving revision 1.8
diff -u -r1.8 ASTClassSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	17 Jul 2003 20:15:13 -0000	1.8
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java	18 Jul 2003 12:40:12 -0000
@@ -24,7 +24,7 @@
  * @author jcamelon
  *
  */
-public class ASTClassSpecifier implements IASTQClassSpecifier, IASTQScope
+public class ASTClassSpecifier extends ASTScopedTypeSpecifier implements IASTQClassSpecifier, IASTQScope
 {
     
     private final IASTScope scope;
@@ -36,6 +36,7 @@
         ASTAccessVisibility access,
         IASTTemplate ownerTemplate)
     {
+    	super( scope, name );
         this.scope = scope; 
         qualifiedNameElement = new ASTQualifiedNamedElement( scope, name );
         classNameType = type;
@@ -151,20 +152,7 @@
     {
         baseClauses.add(baseSpecifier);
     }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement#getFullyQualifiedName()
-     */
-    public String[] getFullyQualifiedName()
-    {
-        return qualifiedNameElement.getFullyQualifiedName();
-    }
-    /**
-     * @return
-     */
-    public IASTScope getOwnerScope()
-    {
-        return scope;
-    }
+
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTClassSpecifier#setCurrentVisibility(org.eclipse.cdt.core.parser.ast.ASTAccessVisibility)
      */
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java,v
retrieving revision 1.2
diff -u -r1.2 ASTEnumerationSpecifier.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java	17 Jul 2003 20:15:13 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTEnumerationSpecifier.java	18 Jul 2003 12:40:12 -0000
@@ -18,13 +18,14 @@
 import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
 import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
+import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
 
 /**
  * @author jcamelon
  *
  */
-public class ASTEnumerationSpecifier
+public class ASTEnumerationSpecifier extends ASTScopedTypeSpecifier
     implements IASTEnumerationSpecifier, IASTOffsetableNamedElement
 {
 	private final String name; 
@@ -34,8 +35,9 @@
      * @param name
      * @param startingOffset
      */
-    public ASTEnumerationSpecifier(String name, int startingOffset, int nameOffset)
+    public ASTEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int nameOffset)
     {
+    	super( scope, name );
         this.name = name;
         offsets.setNameOffset( nameOffset );
         offsets.setStartingOffset( startingOffset);
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java,v
retrieving revision 1.3
diff -u -r1.3 ASTFunction.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTFunction.java	18 Jul 2003 12:40:12 -0000
@@ -17,6 +17,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplate;
 import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
@@ -46,8 +47,10 @@
 			ownerTemplate.setOwnedDeclaration( this );
         offsets.setStartingOffset( startOffset );
         offsets.setNameOffset( nameOffset );
+        qualifiedName = new ASTQualifiedNamedElement( scope, name );
     }
     
+    private final IASTQualifiedNameElement qualifiedName; 
     private final IASTTemplate ownerTemplateDeclaration;
     private NamedOffsets offsets = new NamedOffsets();
     private List  declarations = new ArrayList(); 
@@ -162,5 +165,12 @@
     public Iterator getDeclarations()
     {
         return declarations.iterator();
+    }
+    /* (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/quick/ASTMethod.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTMethod.java,v
retrieving revision 1.2
diff -u -r1.2 ASTMethod.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTMethod.java	10 Jul 2003 21:31:34 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTMethod.java	18 Jul 2003 12:40:12 -0000
@@ -15,6 +15,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTAbstractDeclaration;
 import org.eclipse.cdt.core.parser.ast.IASTExceptionSpecification;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
+import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTTemplate;
 /**
@@ -31,6 +32,7 @@
     private final boolean isVirtual;
     private final boolean isVolatile;
     private final ASTAccessVisibility visibility;
+    private final IASTQualifiedNameElement qualifiedName;
     /**
      * @param scope
      * @param name
@@ -84,6 +86,7 @@
         this.isConst = isConst;
         this.isVolatile = isVolatile;
         this.visibility = visibility;
+        qualifiedName = new ASTQualifiedNamedElement( scope, name );
     }
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTMethod#isVirtual()
@@ -141,6 +144,13 @@
     public ASTAccessVisibility getVisiblity()
     {
         return visibility;
+    }
+    /* (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.ast.IASTMember#getOwnerClassSpecifier()
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedElement.java,v
retrieving revision 1.1
diff -u -r1.1 ASTQualifiedNamedElement.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedElement.java	17 Jul 2003 20:15:13 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTQualifiedNamedElement.java	18 Jul 2003 12:40:12 -0000
@@ -15,6 +15,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
+import org.eclipse.cdt.core.parser.ast.IASTQualifiedNameElement;
 import org.eclipse.cdt.core.parser.ast.IASTScope;
 import org.eclipse.cdt.core.parser.ast.IASTScopedElement;
 
@@ -22,7 +23,7 @@
  * @author jcamelon
  *
  */
-public class ASTQualifiedNamedElement 
+public class ASTQualifiedNamedElement implements IASTQualifiedNameElement
 {
 
     /**
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTScopedTypeSpecifier.java	18 Jul 2003 12:40:12 -0000
@@ -0,0 +1,37 @@
+/**********************************************************************
+ * 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.IASTScope;
+import org.eclipse.cdt.core.parser.ast.IASTScopedTypeSpecifier;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ASTScopedTypeSpecifier extends ASTQualifiedNamedElement implements IASTScopedTypeSpecifier
+{
+    private final IASTScope scope;
+    
+    public ASTScopedTypeSpecifier( IASTScope scope, String name )
+    {
+    	super( scope, name );
+    	this.scope = scope;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTScopedElement#getOwnerScope()
+     */
+    public IASTScope getOwnerScope()
+    {
+        return scope;
+    }
+
+}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedef.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedef.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedef.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedef.java	17 Jul 2003 20:15:13 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,101 +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.IASTAbstractDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTScope;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
-import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
-
-/**
- * @author jcamelon
- *
- */
-public class ASTTypedef extends ASTDeclaration implements IASTTypedefDeclaration
-{
-    private final String name;
-    private final IASTAbstractDeclaration mapping;
-    private NamedOffsets offsets = new NamedOffsets(); 
-    /**
-     * @param scope
-     * @param name
-     * @param mapping
-     */
-    public ASTTypedef(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int nameOffset)
-    {
-        super( scope );
-        this.name = name; 
-        this.mapping = mapping;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTTypedef#getName()
-     */
-    public String getName()
-    {
-        return name;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTTypedef#getAbstractDeclarator()
-     */
-    public IASTAbstractDeclaration getAbstractDeclarator()
-    {
-        return mapping;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
-     */
-    public int getElementNameOffset()
-    {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
-     */
-    public void setElementNameOffset(int o)
-    {
-        // TODO Auto-generated method stub
-        
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
-     */
-    public void setStartingOffset(int o)
-    {
-        // TODO Auto-generated method stub
-        
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
-     */
-    public void setEndingOffset(int o)
-    {
-        // TODO Auto-generated method stub
-        
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
-     */
-    public int getElementStartingOffset()
-    {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
-     */
-    public int getElementEndingOffset()
-    {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-}
Index: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java
diff -N parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTTypedefDeclaration.java	18 Jul 2003 12:40:12 -0000
@@ -0,0 +1,107 @@
+/**********************************************************************
+ * 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.IASTAbstractDeclaration;
+import org.eclipse.cdt.core.parser.ast.IASTScope;
+import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
+import org.eclipse.cdt.internal.core.parser.ast.NamedOffsets;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class ASTTypedefDeclaration extends ASTDeclaration implements IASTTypedefDeclaration
+{
+    private final String name;
+    private final IASTAbstractDeclaration mapping;
+    private NamedOffsets offsets = new NamedOffsets();
+    private final ASTQualifiedNamedElement qualifiedName; 
+    /**
+     * @param scope
+     * @param name
+     * @param mapping
+     */
+    public ASTTypedefDeclaration(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int nameOffset)
+    {
+        super( scope );
+        this.name = name; 
+        this.mapping = mapping;
+        setStartingOffset(startingOffset);
+        setElementNameOffset(nameOffset);
+        qualifiedName = new ASTQualifiedNamedElement( scope, name );
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTTypedef#getName()
+     */
+    public String getName()
+    {
+        return name;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTTypedef#getAbstractDeclarator()
+     */
+    public IASTAbstractDeclaration getAbstractDeclarator()
+    {
+        return mapping;
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#getElementNameOffset()
+     */
+    public int getElementNameOffset()
+    {
+        return offsets.getElementNameOffset();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement#setNameOffset(int)
+     */
+    public void setElementNameOffset(int o)
+    {
+        offsets.setNameOffset(o);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setStartingOffset(int)
+     */
+    public void setStartingOffset(int o)
+    {
+        offsets.setStartingOffset(o);
+        
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#setEndingOffset(int)
+     */
+    public void setEndingOffset(int o)
+    {
+        offsets.setEndingOffset(o);
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementStartingOffset()
+     */
+    public int getElementStartingOffset()
+    {
+        return offsets.getElementStartingOffset();
+    }
+    /* (non-Javadoc)
+     * @see org.eclipse.cdt.core.parser.ast.IASTOffsetableElement#getElementEndingOffset()
+     */
+    public int getElementEndingOffset()
+    {
+        return offsets.getElementEndingOffset();
+    }
+    /* (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/quick/ASTVariable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java,v
retrieving revision 1.3
diff -u -r1.3 ASTVariable.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java	17 Jul 2003 20:15:13 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTVariable.java	18 Jul 2003 12:40:13 -0000
@@ -32,7 +32,8 @@
     private final boolean isRegister;
     private final boolean isStatic;
     private final String name;
-    private NamedOffsets offsets = new NamedOffsets(); 
+    private NamedOffsets offsets = new NamedOffsets();
+    private final ASTQualifiedNamedElement qualifiedName; 
     /**
      * @param scope
      */
@@ -49,6 +50,7 @@
 		this.isRegister = isRegister;
 		this.isStatic = isStatic;
 		this.name = name;
+		qualifiedName = new ASTQualifiedNamedElement( scope, name );
 
     }
     /* (non-Javadoc)
@@ -163,6 +165,13 @@
 	{
 	    offsets.setNameOffset(o);
 	}
+    /* (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/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.11
diff -u -r1.11 QuickParseASTFactory.java
--- parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	17 Jul 2003 20:15:13 -0000	1.11
+++ parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java	18 Jul 2003 12:40:13 -0000
@@ -141,9 +141,9 @@
     /* (non-Javadoc)
      * @see org.eclipse.cdt.core.parser.ast.IASTFactory#createEnumerationSpecifier(java.lang.String, int)
      */
-    public IASTEnumerationSpecifier createEnumerationSpecifier(String name, int startingOffset, int nameOffset)
+    public IASTEnumerationSpecifier createEnumerationSpecifier(IASTScope scope, String name, int startingOffset, int nameOffset)
     {
-        return new ASTEnumerationSpecifier( name, startingOffset, nameOffset );
+        return new ASTEnumerationSpecifier( scope, name, startingOffset, nameOffset );
     }
 
     /* (non-Javadoc)
@@ -292,7 +292,7 @@
      */
     public IASTTypedefDeclaration createTypedef(IASTScope scope, String name, IASTAbstractDeclaration mapping, int startingOffset, int nameOffset)
     {
-        return new ASTTypedef( scope, name, mapping, startingOffset, nameOffset );
+        return new ASTTypedefDeclaration( scope, name, mapping, startingOffset, nameOffset );
     }
 
     /* (non-Javadoc)

Back to the top