Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Parser Patch - Callback purging, the odd bug fix.

CORE
	Fixed defect 36073.
	Fixed error handling for unterminated strings in Scanner.
	Fixed offset for inclusions in the outline view.  
	Significantly updated callback structure to better suite the nature
of the Code Model.
	Updated all callbacks and parser to accommodate altered callbacks.  

TESTS
	Added DOMTests::testBug36073().

JohnC


Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.19
diff -u -r1.19 ChangeLog
--- ChangeLog	4 Apr 2003 14:05:22 -0000	1.19
+++ ChangeLog	4 Apr 2003 20:21:41 -0000
@@ -1,3 +1,6 @@
+2003-04-04 John Camelon
+	Added DOMTests::testBug36073().
+
 2003-04-03 John Camelon
 	Updated ScannerTest::testSimpleIfdef() for bug36019.  
 	Updated ScannerTest::testNumerics() for bug36020.  
Index: parser/org/eclipse/cdt/core/parser/tests/DOMTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java,v
retrieving revision 1.13
diff -u -r1.13 DOMTests.java
--- parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	4 Apr 2003 14:05:22 -0000	1.13
+++ parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	4 Apr 2003 20:21:42 -0000
@@ -1015,6 +1015,18 @@
 		assertEquals( spec.getClassKey(), ClassKey.t_struct );
 		assertEquals( spec.getName().toString(), "TTest::STest" );
 	}
+	
+	public void testBug36073() throws Exception
+	{
+		StringWriter writer = new StringWriter(); 
+		writer.write( "class A{\n" ); 
+		writer.write( "int x;\n" ); 
+		writer.write( "public:\n" ); 
+		writer.write( "A(const A&);\n" ); 
+		writer.write( "};\n" ); 
+		writer.write( "A::A(const A&v) : x(v.x) { }\n" );
+		TranslationUnit tu = parse( writer.toString() ); 
+	}
 
 }
 
Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java,v
retrieving revision 1.14
diff -u -r1.14 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	4 Apr 2003 18:45:09 -0000	1.14
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	4 Apr 2003 20:20:23 -0000
@@ -65,8 +65,9 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#classSpecifierName()
 	 */
