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

- work on bug 50984 - fix NPE with anonymous bitfields

- fix problems with globally qualified using declarations
- fix npe & cce in templates
This commit is contained in:
Andrew Niefer 2004-04-27 17:49:39 +00:00
parent eed5db60c0
commit b2de2fdd6c
4 changed files with 140 additions and 161 deletions

View file

@ -1680,4 +1680,19 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
assertEquals( convert.getOwnerClassSpecifier(), num_put ); assertEquals( convert.getOwnerClassSpecifier(), num_put );
} }
public void testGloballyQualifiedUsingDeclaration() throws Exception
{
Iterator declarations = parse( "int iii; namespace N { using ::iii; }" ).getDeclarations();
IASTVariable iii = (IASTVariable) declarations.next();
IASTNamespaceDefinition namespaceN = (IASTNamespaceDefinition)declarations.next();
IASTUsingDeclaration using = (IASTUsingDeclaration)(getDeclarations(namespaceN).next());
assertEquals( callback.getReferences().size(), 1 );
Iterator references = callback.getReferences().iterator();
assertEquals( ((IASTReference)references.next()).getReferencedElement(), iii );
}
} }

View file

@ -527,12 +527,18 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
if(name.getSegmentCount() > 1) if(name.getSegmentCount() > 1)
{ {
ITokenDuple duple = name.getLeadingSegments(); ITokenDuple duple = name.getLeadingSegments();
ISymbol symbol = lookupQualifiedName( scopeToSymbol(scope), duple, references, true );
IContainerSymbol containerSymbol = null; IContainerSymbol containerSymbol = null;
if( symbol instanceof IContainerSymbol ) if( duple == null ){
containerSymbol = (IContainerSymbol) symbol; //null leading segment means globally qualified
else if ( symbol instanceof IDeferredTemplateInstance ) containerSymbol = scopeToSymbol( scope ).getSymbolTable().getCompilationUnit();
containerSymbol = ((IDeferredTemplateInstance)symbol).getTemplate().getTemplatedSymbol(); } else {
ISymbol symbol = lookupQualifiedName( scopeToSymbol(scope), duple, references, true );
if( symbol instanceof IContainerSymbol )
containerSymbol = (IContainerSymbol) symbol;
else if ( symbol instanceof IDeferredTemplateInstance )
containerSymbol = ((IDeferredTemplateInstance)symbol).getTemplate().getTemplatedSymbol();
}
try try
{ {
endResult = scopeToSymbol(scope).addUsingDeclaration( name.getLastToken().getImage(), containerSymbol ); endResult = scopeToSymbol(scope).addUsingDeclaration( name.getLastToken().getImage(), containerSymbol );
@ -1939,6 +1945,10 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
|| (parentScope.getType() == TypeInfo.t_struct) || (parentScope.getType() == TypeInfo.t_struct)
|| (parentScope.getType() == TypeInfo.t_union)) || (parentScope.getType() == TypeInfo.t_union))
){ ){
if( parentScope.getASTExtension().getPrimaryDeclaration() instanceof IASTElaboratedTypeSpecifier ){
//we are trying to define a member of a class for which we only have a forward declaration
handleProblem( scope, IProblem.SEMANTICS_RELATED, name.toString(), startOffset, nameEndOffset, startLine );
}
IASTScope methodParentScope = (IASTScope)parentScope.getASTExtension().getPrimaryDeclaration(); IASTScope methodParentScope = (IASTScope)parentScope.getASTExtension().getPrimaryDeclaration();
ITokenDuple newName = name.getLastSegment(); ITokenDuple newName = name.getLastSegment();
return createMethod( return createMethod(
@ -2703,11 +2713,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
{ {
IContainerSymbol ownerScope = scopeToSymbol( scope ); IContainerSymbol ownerScope = scopeToSymbol( scope );
String image = ( name != null ) ? name.toString() : EMPTY_STRING;
if(references == null) if(references == null)
references = new ArrayList(); references = new ArrayList();
ISymbol newSymbol = cloneSimpleTypeSymbol(name.toString(), abstractDeclaration, references); ISymbol newSymbol = cloneSimpleTypeSymbol(image, abstractDeclaration, references);
if( newSymbol == null ) if( newSymbol == null )
handleProblem( IProblem.SEMANTICS_RELATED, name.toString() ); handleProblem( IProblem.SEMANTICS_RELATED, image );
setVariableTypeInfoBits( setVariableTypeInfoBits(
@ -2722,9 +2734,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
newSymbol.setIsForwardDeclaration(isStatic); newSymbol.setIsForwardDeclaration(isStatic);
boolean previouslyDeclared = false; boolean previouslyDeclared = false;
if(!isStatic){ if( !isStatic && !image.equals( EMPTY_STRING ) ){
List fieldReferences = new ArrayList(); List fieldReferences = new ArrayList();
ISymbol fieldDeclaration = lookupQualifiedName(ownerScope, name.toString(), fieldReferences, false, LookupType.FORDEFINITION); ISymbol fieldDeclaration = lookupQualifiedName(ownerScope, image, fieldReferences, false, LookupType.FORDEFINITION);
if( fieldDeclaration != null && newSymbol.getType() == fieldDeclaration.getType() ) if( fieldDeclaration != null && newSymbol.getType() == fieldDeclaration.getType() )
{ {
@ -2745,7 +2757,7 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
} }
catch (ParserSymbolTableException e) catch (ParserSymbolTableException e)
{ {
handleProblem(e.createProblemID(), name.toString() ); handleProblem(e.createProblemID(), image );
} }
ASTField field = new ASTField( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, previouslyDeclared, constructorExpression, visibility ); ASTField field = new ASTField( newSymbol, abstractDeclaration, initializerClause, bitfieldExpression, startingOffset, startingLine, nameOffset, nameEndOffset, nameLine, references, previouslyDeclared, constructorExpression, visibility );
@ -2941,8 +2953,13 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
if (name.getSegmentCount() != 1) // qualified name if (name.getSegmentCount() != 1) // qualified name
{ {
ITokenDuple containerSymbolName = name.getLeadingSegments(); ITokenDuple containerSymbolName = name.getLeadingSegments();
currentScopeSymbol = (IContainerSymbol) lookupQualifiedName( if( containerSymbolName == null ){
currentScopeSymbol, containerSymbolName, references, true); //null means globally qualified
currentScopeSymbol = currentScopeSymbol.getSymbolTable().getCompilationUnit();
} else {
currentScopeSymbol = (IContainerSymbol) lookupQualifiedName(
currentScopeSymbol, containerSymbolName, references, true);
}
if (currentScopeSymbol == null) if (currentScopeSymbol == null)
handleProblem(IProblem.SEMANTIC_NAME_NOT_FOUND, handleProblem(IProblem.SEMANTIC_NAME_NOT_FOUND,
containerSymbolName.toString(), containerSymbolName containerSymbolName.toString(), containerSymbolName
@ -3028,6 +3045,9 @@ public class CompleteParseASTFactory extends BaseASTFactory implements IASTFacto
addReference(references, createReference(checkSymbol, addReference(references, createReference(checkSymbol,
newSymbolName, nameToken.getOffset())); newSymbolName, nameToken.getOffset()));
} }
if( checkSymbol instanceof ITemplateSymbol ){
checkSymbol = ((ITemplateSymbol)checkSymbol).getTemplatedSymbol();
}
if (checkSymbol.getASTExtension().getPrimaryDeclaration() instanceof IASTClassSpecifier if (checkSymbol.getASTExtension().getPrimaryDeclaration() instanceof IASTClassSpecifier
|| checkSymbol.getASTExtension().getPrimaryDeclaration() instanceof IASTEnumerationSpecifier) { || checkSymbol.getASTExtension().getPrimaryDeclaration() instanceof IASTEnumerationSpecifier) {
ASTElaboratedTypeSpecifier elab = new ASTElaboratedTypeSpecifier( ASTElaboratedTypeSpecifier elab = new ASTElaboratedTypeSpecifier(

View file

@ -67,8 +67,11 @@ public class DerivableContainerSymbol extends ContainerSymbol implements IDeriva
ParentWrapper wrapper = null, newWrapper = null; ParentWrapper wrapper = null, newWrapper = null;
while( parents.hasNext() ){ while( parents.hasNext() ){
wrapper = (ParentWrapper) parents.next(); wrapper = (ParentWrapper) parents.next();
ISymbol parent = wrapper.getParent();
if( parent == null )
continue;
newWrapper = new ParentWrapper( wrapper.getParent(), wrapper.isVirtual(), wrapper.getAccess(), wrapper.getOffset(), wrapper.getReferences() ); newWrapper = new ParentWrapper( wrapper.getParent(), wrapper.isVirtual(), wrapper.getAccess(), wrapper.getOffset(), wrapper.getReferences() );
ISymbol parent = newWrapper.getParent();
if( parent instanceof IDeferredTemplateInstance ){ if( parent instanceof IDeferredTemplateInstance ){
template.registerDeferredInstatiation( newSymbol, newWrapper, ITemplateSymbol.DeferredKind.PARENT, argMap ); template.registerDeferredInstatiation( newSymbol, newWrapper, ITemplateSymbol.DeferredKind.PARENT, argMap );
} else if( parent.isType( TypeInfo.t_templateParameter ) && argMap.containsKey( parent ) ){ } else if( parent.isType( TypeInfo.t_templateParameter ) && argMap.containsKey( parent ) ){

View file

@ -183,7 +183,7 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
if( template.getParameterList().size() == 0 ){ if( template.getParameterList().size() == 0 ){
//explicit specialization, deduce some arguments and use addTemplateId //explicit specialization, deduce some arguments and use addTemplateId
ISymbol previous = findPreviousSymbol( symbol, new LinkedList() ); ISymbol previous = findPreviousSymbol( symbol, new LinkedList() );
if( previous == null ) if( previous == null || !(previous.getContainingSymbol() instanceof ITemplateSymbol) )
throw new ParserSymbolTableException( ParserSymbolTableException.r_BadTemplate ); throw new ParserSymbolTableException( ParserSymbolTableException.r_BadTemplate );
List args = null; List args = null;
@ -361,70 +361,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
} }
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#removeSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/
public boolean removeSymbol(ISymbol symbol) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#hasUsingDirectives()
*/
public boolean hasUsingDirectives() {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getUsingDirectives()
*/
public List getUsingDirectives() {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDirective(org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol)
*/
public IUsingDirectiveSymbol addUsingDirective(IContainerSymbol namespace) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDeclaration(java.lang.String)
*/
public IUsingDeclarationSymbol addUsingDeclaration(String name) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDeclaration(java.lang.String, org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol)
*/
public IUsingDeclarationSymbol addUsingDeclaration(String name, IContainerSymbol declContext) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getContainedSymbols()
*/
public Map getContainedSymbols() {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#prefixLookup(org.eclipse.cdt.internal.core.parser.pst.TypeFilter, java.lang.String, boolean)
*/
public List prefixLookup(TypeFilter filter, String prefix, boolean qualified) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#elaboratedLookup(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType, java.lang.String) * @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#elaboratedLookup(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType, java.lang.String)
*/ */
@ -545,6 +481,37 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
return (IContainerSymbol) (( look instanceof IContainerSymbol) ? look : null); return (IContainerSymbol) (( look instanceof IContainerSymbol) ? look : null);
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#lookupFunctionTemplateId(java.lang.String, java.util.List, java.util.List)
*/
public ISymbol lookupFunctionTemplateId(String name, List parameters, List arguments, boolean forDefinition) throws ParserSymbolTableException {
IContainerSymbol last = getLastSymbol();
if( last != null ){
IParameterizedSymbol found = (IParameterizedSymbol) last.lookupFunctionTemplateId( name, parameters, arguments, forDefinition );
if( found != null ){
return found;
}
}
return getContainingSymbol().lookupFunctionTemplateId( name, parameters, arguments, forDefinition );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupConstructor(java.util.List)
*/
public IParameterizedSymbol lookupConstructor(List parameters) throws ParserSymbolTableException {
IContainerSymbol last = getLastSymbol();
if( last != null && last instanceof IDerivableContainerSymbol ){
IDerivableContainerSymbol derivable = (IDerivableContainerSymbol) last;
IParameterizedSymbol found = derivable.lookupConstructor( parameters );
if( found != null )
return found;
}
if( getContainingSymbol() instanceof IDerivableContainerSymbol )
return ((IDerivableContainerSymbol) getContainingSymbol()).lookupConstructor( parameters );
return null;
}
private ITemplateSymbol getNextAvailableTemplate() throws ParserSymbolTableException{ private ITemplateSymbol getNextAvailableTemplate() throws ParserSymbolTableException{
Iterator tIter = templates.iterator(); Iterator tIter = templates.iterator();
Iterator sIter = symbols.iterator(); Iterator sIter = symbols.iterator();
@ -566,11 +533,67 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
return (ITemplateSymbol) tIter.next(); return (ITemplateSymbol) tIter.next();
} }
//TODO: Do any of these other functions need to be implemented?
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#removeSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/
public boolean removeSymbol(ISymbol symbol) {
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#hasUsingDirectives()
*/
public boolean hasUsingDirectives() {
return false;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getUsingDirectives()
*/
public List getUsingDirectives() {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDirective(org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol)
*/
public IUsingDirectiveSymbol addUsingDirective(IContainerSymbol namespace) throws ParserSymbolTableException {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDeclaration(java.lang.String)
*/
public IUsingDeclarationSymbol addUsingDeclaration(String name) throws ParserSymbolTableException {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#addUsingDeclaration(java.lang.String, org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol)
*/
public IUsingDeclarationSymbol addUsingDeclaration(String name, IContainerSymbol declContext) throws ParserSymbolTableException {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getContainedSymbols()
*/
public Map getContainedSymbols() {
return null;
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#prefixLookup(org.eclipse.cdt.internal.core.parser.pst.TypeFilter, java.lang.String, boolean)
*/
public List prefixLookup(TypeFilter filter, String prefix, boolean qualified) throws ParserSymbolTableException {
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#isVisible(org.eclipse.cdt.internal.core.parser.pst.ISymbol, org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol) * @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#isVisible(org.eclipse.cdt.internal.core.parser.pst.ISymbol, org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol)
*/ */
public boolean isVisible(ISymbol symbol, IContainerSymbol qualifyingSymbol) { public boolean isVisible(ISymbol symbol, IContainerSymbol qualifyingSymbol) {
// TODO Auto-generated method stub
return false; return false;
} }
@ -578,7 +601,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getContentsIterator() * @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#getContentsIterator()
*/ */
public Iterator getContentsIterator() { public Iterator getContentsIterator() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -586,7 +608,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#clone() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#clone()
*/ */
public Object clone() { public Object clone() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -594,7 +615,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#instantiate(org.eclipse.cdt.internal.core.parser.pst.ITemplateSymbol, java.util.Map) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#instantiate(org.eclipse.cdt.internal.core.parser.pst.ITemplateSymbol, java.util.Map)
*/ */
public ISymbol instantiate(ITemplateSymbol template, Map argMapParm) throws ParserSymbolTableException { public ISymbol instantiate(ITemplateSymbol template, Map argMapParm) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null; return null;
} }
@ -602,15 +622,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setName(java.lang.String) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setName(java.lang.String)
*/ */
public void setName(String name) { public void setName(String name) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getName() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getName()
*/ */
public String getName() { public String getName() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -618,7 +635,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType)
*/ */
public boolean isType(eType type) { public boolean isType(eType type) {
// TODO Auto-generated method stub
return false; return false;
} }
@ -626,7 +642,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType, org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType, org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType)
*/ */
public boolean isType(eType type, eType upperType) { public boolean isType(eType type, eType upperType) {
// TODO Auto-generated method stub
return false; return false;
} }
@ -634,7 +649,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getType() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getType()
*/ */
public eType getType() { public eType getType() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -642,15 +656,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setType(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.eType)
*/ */
public void setType(eType t) { public void setType(eType t) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getTypeInfo() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getTypeInfo()
*/ */
public TypeInfo getTypeInfo() { public TypeInfo getTypeInfo() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -658,15 +669,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setTypeInfo(org.eclipse.cdt.internal.core.parser.pst.TypeInfo) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setTypeInfo(org.eclipse.cdt.internal.core.parser.pst.TypeInfo)
*/ */
public void setTypeInfo(TypeInfo info) { public void setTypeInfo(TypeInfo info) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getTypeSymbol() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getTypeSymbol()
*/ */
public ISymbol getTypeSymbol() { public ISymbol getTypeSymbol() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -674,15 +682,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setTypeSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setTypeSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/ */
public void setTypeSymbol(ISymbol type) { public void setTypeSymbol(ISymbol type) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isForwardDeclaration() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isForwardDeclaration()
*/ */
public boolean isForwardDeclaration() { public boolean isForwardDeclaration() {
// TODO Auto-generated method stub
return false; return false;
} }
@ -690,15 +695,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsForwardDeclaration(boolean) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsForwardDeclaration(boolean)
*/ */
public void setIsForwardDeclaration(boolean forward) { public void setIsForwardDeclaration(boolean forward) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#compareCVQualifiersTo(org.eclipse.cdt.internal.core.parser.pst.ISymbol) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#compareCVQualifiersTo(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/ */
public int compareCVQualifiersTo(ISymbol symbol) { public int compareCVQualifiersTo(ISymbol symbol) {
// TODO Auto-generated method stub
return 0; return 0;
} }
@ -706,7 +708,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getPtrOperators() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getPtrOperators()
*/ */
public List getPtrOperators() { public List getPtrOperators() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -714,15 +715,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#addPtrOperator(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.PtrOp) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#addPtrOperator(org.eclipse.cdt.internal.core.parser.pst.TypeInfo.PtrOp)
*/ */
public void addPtrOperator(PtrOp ptrOp) { public void addPtrOperator(PtrOp ptrOp) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isTemplateInstance() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isTemplateInstance()
*/ */
public boolean isTemplateInstance() { public boolean isTemplateInstance() {
// TODO Auto-generated method stub
return false; return false;
} }
@ -730,7 +728,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getInstantiatedSymbol() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getInstantiatedSymbol()
*/ */
public ISymbol getInstantiatedSymbol() { public ISymbol getInstantiatedSymbol() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -738,15 +735,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setInstantiatedSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setInstantiatedSymbol(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/ */
public void setInstantiatedSymbol(ISymbol symbol) { public void setInstantiatedSymbol(ISymbol symbol) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isTemplateMember() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#isTemplateMember()
*/ */
public boolean isTemplateMember() { public boolean isTemplateMember() {
// TODO Auto-generated method stub
return false; return false;
} }
@ -754,15 +748,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsTemplateMember(boolean) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsTemplateMember(boolean)
*/ */
public void setIsTemplateMember(boolean isMember) { public void setIsTemplateMember(boolean isMember) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getDepth() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getDepth()
*/ */
public int getDepth() { public int getDepth() {
// TODO Auto-generated method stub
return 0; return 0;
} }
@ -770,7 +761,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getIsInvisible() * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#getIsInvisible()
*/ */
public boolean getIsInvisible() { public boolean getIsInvisible() {
// TODO Auto-generated method stub
return false; return false;
} }
@ -778,31 +768,24 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsInvisible(boolean) * @see org.eclipse.cdt.internal.core.parser.pst.ISymbol#setIsInvisible(boolean)
*/ */
public void setIsInvisible(boolean invisible) { public void setIsInvisible(boolean invisible) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addParent(org.eclipse.cdt.internal.core.parser.pst.ISymbol) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addParent(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/ */
public void addParent(ISymbol parent) { public void addParent(ISymbol parent) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addParent(org.eclipse.cdt.internal.core.parser.pst.ISymbol, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility, int, java.util.List) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addParent(org.eclipse.cdt.internal.core.parser.pst.ISymbol, boolean, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility, int, java.util.List)
*/ */
public void addParent(ISymbol parent, boolean virtual, ASTAccessVisibility visibility, int offset, List references) { public void addParent(ISymbol parent, boolean virtual, ASTAccessVisibility visibility, int offset, List references) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getParents() * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getParents()
*/ */
public List getParents() { public List getParents() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -810,7 +793,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#hasParents() * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#hasParents()
*/ */
public boolean hasParents() { public boolean hasParents() {
// TODO Auto-generated method stub
return false; return false;
} }
@ -818,40 +800,18 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addConstructor(org.eclipse.cdt.internal.core.parser.pst.IParameterizedSymbol) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addConstructor(org.eclipse.cdt.internal.core.parser.pst.IParameterizedSymbol)
*/ */
public void addConstructor(IParameterizedSymbol constructor) throws ParserSymbolTableException { public void addConstructor(IParameterizedSymbol constructor) throws ParserSymbolTableException {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addCopyConstructor() * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addCopyConstructor()
*/ */
public void addCopyConstructor() throws ParserSymbolTableException { public void addCopyConstructor() throws ParserSymbolTableException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupConstructor(java.util.List)
*/
public IParameterizedSymbol lookupConstructor(List parameters) throws ParserSymbolTableException {
IContainerSymbol last = getLastSymbol();
if( last != null && last instanceof IDerivableContainerSymbol ){
IDerivableContainerSymbol derivable = (IDerivableContainerSymbol) last;
IParameterizedSymbol found = derivable.lookupConstructor( parameters );
if( found != null )
return found;
}
if( getContainingSymbol() instanceof IDerivableContainerSymbol )
return ((IDerivableContainerSymbol) getContainingSymbol()).lookupConstructor( parameters );
return null;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getConstructors() * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getConstructors()
*/ */
public List getConstructors() { public List getConstructors() {
// TODO Auto-generated method stub
return null; return null;
} }
@ -859,15 +819,12 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addFriend(org.eclipse.cdt.internal.core.parser.pst.ISymbol) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#addFriend(org.eclipse.cdt.internal.core.parser.pst.ISymbol)
*/ */
public void addFriend(ISymbol friend) { public void addFriend(ISymbol friend) {
// TODO Auto-generated method stub
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupForFriendship(java.lang.String) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupForFriendship(java.lang.String)
*/ */
public ISymbol lookupForFriendship(String name) throws ParserSymbolTableException { public ISymbol lookupForFriendship(String name) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null; return null;
} }
@ -875,7 +832,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupFunctionForFriendship(java.lang.String, java.util.List) * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#lookupFunctionForFriendship(java.lang.String, java.util.List)
*/ */
public IParameterizedSymbol lookupFunctionForFriendship(String name, List parameters) throws ParserSymbolTableException { public IParameterizedSymbol lookupFunctionForFriendship(String name, List parameters) throws ParserSymbolTableException {
// TODO Auto-generated method stub
return null; return null;
} }
@ -883,21 +839,6 @@ public class TemplateFactory extends ExtensibleSymbol implements ITemplateFactor
* @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getFriends() * @see org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol#getFriends()
*/ */
public List getFriends() { public List getFriends() {
// TODO Auto-generated method stub
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol#lookupFunctionTemplateId(java.lang.String, java.util.List, java.util.List)
*/
public ISymbol lookupFunctionTemplateId(String name, List parameters, List arguments, boolean forDefinition) throws ParserSymbolTableException {
IContainerSymbol last = getLastSymbol();
if( last != null ){
IParameterizedSymbol found = (IParameterizedSymbol) last.lookupFunctionTemplateId( name, parameters, arguments, forDefinition );
if( found != null ){
return found;
}
}
return getContainingSymbol().lookupFunctionTemplateId( name, parameters, arguments, forDefinition );
}
} }