From 1408e4cd833b907fe44a1e7f51c25316752fa21f Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Sun, 13 Apr 2003 22:01:34 +0000 Subject: [PATCH] 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(). --- .../cdt/internal/core/dom/ASMDefinition.java | 3 +- .../cdt/internal/core/dom/DOMBuilder.java | 113 ++++++++---------- .../cdt/internal/core/dom/Declaration.java | 14 +++ .../core/dom/ExplicitTemplateDeclaration.java | 3 +- .../eclipse/cdt/internal/core/dom/IScope.java | 7 +- .../core/dom/LinkageSpecification.java | 9 +- .../core/dom/NamespaceDefinition.java | 10 +- .../core/dom/ParameterDeclaration.java | 7 +- .../internal/core/dom/SimpleDeclaration.java | 6 + .../core/dom/TemplateDeclaration.java | 10 +- .../internal/core/dom/TemplateParameter.java | 3 +- .../internal/core/dom/UsingDeclaration.java | 10 +- .../cdt/internal/core/dom/UsingDirective.java | 11 +- core/org.eclipse.cdt.core/parser/ChangeLog | 6 + .../internal/core/model/CModelBuilder.java | 2 +- .../core/parser/ExpressionEvaluator.java | 100 ++++------------ .../internal/core/parser/IParserCallback.java | 50 ++++---- .../core/parser/NullParserCallback.java | 78 +++++------- .../cdt/internal/core/parser/Parser.java | 79 ++++++------ core/org.eclipse.cdt.ui.tests/ChangeLog | 3 + .../cdt/core/parser/tests/DOMTests.java | 56 +++++++++ 21 files changed, 278 insertions(+), 302 deletions(-) diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ASMDefinition.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ASMDefinition.java index 19432861425..3fc53d87cac 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ASMDefinition.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ASMDefinition.java @@ -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; } /** diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java index 1daaa0a4627..f934eee9463 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java @@ -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,15 +759,16 @@ 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; } /* (non-Javadoc) * @see org.eclipse.cdt.internal.core.parser.IParserCallback#explicitInstantiationEnd(java.lang.Object) */ - public void explicitInstantiationEnd(Object instantiation) { + 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) diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declaration.java index 9b726db0e1c..1ac94d9f67b 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declaration.java @@ -3,5 +3,19 @@ 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; + } } diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExplicitTemplateDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExplicitTemplateDeclaration.java index 297b6e94e05..901f75741f7 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExplicitTemplateDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExplicitTemplateDeclaration.java @@ -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; } diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/IScope.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/IScope.java index 019e8290208..3be079cf891 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/IScope.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/IScope.java @@ -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(); diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/LinkageSpecification.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/LinkageSpecification.java index 00d9e5b003a..8ecf2b1bc44 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/LinkageSpecification.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/LinkageSpecification.java @@ -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 diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java index fa5ed0e17b4..c2ad8204ceb 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java @@ -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 diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java index 78d0b565f36..281badbd94b 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ParameterDeclaration.java @@ -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 diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java index dffed466f62..0c1e0fb2618 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java @@ -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 ) diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java index 98db4c6735c..f71a30029fd 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java @@ -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 */ diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java index 4182fe43637..90e2e57c8ef 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java @@ -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; } diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java index 14b5ee65037..c0838a8602e 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java @@ -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 */ diff --git a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java index 3521bb624d9..4567ec537cc 100644 --- a/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java +++ b/core/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java @@ -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; - } - } diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index 025506f9730..961b7378cb1 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -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 diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java index 625f164de4b..50d7082b5dd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -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" ); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java index 45991a54daf..c86cfc77ae2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java @@ -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) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java index 6cb6843b1c6..8de48ebe451 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java @@ -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 ); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java index 6992f790753..45c9252e58c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java @@ -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) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index cfdd22f490a..879a95c91fd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -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 { diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index 291c065a1e3..9479daeddd8 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -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 diff --git a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java index 1eda36e1fa8..b1e704e1120 100644 --- a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java +++ b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java @@ -1231,6 +1231,62 @@ public class DOMTests extends TestCase { TranslationUnit tu = parse( "A::A():B( (char *)0 ){}", true ); 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; + } + + } + + } }