[
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)