1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Patch for John Camelon:

CORE
		 Minimized the number of objects being returned from Parser
callbacks.  
		 Fixed CModelBuilder to handle errors better. 
		 Reorganized the DOM Hierarchy to ensure that nodes were added to the
tree on End() callbacks.  
		 Fixed defect 36247().

TESTS
		 Added DOMTests::testBug36247().
This commit is contained in:
Doug Schaefer 2003-04-13 22:01:34 +00:00
parent 34564166f4
commit 1408e4cd83
21 changed files with 278 additions and 302 deletions

View file

@ -20,8 +20,9 @@ public class ASMDefinition extends Declaration {
final private String assemblyCode;
public ASMDefinition( String code )
public ASMDefinition( IScope scope, String code )
{
super( scope );
assemblyCode = code;
}
/**

View file

@ -63,9 +63,8 @@ public class DOMBuilder implements IParserCallback
/**
* @see org.eclipse.cdt.internal.core.newparser.IParserCallback#classSpecifierName()
*/
public Object classSpecifierName(Object classSpecifier) {
public void classSpecifierName(Object classSpecifier) {
((ClassSpecifier)classSpecifier).setName(currName);
return classSpecifier;
}
/**
@ -95,15 +94,14 @@ public class DOMBuilder implements IParserCallback
/**
* @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorId(org.eclipse.cdt.internal.core.newparser.Token)
*/
public Object declaratorId(Object declarator) {
public void 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 Object simpleDeclSpecifier(Object Container, Token specifier) {
public void simpleDeclSpecifier(Object Container, Token specifier) {
DeclSpecifier.Container decl = (DeclSpecifier.Container)Container;
DeclSpecifier declSpec = decl.getDeclSpecifier();
if( declSpec == null )
@ -113,7 +111,6 @@ public class DOMBuilder implements IParserCallback
}
declSpec.setType( specifier );
return decl;
}
@ -173,8 +170,7 @@ public class DOMBuilder implements IParserCallback
* @see org.eclipse.cdt.internal.core.newparser.IParserCallback#simpleDeclarationBegin(org.eclipse.cdt.internal.core.newparser.Token)
*/
public Object simpleDeclarationBegin(Object container, Token firstToken) {
SimpleDeclaration decl = new SimpleDeclaration();
((IScope)container).addDeclaration(decl);
SimpleDeclaration decl = new SimpleDeclaration((IScope)container);
if( container instanceof IAccessable )
decl.setAccessSpecifier(new AccessSpecifier( ((IAccessable)container).getVisibility() ));
((IOffsetable)decl).setStartingOffset( firstToken.getOffset() );
@ -185,8 +181,14 @@ public class DOMBuilder implements IParserCallback
* @see org.eclipse.cdt.internal.core.newparser.IParserCallback#simpleDeclarationEnd(org.eclipse.cdt.internal.core.newparser.Token)
*/
public void simpleDeclarationEnd(Object declaration, Token lastToken) {
IOffsetable offsetable = (IOffsetable)declaration;
offsetable.setTotalLength( lastToken.getOffset() + lastToken.getLength() - offsetable.getStartingOffset());
SimpleDeclaration decl = (SimpleDeclaration)declaration;
IOffsetable offsetable = (IOffsetable)decl;
// TODO Kludge solve me!
if( lastToken != null )
offsetable.setTotalLength( lastToken.getOffset() + lastToken.getLength() - offsetable.getStartingOffset());
else
offsetable.setTotalLength( 0 );
decl.getOwnerScope().addDeclaration(decl);
}
/**
@ -231,14 +233,13 @@ public class DOMBuilder implements IParserCallback
}
public Object baseSpecifierVirtual( Object baseSpecifier, boolean virtual )
public void baseSpecifierVirtual( Object baseSpecifier, boolean virtual )
{
BaseSpecifier bs = (BaseSpecifier)baseSpecifier;
bs.setVirtual( virtual );
return bs;
}
public Object baseSpecifierVisibility( Object baseSpecifier, Token visibility )
public void baseSpecifierVisibility( Object baseSpecifier, Token visibility )
{
int access = AccessSpecifier.v_public;
switch( visibility.type )
@ -257,25 +258,24 @@ public class DOMBuilder implements IParserCallback
}
((BaseSpecifier)baseSpecifier).setAccess(access);
return baseSpecifier;
}
public Object baseSpecifierName( Object baseSpecifier )
public void baseSpecifierName( Object baseSpecifier )
{
((BaseSpecifier)baseSpecifier).setName(currName);
return baseSpecifier;
}
public Object parameterDeclarationBegin( Object container )
{
IScope clause = (IScope)container;
ParameterDeclaration pd = new ParameterDeclaration();
clause.addDeclaration( pd );
ParameterDeclaration pd = new ParameterDeclaration(clause);
return pd;
}
public void parameterDeclarationEnd( Object declaration ){
ParameterDeclaration d = (ParameterDeclaration)declaration;
d.getOwnerScope().addDeclaration(d);
}
/**
* @see org.eclipse.cdt.internal.core.newparser.IParserCallback#declaratorAbort(java.lang.Object, java.lang.Object)
@ -314,8 +314,7 @@ public class DOMBuilder implements IParserCallback
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
*/
public Object classSpecifierSafe(Object classSpecifier) {
return classSpecifier;
public void classSpecifierSafe(Object classSpecifier) {
}
/**
@ -352,19 +351,17 @@ public class DOMBuilder implements IParserCallback
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
*/
public Object elaboratedTypeSpecifierName(Object elab) {
public void elaboratedTypeSpecifierName(Object elab) {
((ElaboratedTypeSpecifier)elab).setName( currName );
return elab;
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
*/
public Object simpleDeclSpecifierName(Object declaration) {
public void simpleDeclSpecifierName(Object declaration) {
DeclSpecifier.Container decl = (DeclSpecifier.Container)declaration;
DeclSpecifier declSpec = decl.getDeclSpecifier();
declSpec.setName( currName );
return declSpec;
}
/* (non-Javadoc)
@ -376,7 +373,7 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object classMemberVisibility(Object classSpecifier, Token visibility) {
public void classMemberVisibility(Object classSpecifier, Token visibility) {
ClassSpecifier spec = (ClassSpecifier)classSpecifier;
switch( visibility.getType() )
{
@ -390,7 +387,6 @@ public class DOMBuilder implements IParserCallback
spec.setVisibility( AccessSpecifier.v_private );
break;
}
return spec;
}
/* (non-Javadoc)
@ -414,15 +410,14 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
*/
public Object pointerOperatorName(Object ptrOperator) {
public void 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 Object pointerOperatorType(Object ptrOperator, Token type) {
public void pointerOperatorType(Object ptrOperator, Token type) {
PointerOperator ptrOp = (PointerOperator)ptrOperator;
switch( type.getType() )
{
@ -435,13 +430,12 @@ public class DOMBuilder implements IParserCallback
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 Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
PointerOperator ptrOp = (PointerOperator)ptrOperator;
switch( modifier.getType() )
{
@ -454,13 +448,12 @@ public class DOMBuilder implements IParserCallback
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 Object declaratorCVModifier(Object declarator, Token modifier) {
public void declaratorCVModifier(Object declarator, Token modifier) {
Declarator decl = (Declarator)declarator;
switch( modifier.getType() )
{
@ -473,7 +466,7 @@ public class DOMBuilder implements IParserCallback
default:
break;
}
return decl;
}
/* (non-Javadoc)
@ -498,20 +491,18 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object)
*/
public Object declaratorThrowExceptionName(Object declarator )
public void declaratorThrowExceptionName(Object declarator )
{
Declarator decl = (Declarator)declarator;
decl.getExceptionSpecifier().addTypeName( currName );
return decl;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
*/
public Object declaratorThrowsException(Object declarator) {
public void declaratorThrowsException(Object declarator) {
Declarator decl = (Declarator)declarator;
decl.getExceptionSpecifier().setThrowsException(true);
return decl;
}
/* (non-Javadoc)
@ -529,10 +520,9 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
*/
public Object namespaceDefinitionId(Object namespace) {
public void namespaceDefinitionId(Object namespace) {
NamespaceDefinition ns = (NamespaceDefinition)namespace;
ns.setName( currName );
return ns;
}
/* (non-Javadoc)
@ -579,10 +569,9 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
*/
public Object usingDirectiveNamespaceId(Object dir) {
public void usingDirectiveNamespaceId(Object dir) {
UsingDirective directive = (UsingDirective)dir;
directive.setNamespaceName( currName );
return directive;
}
/* (non-Javadoc)
@ -605,11 +594,10 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
*/
public Object usingDeclarationMapping(Object decl, boolean isTypename) {
public void usingDeclarationMapping(Object decl, boolean isTypename) {
UsingDeclaration declaration = (UsingDeclaration)decl;
declaration.setMappedName( currName );
declaration.setTypename( isTypename );
return declaration;
}
/* (non-Javadoc)
@ -647,10 +635,9 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
*/
public Object enumSpecifierId(Object enumSpec) {
public void enumSpecifierId(Object enumSpec) {
EnumerationSpecifier es = (EnumerationSpecifier)enumSpec;
es.setName( currName );
return es;
}
/* (non-Javadoc)
@ -682,11 +669,10 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
*/
public Object enumeratorId(Object enumDefn) {
public void enumeratorId(Object enumDefn) {
EnumeratorDefinition definition = (EnumeratorDefinition)enumDefn;
definition.setName( currName );
((IOffsetable)enumDefn).setStartingOffset( currName.getStartOffset() );
return definition;
}
/* (non-Javadoc)
@ -702,7 +688,7 @@ public class DOMBuilder implements IParserCallback
*/
public void asmDefinition(Object container, String assemblyCode) {
IScope scope = (IScope)container;
ASMDefinition definition = new ASMDefinition( assemblyCode );
ASMDefinition definition = new ASMDefinition( scope, assemblyCode );
scope.addDeclaration( definition );
}
@ -748,10 +734,9 @@ public class DOMBuilder implements IParserCallback
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
*/
public Object constructorChainElementId(Object element) {
public void constructorChainElementId(Object element) {
ConstructorChainElement ele = (ConstructorChainElement)element;
ele.setName(currName);
return ele;
}
/* (non-Javadoc)
@ -774,8 +759,7 @@ public class DOMBuilder implements IParserCallback
*/
public Object explicitInstantiationBegin(Object container) {
IScope scope = (IScope)container;
ExplicitTemplateDeclaration etd = new ExplicitTemplateDeclaration( ExplicitTemplateDeclaration.k_instantiation );
scope.addDeclaration(etd);
ExplicitTemplateDeclaration etd = new ExplicitTemplateDeclaration( scope, ExplicitTemplateDeclaration.k_instantiation );
return etd;
}
@ -783,6 +767,8 @@ public class DOMBuilder implements IParserCallback
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationEnd(java.lang.Object)
*/
public void explicitInstantiationEnd(Object instantiation) {
ExplicitTemplateDeclaration declaration = (ExplicitTemplateDeclaration)instantiation;
declaration.getOwnerScope().addDeclaration(declaration);
}
/* (non-Javadoc)
@ -790,8 +776,7 @@ public class DOMBuilder implements IParserCallback
*/
public Object explicitSpecializationBegin(Object container) {
IScope scope = (IScope)container;
ExplicitTemplateDeclaration etd = new ExplicitTemplateDeclaration( ExplicitTemplateDeclaration.k_specialization);
scope.addDeclaration(etd);
ExplicitTemplateDeclaration etd = new ExplicitTemplateDeclaration( scope, ExplicitTemplateDeclaration.k_specialization);
return etd;
}
@ -799,15 +784,16 @@ public class DOMBuilder implements IParserCallback
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitSpecializationEnd(java.lang.Object)
*/
public void explicitSpecializationEnd(Object instantiation) {
ExplicitTemplateDeclaration etd = (ExplicitTemplateDeclaration)instantiation;
etd.getOwnerScope().addDeclaration(etd);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
*/
public Object declaratorPureVirtual(Object declarator) {
public void declaratorPureVirtual(Object declarator) {
Declarator d = (Declarator)declarator;
d.setPureVirtual(true);
return d;
}
/* (non-Javadoc)
@ -856,31 +842,30 @@ public class DOMBuilder implements IParserCallback
default:
k = 0;
}
TemplateParameter p = new TemplateParameter( k );
list.addDeclaration(p);
TemplateParameter p = new TemplateParameter( list, k );
return p;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
*/
public Object templateTypeParameterName(Object typeParm) {
public void templateTypeParameterName(Object typeParm) {
((TemplateParameter)typeParm).setName( currName );
return typeParm;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
*/
public Object templateTypeParameterInitialTypeId(Object typeParm) {
public void templateTypeParameterInitialTypeId(Object typeParm) {
((TemplateParameter)typeParm).setTypeId( currName );
return typeParm;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterEnd(java.lang.Object)
*/
public void templateTypeParameterEnd(Object typeParm) {
TemplateParameter parameter = (TemplateParameter)typeParm;
parameter.getOwnerScope().addDeclaration( parameter );
}
/* (non-Javadoc)

View file

@ -4,4 +4,18 @@ package org.eclipse.cdt.internal.core.dom;
*/
public class Declaration {
public Declaration( IScope scope )
{
ownerScope = scope;
}
private final IScope ownerScope;
/**
* @return
*/
public IScope getOwnerScope() {
return ownerScope;
}
}

View file

@ -27,8 +27,9 @@ public class ExplicitTemplateDeclaration extends Declaration implements IScope {
public final static int k_specialization = 1;
public final static int k_instantiation = 2;
public ExplicitTemplateDeclaration( int kind )
public ExplicitTemplateDeclaration( IScope scope, int kind )
{
super( scope );
this.kind = kind;
}

View file

@ -4,8 +4,11 @@ import java.util.List;
/**
* A scope contains a set of declarations that are defined in that
scope. */ public interface IScope {
* A scope contains a set of declarations that are defined
* in that scope.
**/
public interface IScope {
public void addDeclaration(Declaration declaration);
public List getDeclarations();

View file

@ -23,12 +23,11 @@ import java.util.List;
public class LinkageSpecification extends Declaration implements IScope {
private List declarations = new LinkedList();
private IScope ownerScope;
private String languageLinkage;
LinkageSpecification( IScope owner, String linkage )
{
ownerScope = owner;
super( owner );
languageLinkage = linkage;
}
@ -46,12 +45,6 @@ public class LinkageSpecification extends Declaration implements IScope {
return Collections.unmodifiableList( declarations );
}
/**
* @return IScope
*/
public IScope getOwnerScope() {
return ownerScope;
}
/**
* @return String

View file

@ -25,14 +25,13 @@ import org.eclipse.cdt.internal.core.parser.Token;
public class NamespaceDefinition extends Declaration implements IScope, IOffsetable {
private List declarations = new LinkedList();
private IScope ownerScope;
private Name name = null;
private int startingOffset = 0, totalLength = 0;
private Token startToken = null;
public NamespaceDefinition( IScope owner )
{
ownerScope = owner;
super( owner );
}
/* (non-Javadoc)
@ -58,13 +57,6 @@ public class NamespaceDefinition extends Declaration implements IScope, IOffseta
return name;
}
/**
* @return IScope
*/
public IScope getOwnerScope() {
return ownerScope;
}
/**
* Sets the name.
* @param name The name to set

View file

@ -16,9 +16,14 @@ import java.util.List;
*/
public class ParameterDeclaration extends Declaration implements DeclSpecifier.Container, TypeSpecifier.IOwner {
DeclSpecifier declSpec = null;
private DeclSpecifier declSpec = null;
private TypeSpecifier typeSpecifier;
public ParameterDeclaration( IScope scope )
{
super( scope );
}
/**
* Returns the typeSpecifier.
* @return TypeSpecifier

View file

@ -12,6 +12,12 @@ public class SimpleDeclaration extends Declaration implements DeclSpecifier.Cont
private DeclSpecifier declSpec = null;
private boolean isFunctionDefinition = false;
public SimpleDeclaration(IScope owner )
{
super( owner );
}
public DeclSpecifier getDeclSpecifier()
{
if( declSpec == null )

View file

@ -27,13 +27,12 @@ public class TemplateDeclaration extends Declaration implements IScope, IAccessa
private final boolean exported;
private AccessSpecifier visibility = null;
private Token firstToken, lastToken;
private IScope ownerScope;
private List declarations = new ArrayList();
private TemplateParameterList templateParms = null;
public TemplateDeclaration( IScope ownerScope, Token exported )
{
this.ownerScope = ownerScope;
super( ownerScope );
this.firstToken = exported;
this.exported = exported.getType() == Token.t_export ? true : false;
}
@ -59,13 +58,6 @@ public class TemplateDeclaration extends Declaration implements IScope, IAccessa
return exported;
}
/**
* @return IScope
*/
public IScope getOwnerScope() {
return ownerScope;
}
/**
* @return
*/

View file

@ -26,8 +26,9 @@ public class TemplateParameter extends Declaration implements ITemplateParameter
public final static int k_template = 4;
public TemplateParameter( int kind )
public TemplateParameter( IScope scope, int kind )
{
super( scope );
this.kind = kind;
}

View file

@ -20,12 +20,11 @@ package org.eclipse.cdt.internal.core.dom;
public class UsingDeclaration extends Declaration {
private Name mappedName;
private IScope ownerScope;
boolean isTypename = false;
public UsingDeclaration( IScope owner )
{
ownerScope = owner;
super( owner );
}
/**
* @return String
@ -42,13 +41,6 @@ public class UsingDeclaration extends Declaration {
this.mappedName = mapping;
}
/**
* @return IScope
*/
public IScope getOwnerScope() {
return ownerScope;
}
/**
* @return boolean
*/

View file

@ -20,11 +20,10 @@ package org.eclipse.cdt.internal.core.dom;
public class UsingDirective extends Declaration {
private Name namespaceName;
private IScope ownerScope;
public UsingDirective( IScope owner )
{
ownerScope = owner;
super( owner );
}
/**
@ -41,12 +40,4 @@ public class UsingDirective extends Declaration {
public void setNamespaceName(Name namespaceName) {
this.namespaceName = namespaceName;
}
/**
* @return IScope
*/
public IScope getOwnerScope() {
return ownerScope;
}
}

View file

@ -1,3 +1,9 @@
2003-04-11 John Camelon
Minimized the number of objects being returned from Parser callbacks.
Fixed CModelBuilder to handle errors better.
Reorganized the DOM Hierarchy to ensure that nodes were added to the tree on End() callbacks.
Fixed defect 36247().
2003-04-11 John Camelon
Fixed Bug 36243 DomBuilder Offsetable List

View file

@ -57,7 +57,7 @@ public class CModelBuilder {
DOMBuilder domBuilder = new DOMBuilder();
String code = translationUnit.getBuffer().getContents();
Parser parser = new Parser(code, domBuilder, true);
if( ! parser.parse() ) throw new ParserException( "Parse failure" );
parser.parse();
long startTime = System.currentTimeMillis();
generateModelElements(domBuilder.getTranslationUnit());
System.out.println("CModel build: "+ ( System.currentTimeMillis() - startTime ) + "ms" );

View file

@ -159,8 +159,7 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object simpleDeclSpecifier(Object Container, Token specifier) {
return null;
public void simpleDeclSpecifier(Object Container, Token specifier) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#nameBegin(org.eclipse.cdt.internal.core.parser.Token)
@ -181,8 +180,7 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorId(java.lang.Object)
*/
public Object declaratorId(Object declarator) {
return null;
public void declaratorId(Object declarator) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorAbort(java.lang.Object, java.lang.Object)
@ -225,8 +223,7 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierName(java.lang.Object)
*/
public Object classSpecifierName(Object classSpecifier) {
return null;
public void classSpecifierName(Object classSpecifier) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierEnd(java.lang.Object)
@ -242,22 +239,19 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierName(java.lang.Object)
*/
public Object baseSpecifierName(Object baseSpecifier) {
return null;
public void baseSpecifierName(Object baseSpecifier) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object baseSpecifierVisibility(
public void baseSpecifierVisibility(
Object baseSpecifier,
Token visibility) {
return null;
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean)
*/
public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
return null;
public void baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierEnd(java.lang.Object)
@ -285,8 +279,7 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
*/
public Object classSpecifierSafe(Object classSpecifier) {
return null;
public void classSpecifierSafe(Object classSpecifier) {
}
/**
@ -305,15 +298,13 @@ public class ExpressionEvaluator implements IParserCallback {
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
*/
public Object elaboratedTypeSpecifierName(Object container) {
return null;
public void elaboratedTypeSpecifierName(Object container) {
}
/**
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
*/
public Object simpleDeclSpecifierName(Object declaration) {
return null;
public void simpleDeclSpecifierName(Object declaration) {
}
/* (non-Javadoc)
@ -327,10 +318,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object classMemberVisibility(Object classSpecifier, Token visibility) {
return null;
public void classMemberVisibility(Object classSpecifier, Token visibility) {
}
/* (non-Javadoc)
@ -352,37 +340,26 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
*/
public Object pointerOperatorName(Object ptrOperator) {
return null;
public void pointerOperatorName(Object ptrOperator) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object pointerOperatorType(Object ptrOperator, Token type) {
return null;
public void pointerOperatorType(Object ptrOperator, Token type) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
return null;
public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object declaratorCVModifier(Object declarator, Token modifier) {
return null;
public void declaratorCVModifier(Object declarator, Token modifier) {
}
/* (non-Javadoc)
@ -403,19 +380,13 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#exceptionSpecificationTypename(java.lang.Object)
*/
public Object declaratorThrowExceptionName(Object declarator) {
return null;
public void declaratorThrowExceptionName(Object declarator) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
*/
public Object declaratorThrowsException(Object declarator) {
return null;
public void declaratorThrowsException(Object declarator) {
}
/* (non-Javadoc)
@ -429,10 +400,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
*/
public Object namespaceDefinitionId(Object namespace) {
return null;
public void namespaceDefinitionId(Object namespace) {
}
/* (non-Javadoc)
@ -474,10 +442,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
*/
public Object usingDirectiveNamespaceId(Object container) {
return null;
public void usingDirectiveNamespaceId(Object container) {
}
/* (non-Javadoc)
@ -499,10 +464,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
*/
public Object usingDeclarationMapping(Object container, boolean isTypename) {
return null;
public void usingDeclarationMapping(Object container, boolean isTypename) {
}
/* (non-Javadoc)
@ -539,10 +501,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
*/
public Object enumSpecifierId(Object enumSpec) {
return null;
public void enumSpecifierId(Object enumSpec) {
}
/* (non-Javadoc)
@ -572,10 +531,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
*/
public Object enumeratorId(Object enumDefn) {
return null;
public void enumeratorId(Object enumDefn) {
}
/* (non-Javadoc)
@ -627,8 +583,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
*/
public Object constructorChainElementId(Object ctor) {
return null;
public void constructorChainElementId(Object ctor) {
}
/* (non-Javadoc)
@ -673,8 +628,7 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
*/
public Object declaratorPureVirtual(Object declarator) {
return null;
public void declaratorPureVirtual(Object declarator) {
}
/* (non-Javadoc)
@ -706,15 +660,13 @@ public class ExpressionEvaluator implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
*/
public Object templateTypeParameterName(Object typeParm) {
return null;
public void templateTypeParameterName(Object typeParm) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
*/
public Object templateTypeParameterInitialTypeId(Object typeParm) {
return null;
public void templateTypeParameterInitialTypeId(Object typeParm) {
}
/* (non-Javadoc)

View file

@ -20,8 +20,8 @@ public interface IParserCallback {
public void macro(String macroName, int macroNameOffset, int macroBeginOffset, int macroEndOffset);
public Object simpleDeclarationBegin(Object Container, Token firstToken);
public Object simpleDeclSpecifier(Object Container, Token specifier);
public Object simpleDeclSpecifierName( Object declaration );
public void simpleDeclSpecifier(Object Container, Token specifier);
public void simpleDeclSpecifierName( Object declaration );
public void simpleDeclarationEnd(Object declaration, Token lastToken);
public Object parameterDeclarationBegin( Object Container );
@ -31,21 +31,21 @@ public interface IParserCallback {
public void nameEnd(Token lastToken);
public Object declaratorBegin(Object container);
public Object declaratorId(Object declarator);
public void declaratorId(Object declarator);
public void declaratorAbort( Object container, 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 declaratorPureVirtual( Object declarator );
public void declaratorCVModifier( Object declarator, Token modifier );
public void declaratorThrowsException( Object declarator );
public void declaratorThrowExceptionName( Object declarator );
public void declaratorEnd(Object declarator);
public Object arrayDeclaratorBegin( Object declarator );
public void arrayDeclaratorEnd( Object arrayQualifier );
public Object pointerOperatorBegin( Object container );
public Object pointerOperatorType( Object ptrOperator, Token type );
public Object pointerOperatorName( Object ptrOperator );
public Object pointerOperatorCVModifier( Object ptrOperator, Token modifier );
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 );
@ -56,16 +56,16 @@ public interface IParserCallback {
public void functionBodyEnd(Object functionBody);
public Object classSpecifierBegin(Object container, Token classKey);
public Object classSpecifierName(Object classSpecifier);
public void classSpecifierName(Object classSpecifier);
public void classSpecifierAbort( Object classSpecifier );
public Object classSpecifierSafe( Object classSpecifier );
public Object classMemberVisibility( Object classSpecifier, Token visibility );
public void classSpecifierSafe( Object classSpecifier );
public void classMemberVisibility( Object classSpecifier, Token visibility );
public void classSpecifierEnd(Object classSpecifier, Token closingBrace );
public Object baseSpecifierBegin( Object containingClassSpec );
public Object baseSpecifierName( Object baseSpecifier );
public Object baseSpecifierVisibility( Object baseSpecifier, Token visibility );
public Object baseSpecifierVirtual( Object baseSpecifier, boolean virtual );
public void baseSpecifierName( Object baseSpecifier );
public void baseSpecifierVisibility( Object baseSpecifier, Token visibility );
public void baseSpecifierVirtual( Object baseSpecifier, boolean virtual );
public void baseSpecifierEnd( Object baseSpecifier );
public Object expressionBegin( Object container );
@ -75,11 +75,11 @@ public interface IParserCallback {
public void expressionEnd(Object expression );
public Object elaboratedTypeSpecifierBegin( Object container, Token classKey );
public Object elaboratedTypeSpecifierName( Object elab );
public void elaboratedTypeSpecifierName( Object elab );
public void elaboratedTypeSpecifierEnd( Object elab );
public Object namespaceDefinitionBegin( Object container, Token namespace );
public Object namespaceDefinitionId( Object namespace );
public void namespaceDefinitionId( Object namespace );
public void namespaceDefinitionAbort( Object namespace );
public void namespaceDefinitionEnd( Object namespace, Token closingBrace );
@ -87,22 +87,22 @@ public interface IParserCallback {
public void linkageSpecificationEnd( Object linkageSpec );
public Object usingDirectiveBegin( Object container );
public Object usingDirectiveNamespaceId( Object directive );
public void usingDirectiveNamespaceId( Object directive );
public void usingDirectiveAbort( Object directive );
public void usingDirectiveEnd( Object directive );
public Object usingDeclarationBegin( Object container );
public Object usingDeclarationMapping( Object declaration, boolean isTypeName );
public void usingDeclarationMapping( Object declaration, boolean isTypeName );
public void usingDeclarationAbort( Object declaration );
public void usingDeclarationEnd( Object declaration );
public Object enumSpecifierBegin( Object container, Token enumKey );
public Object enumSpecifierId( Object enumSpec );
public void enumSpecifierId( Object enumSpec );
public void enumSpecifierAbort( Object enumSpec );
public void enumSpecifierEnd( Object enumSpec, Token closingBrace );
public Object enumeratorBegin( Object enumSpec );
public Object enumeratorId( Object enumDefn );
public void enumeratorId( Object enumDefn );
public void enumeratorEnd( Object enumDefn, Token lastToken );
public void asmDefinition( Object container, String assemblyCode );
@ -112,7 +112,7 @@ public interface IParserCallback {
public void constructorChainEnd( Object ctor );
public Object constructorChainElementBegin( Object ctor );
public Object constructorChainElementId( Object element );
public void constructorChainElementId( Object element );
public void constructorChainElementEnd( Object element );
public Object constructorChainElementExpressionListElementBegin( Object element );
@ -132,9 +132,9 @@ public interface IParserCallback {
public void templateParameterListEnd( Object parameterList );
public Object templateTypeParameterBegin( Object templDecl, Token kind );
public Object templateTypeParameterName( Object typeParm );
public void templateTypeParameterName( Object typeParm );
public void templateTypeParameterAbort( Object typeParm );
public Object templateTypeParameterInitialTypeId( Object typeParm );
public void templateTypeParameterInitialTypeId( Object typeParm );
public void templateTypeParameterEnd( Object typeParm );
}

View file

@ -43,15 +43,14 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object simpleDeclSpecifier(Object Container, Token specifier) {
return null;
public void simpleDeclSpecifier(Object Container, Token specifier) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#simpleDeclSpecifierName(java.lang.Object)
*/
public Object simpleDeclSpecifierName(Object declaration) {
return null;
public void simpleDeclSpecifierName(Object declaration) {
}
/* (non-Javadoc)
@ -95,8 +94,8 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorId(java.lang.Object)
*/
public Object declaratorId(Object declarator) {
return null;
public void declaratorId(Object declarator) {
}
/* (non-Javadoc)
@ -108,15 +107,13 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object declaratorCVModifier(Object declarator, Token modifier) {
return null;
public void declaratorCVModifier(Object declarator, Token modifier) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowExceptionName(java.lang.Object)
*/
public Object declaratorThrowExceptionName(Object exceptionSpec) {
return null;
public void declaratorThrowExceptionName(Object exceptionSpec) {
}
/* (non-Javadoc)
@ -148,22 +145,19 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorType(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object pointerOperatorType(Object ptrOperator, Token type) {
return null;
public void pointerOperatorType(Object ptrOperator, Token type) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorName(java.lang.Object)
*/
public Object pointerOperatorName(Object ptrOperator) {
return null;
public void pointerOperatorName(Object ptrOperator) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#pointerOperatorCVModifier(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
return null;
public void pointerOperatorCVModifier(Object ptrOperator, Token modifier) {
}
/* (non-Javadoc)
@ -208,8 +202,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierName(java.lang.Object)
*/
public Object classSpecifierName(Object classSpecifier) {
return null;
public void classSpecifierName(Object classSpecifier) {
}
/* (non-Javadoc)
@ -221,15 +214,14 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java.lang.Object)
*/
public Object classSpecifierSafe(Object classSpecifier) {
return null;
public void classSpecifierSafe(Object classSpecifier) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#classMemberVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object classMemberVisibility(Object classSpecifier, Token visibility) {
return null;
public void classMemberVisibility(Object classSpecifier, Token visibility) {
}
/* (non-Javadoc)
@ -248,22 +240,19 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierName(java.lang.Object)
*/
public Object baseSpecifierName(Object baseSpecifier) {
return null;
public void baseSpecifierName(Object baseSpecifier) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVisibility(java.lang.Object, org.eclipse.cdt.internal.core.parser.Token)
*/
public Object baseSpecifierVisibility(Object baseSpecifier, Token visibility) {
return null;
public void baseSpecifierVisibility(Object baseSpecifier, Token visibility) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#baseSpecifierVirtual(java.lang.Object, boolean)
*/
public Object baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
return null;
public void baseSpecifierVirtual(Object baseSpecifier, boolean virtual) {
}
/* (non-Javadoc)
@ -313,8 +302,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifierName(java.lang.Object)
*/
public Object elaboratedTypeSpecifierName(Object elab) {
return null;
public void elaboratedTypeSpecifierName(Object elab) {
}
/* (non-Javadoc)
@ -326,8 +314,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorThrowsException(java.lang.Object)
*/
public Object declaratorThrowsException(Object declarator) {
return null;
public void declaratorThrowsException(Object declarator) {
}
/* (non-Javadoc)
@ -340,8 +327,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#namespaceDeclarationId(java.lang.Object)
*/
public Object namespaceDefinitionId(Object namespace) {
return null;
public void namespaceDefinitionId(Object namespace) {
}
/* (non-Javadoc)
@ -380,8 +366,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDirectiveNamespaceId(java.lang.Object)
*/
public Object usingDirectiveNamespaceId(Object container) {
return null;
public void usingDirectiveNamespaceId(Object container) {
}
@ -405,8 +390,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#usingDeclarationMapping(java.lang.Object)
*/
public Object usingDeclarationMapping(Object container, boolean isTypename) {
return null;
public void usingDeclarationMapping(Object container, boolean isTypename) {
}
@ -439,8 +423,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumSpecifierId(java.lang.Object)
*/
public Object enumSpecifierId(Object enumSpec) {
return null;
public void enumSpecifierId(Object enumSpec) {
}
/* (non-Javadoc)
@ -465,8 +448,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#enumDefinitionId(java.lang.Object)
*/
public Object enumeratorId(Object enumDefn) {
return null;
public void enumeratorId(Object enumDefn) {
}
/* (non-Javadoc)
@ -516,8 +498,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#constructorChainId(java.lang.Object)
*/
public Object constructorChainElementId(Object ctor) {
return null;
public void constructorChainElementId(Object ctor) {
}
/* (non-Javadoc)
@ -562,8 +543,7 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#declaratorPureVirtual(java.lang.Object)
*/
public Object declaratorPureVirtual(Object declarator) {
return null;
public void declaratorPureVirtual(Object declarator) {
}
/* (non-Javadoc)
@ -595,15 +575,13 @@ public class NullParserCallback implements IParserCallback {
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeParameterName(java.lang.Object)
*/
public Object templateTypeParameterName(Object typeParm) {
return null;
public void templateTypeParameterName(Object typeParm) {
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.IParserCallback#templateTypeInitialTypeId(java.lang.Object)
*/
public Object templateTypeParameterInitialTypeId(Object typeParm) {
return null;
public void templateTypeParameterInitialTypeId(Object typeParm) {
}
/* (non-Javadoc)

View file

@ -149,7 +149,7 @@ c, quick);
if( LT(1) == Token.tIDENTIFIER || LT(1) == Token.tCOLONCOLON )
{
name();
try{ directive = callback.usingDirectiveNamespaceId( directive );} catch( Exception e ) {}
try{ callback.usingDirectiveNamespaceId( directive );} catch( Exception e ) {}
}
else
{
@ -185,7 +185,7 @@ c, quick);
{
// optional :: and nested classes handled in name
name();
try{ usingDeclaration = callback.usingDeclarationMapping( usingDeclaration, typeName ); } catch( Exception e ) {}
try{ callback.usingDeclarationMapping( usingDeclaration, typeName ); } catch( Exception e ) {}
}
else
{
@ -355,12 +355,12 @@ c, quick);
if( LT(1) == Token.tIDENTIFIER ) // optional identifier
{
identifier();
try { currentTemplateParm = callback.templateTypeParameterName( currentTemplateParm );} catch( Exception e ) {}
try { callback.templateTypeParameterName( currentTemplateParm );} catch( Exception e ) {}
if( LT(1) == Token.tASSIGN ) // optional = type-id
{
consume( Token.tASSIGN );
identifier(); // type-id
try{ currentTemplateParm = callback.templateTypeParameterInitialTypeId( currentTemplateParm ); }catch( Exception e ) {}
try{ callback.templateTypeParameterInitialTypeId( currentTemplateParm ); }catch( Exception e ) {}
}
}
try{ callback.templateTypeParameterEnd( currentTemplateParm ); } catch( Exception e ) {}
@ -383,12 +383,12 @@ c, quick);
if( LT(1) == Token.tIDENTIFIER ) // optional identifier
{
identifier();
try{ newTemplateParm = callback.templateTypeParameterName( newTemplateParm );} catch( Exception e ) {}
try{ callback.templateTypeParameterName( newTemplateParm );} catch( Exception e ) {}
if( LT(1) == Token.tASSIGN ) // optional = type-id
{
consume( Token.tASSIGN );
name();
try{ newTemplateParm = callback.templateTypeParameterInitialTypeId( newTemplateParm );} catch( Exception e ) {}
try{ callback.templateTypeParameterInitialTypeId( newTemplateParm );} catch( Exception e ) {}
}
}
try{ callback.templateTypeParameterEnd( newTemplateParm );} catch( Exception e ) {}
@ -475,7 +475,7 @@ c, quick);
if( LT(1) == Token.tIDENTIFIER )
{
name();
try{ namespace = callback.namespaceDefinitionId( namespace );} catch( Exception e ) {}
try{ callback.namespaceDefinitionId( namespace );} catch( Exception e ) {}
}
if( LT(1) == Token.tLBRACE )
@ -571,7 +571,7 @@ c, quick);
try{ callback.functionBodyEnd(function );} catch( Exception e ) {}
break;
default:
break;
throw backtrack;
}
try{ callback.simpleDeclarationEnd(simpleDecl, lastToken);} catch( Exception e ) {}
@ -590,7 +590,7 @@ c, quick);
Object constructorChainElement = null;
try{ constructorChainElement = callback.constructorChainElementBegin( constructorChain );} catch( Exception e ) {}
name();
try{ constructorChainElement = callback.constructorChainElementId(constructorChainElement);} catch( Exception e) {}
try{ callback.constructorChainElementId(constructorChainElement);} catch( Exception e) {}
consume( Token.tLPAREN );
@ -679,7 +679,7 @@ c, quick);
case Token.t_friend:
case Token.t_const:
case Token.t_volatile:
try{ decl = callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
break;
case Token.t_signed:
case Token.t_unsigned:
@ -693,7 +693,7 @@ c, quick);
case Token.t_double:
case Token.t_void:
encounteredRawType = true;
try{ decl = callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
break;
case Token.t_typename:
consume( Token.t_typename );
@ -707,11 +707,12 @@ c, quick);
// handle nested later:
if ((parm && !encounteredRawType) || (!encounteredRawType && LT(2) != Token.tCOLONCOLON && LT(2) != Token.tLPAREN))
{
if( ! encounteredTypename )
if( ! encounteredTypename || ( LT(2) == Token.tIDENTIFIER &&
( LT(3) == Token.tLPAREN || LT(3) == Token.tASSIGN ) || LT(2) == Token.tSTAR ) )
{
try{ decl = callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
try{ callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
name();
try{ decl = callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
encounteredTypename = true;
break;
}
@ -731,8 +732,10 @@ c, quick);
Object elab = null;
try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() );} catch( Exception e ) {}
name();
try{ elab = callback.elaboratedTypeSpecifierName( elab ); } catch( Exception e ) {}
try{ callback.elaboratedTypeSpecifierEnd( elab );} catch( Exception e ) {}
try{
callback.elaboratedTypeSpecifierName( elab );
callback.elaboratedTypeSpecifierEnd( elab );
} catch( Exception e ) {}
encounteredTypename = true;
break;
}
@ -748,8 +751,10 @@ c, quick);
Object elab = null;
try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() ); } catch( Exception e ) {}
name();
try{ elab = callback.elaboratedTypeSpecifierName( elab );} catch( Exception e ) {}
try{ callback.elaboratedTypeSpecifierEnd( elab );} catch( Exception e ) {}
try{
callback.elaboratedTypeSpecifierName( elab );
callback.elaboratedTypeSpecifierEnd( elab );
} catch( Exception e ) {}
}
break;
default:
@ -912,7 +917,7 @@ c, quick);
switch (LT(1)) {
case Token.t_const:
case Token.t_volatile:
try{ ptrOp = callback.pointerOperatorCVModifier( ptrOp, consume() ); } catch( Exception e ) {}
try{ callback.pointerOperatorCVModifier( ptrOp, consume() ); } catch( Exception e ) {}
return ptrOp;
default:
throw backtrack;
@ -1072,14 +1077,14 @@ c, quick);
callback.nameEnd( toSend );
} catch( Exception e ) {}
try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {}
try{ callback.declaratorId(declarator);} catch( Exception e ) {}
}
else
{
try
{
name();
try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {}
try{ callback.declaratorId(declarator);} catch( Exception e ) {}
}
catch( Backtrack bt )
{
@ -1135,7 +1140,7 @@ c, quick);
callback.nameEnd( end );
} catch( Exception e ) {}
try{ declarator = callback.declaratorId(declarator);} catch( Exception e ) {}
try{ callback.declaratorId(declarator);} catch( Exception e ) {}
}
}
else
@ -1189,13 +1194,13 @@ c, quick);
// const-volatile marker on the method
if( LT(1) == Token.t_const || LT(1) == Token.t_volatile )
{
try{ declarator = callback.declaratorCVModifier( declarator, consume() );} catch( Exception e ) {}
try{ callback.declaratorCVModifier( declarator, consume() );} catch( Exception e ) {}
}
//check for throws clause here
if( LT(1) == Token.t_throw )
{
try{ declarator = callback.declaratorThrowsException( declarator );} catch( Exception e ) {}
try{ callback.declaratorThrowsException( declarator );} catch( Exception e ) {}
consume(); // throw
consume( Token.tLPAREN );// (
boolean done = false;
@ -1210,7 +1215,7 @@ c, quick);
case Token.tIDENTIFIER:
//TODO this is not exactly right - should be type-id rather than just a name
name();
try{ declarator = callback.declaratorThrowExceptionName( declarator );} catch( Exception e ) {}
try{ callback.declaratorThrowExceptionName( declarator );} catch( Exception e ) {}
break;
case Token.tCOMMA:
consume();
@ -1228,7 +1233,7 @@ c, quick);
{
consume( Token.tASSIGN);
consume( Token.tINTEGER);
try{ declarator = callback.declaratorPureVirtual( declarator ); } catch( Exception e ) { }
try{ callback.declaratorPureVirtual( declarator ); } catch( Exception e ) { }
}
}
@ -1279,7 +1284,7 @@ c, quick);
try{ ptrOp = callback.pointerOperatorBegin( owner );} catch( Exception e ) {}
if (t == Token.tAMPER) {
try{ ptrOp = callback.pointerOperatorType( ptrOp, consume(Token.tAMPER) ); } catch( Exception e ) {}
try{ callback.pointerOperatorType( ptrOp, consume(Token.tAMPER) ); } catch( Exception e ) {}
try{ callback.pointerOperatorEnd( ptrOp );} catch( Exception e ) {}
return;
}
@ -1295,9 +1300,9 @@ c, quick);
if (t == Token.tSTAR) {
if( hasName )
try{ ptrOp = callback.pointerOperatorName( ptrOp );} catch( Exception e ) {}
try{ callback.pointerOperatorName( ptrOp );} catch( Exception e ) {}
try{ ptrOp = callback.pointerOperatorType( ptrOp, consume());} catch( Exception e ) {}
try{ callback.pointerOperatorType( ptrOp, consume());} catch( Exception e ) {}
for (;;) {
try {
@ -1337,7 +1342,7 @@ c, quick);
if( LT(1) == Token.tIDENTIFIER )
{
identifier();
try{ enumSpecifier = callback.enumSpecifierId( enumSpecifier );} catch( Exception e ) {}
try{ callback.enumSpecifierId( enumSpecifier );} catch( Exception e ) {}
}
if( LT(1) == Token.tLBRACE )
@ -1352,7 +1357,7 @@ c, quick);
defn = null;
try{ defn = callback.enumeratorBegin( enumSpecifier );} catch( Exception e ) {}
identifier();
try{ defn = callback.enumeratorId( defn ); } catch( Exception e ) {}
try{ callback.enumeratorId( defn ); } catch( Exception e ) {}
}
else
{
@ -1417,7 +1422,7 @@ c, quick);
// class name
if (LT(1) == Token.tIDENTIFIER) {
className();
try{ classSpec = callback.classSpecifierName(classSpec);} catch( Exception e ){}
try{ callback.classSpecifierName(classSpec);} catch( Exception e ){}
}
if( LT(1) != Token.tCOLON && LT(1) != Token.tLBRACE )
@ -1429,7 +1434,7 @@ c, quick);
throw backtrack;
}
else
try{ classSpec = callback.classSpecifierSafe( classSpec ); } catch( Exception e ){}
try{ callback.classSpecifierSafe( classSpec ); } catch( Exception e ){}
// base clause
if (LT(1) == Token.tCOLON) {
@ -1448,7 +1453,7 @@ c, quick);
case Token.t_public:
case Token.t_protected:
case Token.t_private:
try{ classSpec = callback.classMemberVisibility( classSpec, consume() );} catch( Exception e ){}
try{ callback.classMemberVisibility( classSpec, consume() );} catch( Exception e ){}
consume(Token.tCOLON);
break;
case Token.tRBRACE:
@ -1478,17 +1483,17 @@ c, quick);
switch (LT(1)) {
case Token.t_virtual:
consume(Token.t_virtual);
try{ baseSpecifier = callback.baseSpecifierVirtual( baseSpecifier, true ); } catch( Exception e ){}
try{ callback.baseSpecifierVirtual( baseSpecifier, true ); } catch( Exception e ){}
break;
case Token.t_public:
case Token.t_protected:
case Token.t_private:
try { baseSpecifier = callback.baseSpecifierVisibility( baseSpecifier, consume() );} catch( Exception e ){}
try { callback.baseSpecifierVisibility( baseSpecifier, consume() );} catch( Exception e ){}
break;
case Token.tCOLONCOLON:
case Token.tIDENTIFIER:
name();
try { baseSpecifier = callback.baseSpecifierName( baseSpecifier ); } catch( Exception e ){}
try { callback.baseSpecifierName( baseSpecifier ); } catch( Exception e ){}
break;
case Token.tCOMMA:
try {

View file

@ -1,3 +1,6 @@
2003-04-11 John Camelon
Added DOMTests::testBug36247().
2003-04-11 Andrew Niefer
Moved ScannerFailedTest::testBug36316 to ScannerTestCase::testBug36316
Added ScannerFailedTest::testBug36047

View file

@ -1232,5 +1232,61 @@ public class DOMTests extends TestCase {
assertEquals( tu.getDeclarations().size(), 1 );
}
public void testBug36247() throws Exception
{
Writer code = new StringWriter();
code.write( "class A {\n" );
code.write( "INLINE_DEF int f ();\n" );
code.write( "INLINE_DEF A g ();" );
code.write( "INLINE_DEF A * h ();" );
code.write( "};" );
TranslationUnit tu = parse(code.toString());
assertEquals( tu.getDeclarations().size(),1 );
SimpleDeclaration classDeclaration = (SimpleDeclaration)tu.getDeclarations().get(0);
assertEquals( classDeclaration.getDeclarators().size(), 0 );
assertEquals( classDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type );
ClassSpecifier classSpec = (ClassSpecifier)classDeclaration.getTypeSpecifier();
PointerOperator po =null;
int number = 3;
assertEquals( classSpec.getDeclarations().size(), number );
for( int i = 0; i < number; ++i )
{
SimpleDeclaration subDeclaration = (SimpleDeclaration)classSpec.getDeclarations().get(i);
assertEquals( subDeclaration.getDeclarators().size(), 1 );
Declarator functionDeclarator = (Declarator)subDeclaration.getDeclarators().get(0);
assertNotNull( functionDeclarator.getParms());
assertEquals( 0, functionDeclarator.getParms().getDeclarations().size() );
List pointerOperators = functionDeclarator.getPointerOperators();
switch( i )
{
case 0:
assertEquals( subDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_int );
assertEquals( functionDeclarator.getName().toString(), "f" );
assertEquals( pointerOperators.size(), 0 );
break;
case 1:
assertEquals( subDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type );
assertEquals( subDeclaration.getDeclSpecifier().getTypeName(), "A");
assertEquals( functionDeclarator.getName().toString(), "g" );
assertEquals( pointerOperators.size(), 0 );
break;
case 2:
assertEquals( subDeclaration.getDeclSpecifier().getType(), DeclSpecifier.t_type );
assertEquals( subDeclaration.getDeclSpecifier().getTypeName(), "A");
assertEquals( functionDeclarator.getName().toString(), "h" );
assertEquals( pointerOperators.size(), 1 );
po = (PointerOperator)pointerOperators.get(0);
assertFalse( po.isConst() );
assertFalse( po.isVolatile() );
assertEquals( po.getType(), PointerOperator.t_pointer );
break;
default:
break;
}
}
}
}