-	public void classSpecifierName(Object classSpecifier) {
+	public Object classSpecifierName(Object classSpecifier) {
 		((ClassSpecifier)classSpecifier).setName(currName);
+		return classSpecifier;
 	}
 
 	/**
@@ -94,14 +95,15 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorId(org.eclipse.cdt.internal.core.newparser.Token)
 	 */
-	public void declaratorId(Object declarator) {
+	public Object declaratorId(Object declarator) {
 		((Declarator)declarator).setName(currName);
+		return declarator;
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declSpecifier(org.eclipse.cdt.internal.core.newparser.Token)
 	 */
-	public void simpleDeclSpecifier(Object Container, Token specifier) {
+	public Object simpleDeclSpecifier(Object Container, Token specifier) {
 		DeclSpecifier.Container decl = (DeclSpecifier.Container)Container;
 		DeclSpecifier declSpec = decl.getDeclSpecifier(); 
 		if( declSpec == null )
@@ -110,7 +112,8 @@
 			decl.setDeclSpecifier( declSpec ); 
 		}
 
-		declSpec.setType( specifier );		
+		declSpec.setType( specifier );
+		return decl;		
 	}
 
 
@@ -219,13 +222,14 @@
 		
 	}
 
-	public void baseSpecifierVirtual( Object baseSpecifier, boolean virtual )
+	public Object baseSpecifierVirtual( Object baseSpecifier, boolean virtual )
 	{
 		BaseSpecifier bs = (BaseSpecifier)baseSpecifier; 
 		bs.setVirtual( virtual );
+		return bs;
 	}
 
-	public void baseSpecifierVisibility( Object baseSpecifier, Token visibility )
+	public Object baseSpecifierVisibility( Object baseSpecifier, Token visibility )
 	{
 		int access = AccessSpecifier.v_public;  
 		switch( visibility.type )
@@ -244,12 +248,14 @@
 		}
 	
 		((BaseSpecifier)baseSpecifier).setAccess(access);  
+		return baseSpecifier;
 	}
 
 	
-	public void baseSpecifierName( Object baseSpecifier )
+	public Object baseSpecifierName( Object baseSpecifier )
 	{
 		((BaseSpecifier)baseSpecifier).setName(currName);		
+		return baseSpecifier;
 	}
 	
 	public Object parameterDeclarationBegin( Object container )
@@ -299,7 +305,8 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
 	 */
-	public void classSpecifierSafe(Object classSpecifier) {
+	public Object classSpecifierSafe(Object classSpecifier) {
+		return classSpecifier;
 	}
 
 	/**
@@ -335,14 +342,16 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
 	 */
-	public void elaboratedTypeSpecifierName(Object elab) {
+	public Object elaboratedTypeSpecifierName(Object elab) {
 		((ElaboratedTypeSpecifier)elab).setName( currName );
+		return elab;
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
 	 */
-	public void simpleDeclSpecifierName(Object declaration) {
+	public Object simpleDeclSpecifierName(Object declaration) {
+		return declaration;
 	}
 
 	/* (non-Javadoc)
@@ -354,7 +363,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void classMemberVisibility(Object classSpecifier, Token visibility) {
+	public Object classMemberVisibility(Object classSpecifier, Token visibility) {
 		ClassSpecifier spec = (ClassSpecifier)classSpecifier;
 		switch( visibility.getType() )
 		{
@@ -368,6 +377,7 @@
 				spec.setCurrentVisibility( AccessSpecifier.v_private );
 				break;
 		}
+		return spec;
 	}
 
 	/* (non-Javadoc)
@@ -391,14 +401,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
 	 */
-	public void pointerOperatorName(Object ptrOperator) {
+	public Object pointerOperatorName(Object ptrOperator) {
 		// TODO Auto-generated method stub
+		return ptrOperator;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorType(Object ptrOperator, Token type) {
+	public Object pointerOperatorType(Object ptrOperator, Token type) {
 		PointerOperator ptrOp = (PointerOperator)ptrOperator;
 		switch( type.getType() )
 		{
@@ -411,12 +422,13 @@
 			default:
 				break;
 		}
+		return ptrOp;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+	public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
 		PointerOperator ptrOp = (PointerOperator)ptrOperator;
 		switch( modifier.getType() )
 		{
@@ -429,12 +441,13 @@
 			default:
 				break;
 		}
+		return ptrOp;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void declaratorCVModifier(Object declarator, Token modifier) {
+	public Object declaratorCVModifier(Object declarator, Token modifier) {
 		Declarator decl = (Declarator)declarator;
 		switch( modifier.getType() )
 		{
@@ -447,7 +460,7 @@
 			default:
 				break;
 		}
-		
+		return decl;
 	}
 
 	/* (non-Javadoc)
@@ -472,17 +485,20 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object)
 	 */
-	public void declaratorThrowExceptionName(Object declarator ) {
+	public Object declaratorThrowExceptionName(Object declarator ) 
+	{
 		Declarator decl = (Declarator)declarator; 
-		decl.getExceptionSpecifier().addTypeName( currName ); 
+		decl.getExceptionSpecifier().addTypeName( currName );
+		return decl; 
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
 	 */
-	public void declaratorThrowsException(Object declarator) {
+	public Object declaratorThrowsException(Object declarator) {
 		Declarator decl = (Declarator)declarator; 
-		decl.getExceptionSpecifier().setThrowsException(true); 
+		decl.getExceptionSpecifier().setThrowsException(true);
+		return decl;
 	}
 
 	/* (non-Javadoc)
@@ -498,9 +514,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
 	 */
-	public void namespaceDefinitionId(Object namespace) {
+	public Object namespaceDefinitionId(Object namespace) {
 		NamespaceDefinition ns = (NamespaceDefinition)namespace;
 		ns.setName( currName );
+		return ns;
 	}
 
 	/* (non-Javadoc)
@@ -546,9 +563,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
 	 */
-	public void usingDirectiveNamespaceId(Object dir) {
+	public Object usingDirectiveNamespaceId(Object dir) {
 		UsingDirective directive = (UsingDirective)dir;
 		directive.setNamespaceName( currName );
+		return directive;
 	}
 
 	/* (non-Javadoc)
@@ -571,10 +589,11 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
 	 */
-	public void usingDeclarationMapping(Object decl, boolean isTypename) {
+	public Object usingDeclarationMapping(Object decl, boolean isTypename) {
 		UsingDeclaration declaration = (UsingDeclaration)decl;
 		declaration.setMappedName( currName );
 		declaration.setTypename( isTypename );
+		return declaration;
 	}
 
 	/* (non-Javadoc)
@@ -610,9 +629,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
 	 */
-	public void enumSpecifierId(Object enumSpec) {
+	public Object enumSpecifierId(Object enumSpec) {
 		EnumerationSpecifier es = (EnumerationSpecifier)enumSpec;
 		es.setName( currName );
+		return es;
 	}
 
 	/* (non-Javadoc)
@@ -642,9 +662,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
 	 */
-	public void enumeratorId(Object enumDefn) {
+	public Object enumeratorId(Object enumDefn) {
 		EnumeratorDefinition definition = (EnumeratorDefinition)enumDefn;
 		definition.setName( currName );
+		return definition;
 	}
 
 	/* (non-Javadoc)
@@ -704,9 +725,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
 	 */
-	public void constructorChainElementId(Object element) {
+	public Object constructorChainElementId(Object element) {
 		ConstructorChainElement ele = (ConstructorChainElement)element;
 		ele.setName(currName);
+		return ele;
 	}
 
 	/* (non-Javadoc)
@@ -759,9 +781,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
 	 */
-	public void declaratorPureVirtual(Object declarator) {
+	public Object declaratorPureVirtual(Object declarator) {
 		Declarator d = (Declarator)declarator;
 		d.setPureVirtual(true);
+		return d;
 	}
 
 	/* (non-Javadoc)
@@ -814,15 +837,17 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
 	 */
-	public void templateTypeParameterName(Object typeParm) {
+	public Object templateTypeParameterName(Object typeParm) {
 		((TemplateParameter)typeParm).setName( currName );
+		return typeParm;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
 	 */
-	public void templateTypeParameterInitialTypeId(Object typeParm) {
+	public Object templateTypeParameterInitialTypeId(Object typeParm) {
 		((TemplateParameter)typeParm).setTypeId( currName );
+		return typeParm;
 	}
 
 	/* (non-Javadoc)
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.20
diff -u -r1.20 ChangeLog
--- parser/ChangeLog	4 Apr 2003 18:45:09 -0000	1.20
+++ parser/ChangeLog	4 Apr 2003 20:20:23 -0000
@@ -1,4 +1,10 @@
 2003-04-04 John Camelon
+	Fixed defect 36073.
+	Fixed error handling for unterminated strings in Scanner.
+	Significantly updated callback structure to better suite the nature of the Code Model.
+	Updated all callbacks and parser to accommodate altered callbacks.  
+
+2003-04-04 John Camelon
 	Fixed defect 35939.  Proper CElement::pos() is set on Simple Declarations, 
 	Class Specifications, Namespaces, Enumerations and Enumerators, Macros and Inclusions.  
 
Index: parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java,v
retrieving revision 1.21
diff -u -r1.21 NewModelBuilder.java
--- parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java	4 Apr 2003 18:45:09 -0000	1.21
+++ parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java	4 Apr 2003 20:20:23 -0000
@@ -71,13 +71,14 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#classSpecifierName() 
 	 */
-	public void classSpecifierName(Object classSpecifier) 
+	public Object classSpecifierName(Object classSpecifier) 
 	{
 		if( classSpecifier instanceof SimpleDeclarationWrapper )
 		{
 			SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)classSpecifier;
 			wrapper.setName( currName );
 		}
+		return classSpecifier;
 	}
 
 	/**
@@ -162,7 +163,7 @@
 		Include elem = new Include(((TranslationUnit)translationUnit.getElement()), includeFile);
 		((TranslationUnit)translationUnit.getElement()).addChild(elem);
 		elem.setIdPos(offset, includeFile.length());
-		elem.setPos(inclusionBeginOffset, offset + includeFile.length() + 1 );
+		elem.setPos(inclusionBeginOffset, inclusionBeginOffset - offset + includeFile.length() + 1 );
 	}
 
 	/**
@@ -200,17 +201,19 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token)
 	 */
-	public void simpleDeclSpecifier(Object declSpec, Token specifier) { 
+	public Object simpleDeclSpecifier(Object declSpec, Token specifier) { 
 		DeclSpecifier declSpecifier = (DeclSpecifier)declSpec;  
-		declSpecifier.setType( specifier ); 				
+		declSpecifier.setType( specifier ); 
+		return declSpecifier;			
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorId(java.lang.Object)
 	 */
-	public void declaratorId(Object declarator) {
+	public Object declaratorId(Object declarator) {
 		Declarator decl = (Declarator)declarator; 
 		decl.setName( currName ); 
+		return decl;
 	}
 
 
@@ -241,21 +244,23 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierName(java.lang.Object)
 	 */
-	public void baseSpecifierName(Object baseSpecifier) {
+	public Object baseSpecifierName(Object baseSpecifier) {
+		return baseSpecifier;
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean)
 	 */
-	public void baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+	public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+		return baseSpecifier;
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token)
 	 */
-	public void baseSpecifierVisibility(
-		Object baseSpecifier,
-		Token visibility) {
+	public Object baseSpecifierVisibility(	Object baseSpecifier,	Token visibility) 
+	{
+		return null;
 	}
 
 	/**
@@ -280,12 +285,12 @@
 	 * @see org.eclipse.cdt.internal.core.newparser.IParserCallback#parameterDeclarationBegin(java.lang.Object, org.eclipse.cdt.internal.core.newparser.Token)
 	 */
 	public Object parameterDeclarationBegin(
-		Object container ) {
+		Object container ) 
+	{
 		List parameterDeclarationClause = (List)container; 
 		Parameter p = new Parameter();
 		parameterDeclarationClause.add( p );
 		return p; 
-		
 	}
 
 	/**
@@ -338,7 +343,7 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
 	 */
-	public void classSpecifierSafe(Object classSpecifier) {
+	public Object classSpecifierSafe(Object classSpecifier) {
 		SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)classSpecifier;
 		int kind;
 		
@@ -370,6 +375,7 @@
 			elem.setTypeName( wrapper.getClassKind().getImage() );
 			elem.setIdPos(wrapper.getClassKind().getOffset(), wrapper.getClassKind().getLength());		
 		}
+		return wrapper;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierBegin(java.lang.Object)
@@ -399,12 +405,13 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
 	 */
-	public void elaboratedTypeSpecifierName(Object elab) {
+	public Object elaboratedTypeSpecifierName(Object elab) {
 		if( elab instanceof SimpleDeclarationWrapper )
 		{
 			SimpleDeclarationWrapper wrapper = (SimpleDeclarationWrapper)elab;
 			wrapper.setName( currName );
 		}
+		return elab;
 	}
 
 
@@ -412,9 +419,10 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
 	 */
-	public void simpleDeclSpecifierName(Object declaration) {
+	public Object simpleDeclSpecifierName(Object declaration) {
 		DeclSpecifier declSpecifier = (DeclSpecifier)declaration;  
 		declSpecifier.setName( currName ); 
+		return declSpecifier;
 	}
 
 	/* (non-Javadoc)
@@ -428,7 +436,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void classMemberVisibility(Object classSpecifier, Token visibility) {
+	public Object classMemberVisibility(Object classSpecifier, Token visibility) {
 		SimpleDeclarationWrapper spec = (SimpleDeclarationWrapper)classSpecifier;
 		switch( visibility.getType() )
 		{
@@ -442,6 +450,7 @@
 				spec.setCurrentVisibility( AccessSpecifier.v_private );
 				break;
 		}
+		return spec;
 	}
 
 	/* (non-Javadoc)
@@ -466,14 +475,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
 	 */
-	public void pointerOperatorName(Object ptrOperator) {
+	public Object pointerOperatorName(Object ptrOperator) {
 		// TODO Auto-generated method stub
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorType(Object ptrOperator, Token type) {
+	public Object pointerOperatorType(Object ptrOperator, Token type) {
 		PointerOperator po=(PointerOperator)ptrOperator;
 		switch( type.getType() )
 		{
@@ -484,12 +494,14 @@
 				po.setKind( PointerOperator.k_reference );
 				break;
 			default: 
-		}	}
+		}
+		return po;	
+	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+	public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
 		PointerOperator po=(PointerOperator)ptrOperator;
 		switch( modifier.getType() )
 		{
@@ -500,13 +512,14 @@
 				po.setVolatile( true );
 				break;
 			default: 
-		}	
+		}
+		return po;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void declaratorCVModifier(Object declarator, Token modifier) {
+	public Object declaratorCVModifier(Object declarator, Token modifier) {
 		Declarator d = (Declarator)declarator;
 		switch( modifier.getType() )
 		{
@@ -519,6 +532,7 @@
 			default:
 				break;
 		}
+		return d;
 	}
 
 	/* (non-Javadoc)
@@ -539,17 +553,17 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object)
 	 */
-	public void declaratorThrowExceptionName(Object declarator) {
+	public Object declaratorThrowExceptionName(Object declarator) {
 		// TODO Auto-generated method stub
-		
+		return declarator;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
 	 */
-	public void declaratorThrowsException(Object declarator) {
+	public Object declaratorThrowsException(Object declarator) {
 		// TODO Auto-generated method stub
-		
+		return declarator;
 	}
 
 	/* (non-Javadoc)
@@ -565,7 +579,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
 	 */
-	public void namespaceDefinitionId(Object namespace) {
+	public Object namespaceDefinitionId(Object namespace) {
 		// set wrapper name to current name
 		NamespaceWrapper wrapper = (NamespaceWrapper)namespace;
 		wrapper.setName( currName );
@@ -577,8 +591,9 @@
 		wrapper.setElement(newNameSpace);
 		realParent.addChild( newNameSpace );
 
-		// set the positions
-		newNameSpace.setIdPos(wrapper.getName().getStartOffset(), namespaceName.length());	
+		// set the ID position
+		newNameSpace.setIdPos(wrapper.getName().getStartOffset(), namespaceName.length());
+		return wrapper;
 	}
 
 	/* (non-Javadoc)
@@ -623,9 +638,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
 	 */
-	public void usingDirectiveNamespaceId(Object container) {
+	public Object usingDirectiveNamespaceId(Object container) {
 		// TODO Auto-generated method stub
-		
+		return container;
 	}
 
 	/* (non-Javadoc)
@@ -647,9 +662,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
 	 */
-	public void usingDeclarationMapping(Object container, boolean isTypename) {
+	public Object usingDeclarationMapping(Object container, boolean isTypename) {
 		// TODO Auto-generated method stub
-		
+		return container;
 	}
 
 	/* (non-Javadoc)
@@ -688,8 +703,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
 	 */
-	public void enumSpecifierId(Object enumSpec) {
+	public Object enumSpecifierId(Object enumSpec) {
 		((EnumerationWrapper)enumSpec).setName( currName );
+		return enumSpec;
 	}
 
 	/* (non-Javadoc)
@@ -753,9 +769,10 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
 	 */
-	public void enumeratorId(Object enumDefn) {
+	public Object enumeratorId(Object enumDefn) {
 		EnumeratorWrapper wrapper = (EnumeratorWrapper)enumDefn; 
 		wrapper.setName( currName ); 
+		return wrapper;
 	}
 
 	/* (non-Javadoc)
@@ -817,9 +834,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
 	 */
-	public void constructorChainElementId(Object ctor) {
+	public Object constructorChainElementId(Object ctor) {
 		// TODO Auto-generated method stub
-		
+		return ctor;
 	}
 
 	/* (non-Javadoc)
@@ -869,9 +886,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
 	 */
-	public void declaratorPureVirtual(Object declarator) {
+	public Object declaratorPureVirtual(Object declarator) {
 		// TODO Auto-generated method stub
-		
+		return declarator;
 	}
 
 	/* (non-Javadoc)
@@ -909,17 +926,17 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
 	 */
-	public void templateTypeParameterName(Object typeParm) {
+	public Object templateTypeParameterName(Object typeParm) {
 		// TODO Auto-generated method stub
-		
+		return typeParm;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
 	 */
-	public void templateTypeParameterInitialTypeId(Object typeParm) {
+	public Object templateTypeParameterInitialTypeId(Object typeParm) {
 		// TODO Auto-generated method stub
-		
+		return typeParm;
 	}
 
 	/* (non-Javadoc)
@@ -927,7 +944,6 @@
 	 */
 	public void templateTypeParameterEnd(Object typeParm) {
 		// TODO Auto-generated method stub
-		
 	}
 
 	/* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java,v
retrieving revision 1.15
diff -u -r1.15 ExpressionEvaluator.java
--- parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	4 Apr 2003 18:45:09 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	4 Apr 2003 20:20:24 -0000
@@ -159,7 +159,8 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void simpleDeclSpecifier(Object Container, Token specifier) {
+	public Object simpleDeclSpecifier(Object Container, Token specifier) {
+		return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#nameBegin(org.eclipse.cdt.internal.core.parser.Token)
@@ -180,7 +181,8 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorId(java.lang.Object)
 	 */
-	public void declaratorId(Object declarator) {
+	public Object declaratorId(Object declarator) {
+		return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorAbort(java.lang.Object, java.lang.Object)
@@ -223,7 +225,8 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierName(java.lang.Object)
 	 */
-	public void classSpecifierName(Object classSpecifier) {
+	public Object classSpecifierName(Object classSpecifier) {
+		return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierEnd(java.lang.Object)
@@ -239,19 +242,22 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierName(java.lang.Object)
 	 */
-	public void baseSpecifierName(Object baseSpecifier) {
+	public Object baseSpecifierName(Object baseSpecifier) {
+		return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void baseSpecifierVisibility(
+	public Object baseSpecifierVisibility(
 		Object baseSpecifier,
 		Token visibility) {
+			return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean)
 	 */
-	public void baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+	public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+		return null;
 	}
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierEnd(java.lang.Object)
@@ -279,7 +285,8 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
 	 */
-	public void classSpecifierSafe(Object classSpecifier) {
+	public Object classSpecifierSafe(Object classSpecifier) {
+		return null;
 	}
 
 	/**
@@ -298,13 +305,15 @@
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
 	 */
-	public void elaboratedTypeSpecifierName(Object container) {
+	public Object elaboratedTypeSpecifierName(Object container) {
+		return null;
 	}
 
 	/**
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
 	 */
-	public void simpleDeclSpecifierName(Object declaration) {
+	public Object simpleDeclSpecifierName(Object declaration) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -318,7 +327,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void classMemberVisibility(Object classSpecifier, Token visibility) {
+	public Object classMemberVisibility(Object classSpecifier, Token visibility) {
+		return null;
 		
 		
 	}
@@ -342,7 +352,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
 	 */
-	public void pointerOperatorName(Object ptrOperator) {
+	public Object pointerOperatorName(Object ptrOperator) {
+		return null;
 		
 		
 	}
@@ -350,7 +361,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorType(Object ptrOperator, Token type) {
+	public Object pointerOperatorType(Object ptrOperator, Token type) {
+		return null;
 		
 		
 	}
@@ -358,7 +370,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+	public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+		return null;
 		
 		
 	}
@@ -366,7 +379,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void declaratorCVModifier(Object declarator, Token modifier) {
+	public Object declaratorCVModifier(Object declarator, Token modifier) {
+		return null;
 		
 		
 	}
@@ -389,7 +403,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object)
 	 */
-	public void declaratorThrowExceptionName(Object declarator) {
+	public Object declaratorThrowExceptionName(Object declarator) {
+		return null;
 		
 		
 	}
@@ -397,7 +412,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
 	 */
-	public void declaratorThrowsException(Object declarator) {
+	public Object declaratorThrowsException(Object declarator) {
+		return null;
 		
 		
 	}
@@ -413,7 +429,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
 	 */
-	public void namespaceDefinitionId(Object namespace) {
+	public Object namespaceDefinitionId(Object namespace) {
+		return null;
 		
 		
 	}
@@ -457,7 +474,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
 	 */
-	public void usingDirectiveNamespaceId(Object container) {
+	public Object usingDirectiveNamespaceId(Object container) {
+		return null;
 
 		
 	}
@@ -481,7 +499,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
 	 */
-	public void usingDeclarationMapping(Object container, boolean isTypename) {
+	public Object usingDeclarationMapping(Object container, boolean isTypename) {
+		return null;
 		
 		
 	}
@@ -520,7 +539,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
 	 */
-	public void enumSpecifierId(Object enumSpec) {
+	public Object enumSpecifierId(Object enumSpec) {
+		return null;
 		
 		
 	}
@@ -552,7 +572,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
 	 */
-	public void enumeratorId(Object enumDefn) {
+	public Object enumeratorId(Object enumDefn) {
+		return null;
 		
 		
 	}
@@ -606,7 +627,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
 	 */
-	public void constructorChainElementId(Object ctor) {
+	public Object constructorChainElementId(Object ctor) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -651,7 +673,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
 	 */
-	public void declaratorPureVirtual(Object declarator) {
+	public Object declaratorPureVirtual(Object declarator) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -683,13 +706,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
 	 */
-	public void templateTypeParameterName(Object typeParm) {
+	public Object templateTypeParameterName(Object typeParm) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
 	 */
-	public void templateTypeParameterInitialTypeId(Object typeParm) {
+	public Object templateTypeParameterInitialTypeId(Object typeParm) {
+		return null;
 	}
 
 	/* (non-Javadoc)
Index: parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java,v
retrieving revision 1.14
diff -u -r1.14 IParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	4 Apr 2003 18:45:09 -0000	1.14
+++ parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	4 Apr 2003 20:20:24 -0000
@@ -20,8 +20,8 @@
 	public void macro(String macroName, int macroNameOffset, int macroBeginOffset, int macroEndOffset);
 	
 	public Object simpleDeclarationBegin(Object Container, Token firstToken);
-	public void simpleDeclSpecifier(Object Container, Token specifier);
-	public void simpleDeclSpecifierName( Object declaration );
+	public Object simpleDeclSpecifier(Object Container, Token specifier);
+	public Object simpleDeclSpecifierName( Object declaration );
 	public void simpleDeclarationEnd(Object declaration, Token lastToken);
 
 	public Object parameterDeclarationBegin( Object Container ); 
@@ -31,23 +31,23 @@
 	public void nameEnd(Token lastToken);
 	
 	public Object declaratorBegin(Object container);
-	public void declaratorId(Object declarator);
+	public Object declaratorId(Object declarator);
 	public void declaratorAbort( Object container, Object declarator );
-	public void declaratorPureVirtual( Object declarator );
-	public void declaratorCVModifier( Object declarator, Token modifier );
-	public void declaratorThrowsException( Object declarator ); 
-	public void declaratorThrowExceptionName( Object declarator );
+	public Object declaratorPureVirtual( Object declarator );
+	public Object declaratorCVModifier( Object declarator, Token modifier );
+	public Object declaratorThrowsException( Object declarator ); 
+	public Object declaratorThrowExceptionName( Object declarator );
 	public void declaratorEnd(Object declarator);
 		
 	public Object arrayDeclaratorBegin( Object declarator );
 	public void arrayDeclaratorEnd( Object arrayQualifier );
 	
 	public Object pointerOperatorBegin( Object container );
-	public void   pointerOperatorType( Object ptrOperator, Token type );
-	public void   pointerOperatorName( Object ptrOperator );
-	public void   pointerOperatorCVModifier( Object ptrOperator, Token modifier );
-	public void	  pointerOperatorAbort( Object ptrOperator );
-	public void   pointerOperatorEnd( Object ptrOperator );
+	public Object pointerOperatorType( Object ptrOperator, Token type );
+	public Object pointerOperatorName( Object ptrOperator );
+	public Object pointerOperatorCVModifier( Object ptrOperator, Token modifier );
+	public void pointerOperatorAbort( Object ptrOperator );
+	public void pointerOperatorEnd( Object ptrOperator );
 		
 	public Object argumentsBegin( Object declarator );
 	public void argumentsEnd(Object parameterDeclarationClause);
@@ -56,16 +56,16 @@
 	public void functionBodyEnd(Object functionBody);
 	
 	public Object classSpecifierBegin(Object container, Token classKey);
-	public void classSpecifierName(Object classSpecifier);
+	public Object classSpecifierName(Object classSpecifier);
 	public void classSpecifierAbort( Object classSpecifier ); 
-	public void classSpecifierSafe( Object classSpecifier );
-	public void classMemberVisibility( Object classSpecifier, Token visibility );
+	public Object classSpecifierSafe( Object classSpecifier );
+	public Object classMemberVisibility( Object classSpecifier, Token visibility );
 	public void classSpecifierEnd(Object classSpecifier, Token closingBrace );
 	
 	public Object	baseSpecifierBegin( Object containingClassSpec );
-	public void	baseSpecifierName( Object baseSpecifier );
-	public void 	baseSpecifierVisibility( Object baseSpecifier, Token visibility );
-	public void 	baseSpecifierVirtual( Object baseSpecifier, boolean virtual );
+	public Object	baseSpecifierName( Object baseSpecifier );
+	public Object 	baseSpecifierVisibility( Object baseSpecifier, Token visibility );
+	public Object 	baseSpecifierVirtual( Object baseSpecifier, boolean virtual );
 	public void  	baseSpecifierEnd( Object baseSpecifier );
 	
 	public Object 	expressionBegin( Object container ); 
@@ -75,11 +75,11 @@
 	public void 	expressionEnd(Object expression );
 	
 	public Object	elaboratedTypeSpecifierBegin( Object container, Token classKey ); 
-	public void  	elaboratedTypeSpecifierName( Object elab ); 
+	public Object  	elaboratedTypeSpecifierName( Object elab ); 
 	public void 	elaboratedTypeSpecifierEnd( Object elab );
 	
 	public Object	namespaceDefinitionBegin( Object container, Token namespace ); 
-	public void		namespaceDefinitionId( Object namespace );
+	public Object	namespaceDefinitionId( Object namespace );
 	public void 	namespaceDefinitionAbort( Object namespace );
 	public void		namespaceDefinitionEnd( Object namespace, Token closingBrace );
 
@@ -87,22 +87,22 @@
 	public void     linkageSpecificationEnd( Object linkageSpec );
 	
 	public Object	usingDirectiveBegin( Object container );
-	public void		usingDirectiveNamespaceId( Object directive );
+	public Object	usingDirectiveNamespaceId( Object directive );
 	public void 	usingDirectiveAbort( Object directive ); 
 	public void		usingDirectiveEnd( Object directive );
 	
 	public Object	usingDeclarationBegin( Object container );
-	public void		usingDeclarationMapping( Object declaration, boolean isTypeName );
+	public Object	usingDeclarationMapping( Object declaration, boolean isTypeName );
 	public void		usingDeclarationAbort( Object declaration );
 	public void		usingDeclarationEnd( Object declaration );
 
 	public Object	enumSpecifierBegin( Object container, Token enumKey );
-	public void		enumSpecifierId( Object enumSpec );
+	public Object	enumSpecifierId( Object enumSpec );
 	public void		enumSpecifierAbort( Object enumSpec );
 	public void 	enumSpecifierEnd( Object enumSpec, Token closingBrace );
 	
 	public Object	enumeratorBegin( Object enumSpec );
-	public void		enumeratorId( Object enumDefn );
+	public Object	enumeratorId( Object enumDefn );
 	public void		enumeratorEnd( Object enumDefn, Token lastToken );
 	
 	public void		asmDefinition( Object container, String assemblyCode );
@@ -112,7 +112,7 @@
 	public void 	constructorChainEnd( Object ctor );
 	
 	public Object	constructorChainElementBegin( Object ctor );
-	public void		constructorChainElementId( Object element );
+	public Object	constructorChainElementId( Object element );
 	public void		constructorChainElementEnd( Object element );
 	
 	public Object	constructorChainElementExpressionListElementBegin( Object element ); 
@@ -132,9 +132,9 @@
 	public void		templateParameterListEnd( Object parameterList );
 	
 	public Object	templateTypeParameterBegin( Object templDecl, Token kind );
-	public void		templateTypeParameterName( Object typeParm );
+	public Object	templateTypeParameterName( Object typeParm );
 	public void		templateTypeParameterAbort( Object typeParm );
-	public void 	templateTypeParameterInitialTypeId( Object typeParm );
+	public Object 	templateTypeParameterInitialTypeId( Object typeParm );
 	public void 	templateTypeParameterEnd( Object typeParm );
 	
 }
Index: parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java,v
retrieving revision 1.14
diff -u -r1.14 NullParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	4 Apr 2003 18:45:09 -0000	1.14
+++ parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	4 Apr 2003 20:20:24 -0000
@@ -43,13 +43,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void simpleDeclSpecifier(Object Container, Token specifier) {
+	public Object simpleDeclSpecifier(Object Container, Token specifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
 	 */
-	public void simpleDeclSpecifierName(Object declaration) {
+	public Object simpleDeclSpecifierName(Object declaration) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -93,7 +95,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorId(java.lang.Object)
 	 */
-	public void declaratorId(Object declarator) {
+	public Object declaratorId(Object declarator) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -105,13 +108,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void declaratorCVModifier(Object declarator, Token modifier) {
+	public Object declaratorCVModifier(Object declarator, Token modifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowExceptionName(java.lang.Object)
 	 */
-	public void declaratorThrowExceptionName(Object exceptionSpec) {
+	public Object declaratorThrowExceptionName(Object exceptionSpec) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -143,19 +148,22 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorType(Object ptrOperator, Token type) {
+	public Object pointerOperatorType(Object ptrOperator, Token type) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
 	 */
-	public void pointerOperatorName(Object ptrOperator) {
+	public Object pointerOperatorName(Object ptrOperator) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+	public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -200,7 +208,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierName(java.lang.Object)
 	 */
-	public void classSpecifierName(Object classSpecifier) {
+	public Object classSpecifierName(Object classSpecifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -212,13 +221,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
 	 */
-	public void classSpecifierSafe(Object classSpecifier) {
+	public Object classSpecifierSafe(Object classSpecifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void classMemberVisibility(Object classSpecifier, Token visibility) {
+	public Object classMemberVisibility(Object classSpecifier, Token visibility) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -237,19 +248,22 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierName(java.lang.Object)
 	 */
-	public void baseSpecifierName(Object baseSpecifier) {
+	public Object baseSpecifierName(Object baseSpecifier) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
 	 */
-	public void baseSpecifierVisibility(Object baseSpecifier, Token visibility) {
+	public Object baseSpecifierVisibility(Object baseSpecifier, Token visibility) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean)
 	 */
-	public void baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+	public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -299,7 +313,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
 	 */
-	public void elaboratedTypeSpecifierName(Object elab) {
+	public Object elaboratedTypeSpecifierName(Object elab) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -311,7 +326,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
 	 */
-	public void declaratorThrowsException(Object declarator) {
+	public Object declaratorThrowsException(Object declarator) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -324,7 +340,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
 	 */
-	public void namespaceDefinitionId(Object namespace) {
+	public Object namespaceDefinitionId(Object namespace) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -363,7 +380,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
 	 */
-	public void usingDirectiveNamespaceId(Object container) {
+	public Object usingDirectiveNamespaceId(Object container) {
+		return null;
 		
 		
 	}
@@ -387,7 +405,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
 	 */
-	public void usingDeclarationMapping(Object container, boolean isTypename) {
+	public Object usingDeclarationMapping(Object container, boolean isTypename) {
+		return null;
 		
 		
 	}
@@ -420,7 +439,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
 	 */
-	public void enumSpecifierId(Object enumSpec) {
+	public Object enumSpecifierId(Object enumSpec) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -445,7 +465,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
 	 */
-	public void enumeratorId(Object enumDefn) {
+	public Object enumeratorId(Object enumDefn) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -495,7 +516,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
 	 */
-	public void constructorChainElementId(Object ctor) {
+	public Object constructorChainElementId(Object ctor) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -540,7 +562,8 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
 	 */
-	public void declaratorPureVirtual(Object declarator) {
+	public Object declaratorPureVirtual(Object declarator) {
+		return null;
 	}
 
 	/* (non-Javadoc)
@@ -572,13 +595,15 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
 	 */
-	public void templateTypeParameterName(Object typeParm) {
+	public Object templateTypeParameterName(Object typeParm) {
+		return null;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
 	 */
-	public void templateTypeParameterInitialTypeId(Object typeParm) {
+	public Object templateTypeParameterInitialTypeId(Object typeParm) {
+		return null;
 	}
 
 	/* (non-Javadoc)
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.22
diff -u -r1.22 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	4 Apr 2003 18:45:09 -0000	1.22
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	4 Apr 2003 20:20:25 -0000
@@ -78,12 +78,12 @@
 		Object translationUnit = null;
 		try{ translationUnit = callback.translationUnitBegin();} catch( Exception e ) {}
 		Token lastBacktrack = null;
-		Token lastToken;
+		Token checkToken;
 		while (true) {
 			try {
-				lastToken = LA(1);
+				checkToken = LA(1);
 				declaration( translationUnit );
-				if( LA(1) == lastToken )
+				if( LA(1) == checkToken )
 					consumeToNextSemicolon();
 			} catch (EndOfFile e) {
 				// Good
@@ -142,7 +142,7 @@
 			if( LT(1) == Token.tIDENTIFIER || LT(1) == Token.tCOLONCOLON )
 			{
 				name();
-				try{ callback.usingDirectiveNamespaceId( directive );} catch( Exception e ) {}
+				try{ directive = callback.usingDirectiveNamespaceId( directive );} catch( Exception e ) {}
 			}
 			else
 			{
@@ -178,7 +178,7 @@
 			{
 				//	optional :: and nested classes handled in name
 				name();
-				try{ callback.usingDeclarationMapping( usingDeclaration, typeName ); } catch( Exception e ) {}
+				try{ usingDeclaration = callback.usingDeclarationMapping( usingDeclaration, typeName ); } catch( Exception e ) {}
 			}
 			else
 			{
@@ -226,7 +226,7 @@
 			consume(Token.tLBRACE); 
 			linkageDeclarationLoop:
 			while (LT(1) != Token.tRBRACE) {
-				Token lastToken = LA(1);
+				Token checkToken = LA(1);
 				switch (LT(1)) {
 					case Token.tRBRACE:
 						consume(Token.tRBRACE);
@@ -234,7 +234,7 @@
 					default:
 						declaration(linkageSpec);
 				}
-				if (lastToken == LA(1))
+				if (checkToken == LA(1))
 					consumeToNextSemicolon();
 			}
 			// consume the }
@@ -346,12 +346,12 @@
 					if( LT(1) == Token.tIDENTIFIER ) // optional identifier
 					{
 						identifier(); 
-						try { callback.templateTypeParameterName( currentTemplateParm );} catch( Exception e ) {}
+						try { currentTemplateParm = callback.templateTypeParameterName( currentTemplateParm );} catch( Exception e ) {}
 						if( LT(1) == Token.tASSIGN ) // optional = type-id
 						{
 							consume( Token.tASSIGN );
 							identifier(); // type-id
-							try{ callback.templateTypeParameterInitialTypeId( currentTemplateParm ); }catch( Exception e ) {}
+							try{ currentTemplateParm = callback.templateTypeParameterInitialTypeId( currentTemplateParm ); }catch( Exception e ) {}
 						}
 					}
 					try{ callback.templateTypeParameterEnd( currentTemplateParm );	} catch( Exception e ) {}
@@ -374,12 +374,12 @@
 				if( LT(1) == Token.tIDENTIFIER ) // optional identifier
 				{
 					identifier();
-					try{ callback.templateTypeParameterName( newTemplateParm );} catch( Exception e ) {} 
+					try{ newTemplateParm = callback.templateTypeParameterName( newTemplateParm );} catch( Exception e ) {} 
 					if( LT(1) == Token.tASSIGN ) // optional = type-id
 					{
 						consume( Token.tASSIGN );
 						name(); 
-						try{ callback.templateTypeParameterInitialTypeId( newTemplateParm );} catch( Exception e ) {}
+						try{ newTemplateParm = callback.templateTypeParameterInitialTypeId( newTemplateParm );} catch( Exception e ) {}
 					}
 				}
 				try{ callback.templateTypeParameterEnd( newTemplateParm );} catch( Exception e ) {}
@@ -466,7 +466,7 @@
 		if( LT(1) == Token.tIDENTIFIER )
 		{
 			name();
-			try{ callback.namespaceDefinitionId( namespace );} catch( Exception e ) {}
+			try{ namespace = callback.namespaceDefinitionId( namespace );} catch( Exception e ) {}
 		}
 	
 		if( LT(1) == Token.tLBRACE )
@@ -474,7 +474,7 @@
 			consume(); 
 			namepsaceDeclarationLoop:
 			while (LT(1) != Token.tRBRACE) {
-				Token lastToken = LA(1);
+				Token checkToken = LA(1);
 				switch (LT(1)) {
 					case Token.tRBRACE:
 						consume(Token.tRBRACE);
@@ -482,7 +482,7 @@
 					default:
 						declaration(namespace);
 				}
-				if (lastToken == LA(1))
+				if (checkToken == LA(1))
 					consumeToNextSemicolon();
 			}
 			// consume the }
@@ -510,7 +510,6 @@
 	 */
 	protected void simpleDeclaration( Object container ) throws Backtrack {
 		Object simpleDecl = null; 
-		Token lastToken = null; 
 		try{ simpleDecl = callback.simpleDeclarationBegin( container, LA(1));} catch( Exception e ) {}
 		declSpecifierSeq(simpleDecl, false);
 		Object declarator = null; 
@@ -534,7 +533,7 @@
 		
 		switch (LT(1)) {
 			case Token.tSEMI:
-				lastToken = consume(Token.tSEMI);
+				consume(Token.tSEMI);
 				break;
 			case Token.tCOLON:
 				ctorInitializer(declarator);					
@@ -545,11 +544,10 @@
 				if (quickParse) {
 					// speed up the parser by skiping the body
 					// simply look for matching brace and return
-					lastToken = consume(Token.tLBRACE);
+					consume(Token.tLBRACE);
 					int depth = 1;
 					while (depth > 0) {
-						lastToken = consume(); 
-						switch (lastToken.getType()) {
+						switch (consume().getType()) {
 							case Token.tRBRACE:
 								--depth;
 								break;
@@ -583,7 +581,7 @@
 				Object constructorChainElement = null; 
 				try{ constructorChainElement = callback.constructorChainElementBegin( constructorChain );} catch( Exception e ) {}
 				name(); 
-				try{ callback.constructorChainElementId(constructorChainElement);} catch( Exception e) {} 
+				try{ constructorChainElement = callback.constructorChainElementId(constructorChainElement);} catch( Exception e) {} 
 			
 				consume( Token.tLPAREN );
 				
@@ -674,7 +672,7 @@
 				case Token.t_volatile:
 				case Token.t_signed:
 				case Token.t_unsigned:
-					try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
+					try{ decl = callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
 					break;
 				case Token.t_short:					
 				case Token.t_char:
@@ -686,7 +684,7 @@
 				case Token.t_double:
 				case Token.t_void:
 					encounteredRawType = true;
-					try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
+					try{ decl = callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
 					break;
 				case Token.t_typename:
 					consume( Token.t_typename );
@@ -702,9 +700,9 @@
 					{
 						if( ! encounteredTypename )
 						{
-							try{ callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
+							try{ decl = callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
 							name(); 
-							try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
+							try{ decl = callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
 							encounteredTypename = true; 
 							break;
 						}
@@ -724,7 +722,7 @@
 						Object elab = null; 
 						try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() );} catch( Exception e ) {} 
 						name(); 
-						try{ callback.elaboratedTypeSpecifierName( elab ); } catch( Exception e ) {}
+						try{ elab = callback.elaboratedTypeSpecifierName( elab ); } catch( Exception e ) {}
 						try{ callback.elaboratedTypeSpecifierEnd( elab );} catch( Exception e ) {}
 						encounteredTypename = true;
 						break;
@@ -741,7 +739,7 @@
 						Object elab = null; 
 						try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() ); } catch( Exception e ) {} 
 						name(); 
-						try{ callback.elaboratedTypeSpecifierName( elab );} catch( Exception e ) {} 
+						try{ elab = callback.elaboratedTypeSpecifierName( elab );} catch( Exception e ) {} 
 						try{ callback.elaboratedTypeSpecifierEnd( elab );} catch( Exception e ) {}
 					}
 					break;
@@ -794,8 +792,6 @@
 				
 				callback.nameBegin( first );
 				callback.nameEnd( last );
-				
-				
 			}
 			else
 			{
@@ -898,12 +894,12 @@
 	 * cvQualifier
 	 * : "const" | "volatile"
 	 */
-	protected void cvQualifier( Object ptrOp ) throws Backtrack {
+	protected Object cvQualifier( Object ptrOp ) throws Backtrack {
 		switch (LT(1)) {
 			case Token.t_const:
 			case Token.t_volatile:
-				try{ callback.pointerOperatorCVModifier( ptrOp, consume() ); } catch( Exception e ) {}
-				return;
+				try{ ptrOp = callback.pointerOperatorCVModifier( ptrOp, consume() ); } catch( Exception e ) {}
+				return ptrOp;
 			default:
 				throw backtrack;
 		}
@@ -1068,7 +1064,7 @@
 				name();
 			}
 
-			try{ callback.declaratorId(declarator);} catch( Exception e ) {}			
+			try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {}			
 			for (;;) {
 				switch (LT(1)) {
 					case Token.tLPAREN:
@@ -1111,13 +1107,13 @@
 							// const-volatile marker on the method
 							if( LT(1) == Token.t_const || LT(1) == Token.t_volatile )
 							{
-								try{ callback.declaratorCVModifier( declarator, consume() );} catch( Exception e ) {}
+								try{ declarator = callback.declaratorCVModifier( declarator, consume() );} catch( Exception e ) {}
 							}
 							
 							//check for throws clause here 
 							if( LT(1) == Token.t_throw )
 							{
-								try{ callback.declaratorThrowsException( declarator );} catch( Exception e ) {}
+								try{ declarator = callback.declaratorThrowsException( declarator );} catch( Exception e ) {}
 								consume(); // throw
 								consume( Token.tLPAREN );// (
 								boolean done = false; 
@@ -1132,7 +1128,7 @@
 										case Token.tIDENTIFIER: 
 											//TODO this is not exactly right - should be type-id rather than just a name
 											name(); 
-											try{ callback.declaratorThrowExceptionName( declarator );} catch( Exception e ) {}
+											try{ declarator = callback.declaratorThrowExceptionName( declarator );} catch( Exception e ) {}
 											break;
 										case Token.tCOMMA: 
 											consume(); 
@@ -1150,7 +1146,7 @@
 							{
 								consume( Token.tASSIGN);
 								consume( Token.tINTEGER);
-								try{ callback.declaratorPureVirtual( declarator ); } catch( Exception e ) { }
+								try{ declarator = callback.declaratorPureVirtual( declarator ); } catch( Exception e ) { }
 							}
 
 						}
@@ -1199,7 +1195,7 @@
 		try{ ptrOp = callback.pointerOperatorBegin( owner );} catch( Exception e ) {} 
 		
 		if (t == Token.tAMPER) {
-			try{ callback.pointerOperatorType( ptrOp, consume(Token.tAMPER) ); } catch( Exception e ) {}
+			try{ ptrOp = callback.pointerOperatorType( ptrOp, consume(Token.tAMPER) ); } catch( Exception e ) {}
 			try{ callback.pointerOperatorEnd( ptrOp );} catch( Exception e ) {}
 			return;
 		}
@@ -1215,13 +1211,13 @@
 
 		if (t == Token.tSTAR) {
 			if( hasName )
-				try{ callback.pointerOperatorName( ptrOp );} catch( Exception e ) {}
+				try{ ptrOp = callback.pointerOperatorName( ptrOp );} catch( Exception e ) {}
 				
-			try{ callback.pointerOperatorType( ptrOp, consume());} catch( Exception e ) {}
+			try{ ptrOp = callback.pointerOperatorType( ptrOp, consume());} catch( Exception e ) {}
 
 			for (;;) {
 				try {
-					cvQualifier( ptrOp );
+					ptrOp = cvQualifier( ptrOp );
 				} catch (Backtrack b) {
 					// expected at some point
 					break;
@@ -1257,7 +1253,7 @@
 		if( LT(1) == Token.tIDENTIFIER )
 		{ 
 			identifier();
-			try{ callback.enumSpecifierId( enumSpecifier );} catch( Exception e ) {}
+			try{ enumSpecifier = callback.enumSpecifierId( enumSpecifier );} catch( Exception e ) {}
 		} 
 		
 		if( LT(1) == Token.tLBRACE )
@@ -1272,7 +1268,7 @@
 					defn = null; 
 					try{ defn = callback.enumeratorBegin( enumSpecifier );} catch( Exception e ) {}
 					identifier();
-					try{ callback.enumeratorId( defn ); } catch( Exception e ) {}
+					try{ defn = callback.enumeratorId( defn ); } catch( Exception e ) {}
 				}
 				else
 				{
@@ -1337,7 +1333,7 @@
 		// class name
 		if (LT(1) == Token.tIDENTIFIER) {
 			className();
-			try{ callback.classSpecifierName(classSpec);} catch( Exception e ){}			
+			try{ classSpec = callback.classSpecifierName(classSpec);} catch( Exception e ){}			
 		}
 		
 		if( LT(1) != Token.tCOLON && LT(1) != Token.tLBRACE )
@@ -1349,7 +1345,7 @@
 			throw backtrack; 
 		}
 		else
-			try{ callback.classSpecifierSafe( classSpec ); } catch( Exception e ){}
+			try{ classSpec = callback.classSpecifierSafe( classSpec ); } catch( Exception e ){}
 		
 		// base clause
 		if (LT(1) == Token.tCOLON) {
@@ -1362,13 +1358,13 @@
 			
 			memberDeclarationLoop:
 			while (LT(1) != Token.tRBRACE) {
-				Token lastToken = LA(1);
+				Token checkToken = LA(1);
 			
 				switch (LT(1)) {
 					case Token.t_public:
 					case Token.t_protected:
 					case Token.t_private:
-						try{ callback.classMemberVisibility( classSpec, consume() );} catch( Exception e ){}
+						try{ classSpec = callback.classMemberVisibility( classSpec, consume() );} catch( Exception e ){}
 						consume(Token.tCOLON);
 						break;
 					case Token.tRBRACE:
@@ -1377,7 +1373,7 @@
 					default:
 						declaration(classSpec);
 				}
-				if (lastToken == LA(1))
+				if (checkToken == LA(1))
 					consumeToNextSemicolon();
 			}
 			// consume the }
@@ -1398,17 +1394,17 @@
 			switch (LT(1)) {
 				case Token.t_virtual:
 					consume(Token.t_virtual);
-					try{ callback.baseSpecifierVirtual( baseSpecifier, true ); } catch( Exception e ){}
+					try{ baseSpecifier = callback.baseSpecifierVirtual( baseSpecifier, true ); } catch( Exception e ){}
 					break;
 				case Token.t_public:
 				case Token.t_protected:
 				case Token.t_private:
-					try { callback.baseSpecifierVisibility( baseSpecifier, consume() );} catch( Exception e ){}
+					try { baseSpecifier = callback.baseSpecifierVisibility( baseSpecifier, consume() );} catch( Exception e ){}
 					break;
 				case Token.tCOLONCOLON:
 				case Token.tIDENTIFIER:
 					name();
-					try { callback.baseSpecifierName( baseSpecifier ); } catch( Exception e ){}
+					try { baseSpecifier = callback.baseSpecifierName( baseSpecifier ); } catch( Exception e ){}
 					break;
 				case Token.tCOMMA:
 					try { 
@@ -1971,8 +1967,7 @@
 				case Token.tARROW:
 					// member access
 					consume();
-					// TO DO: handle this
-					//varName();
+					primaryExpression(expression);
 					break;
 				default:
 					return;
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.15
diff -u -r1.15 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/Scanner.java	4 Apr 2003 18:45:09 -0000	1.15
+++ parser/org/eclipse/cdt/internal/core/parser/Scanner.java	4 Apr 2003 20:20:26 -0000
@@ -510,13 +510,13 @@
 
 				for( ; ; )
 				{
-					if( ( c == '"' && previous != '\\' )|| ( c == '\n') )break;  
+					if( ( c == '"' && previous != '\\' )|| ( c == NOCHAR) )break;  
 					buff.append((char) c);
 					previous = c;
 					c = getChar(true);
 				}
 
-				if (c != '\n') 
+				if (c != NOCHAR ) 
 				{
 					int type = wideString ? Token.tLSTRING : Token.tSTRING;
 					return newToken(

Back to the top