From a31d84767bb95739414cadf6c6fbd8b340d68471 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Fri, 3 Jun 2005 15:41:36 +0000 Subject: [PATCH] fix null pointer exceptions --- .../core/index/domsourceindexer/IndexVisitorUtil.java | 7 ++++++- .../core/dom/parser/cpp/CPPClassSpecialization.java | 2 +- .../cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java | 4 ++-- .../eclipse/cdt/internal/core/dom/parser/cpp/CPPField.java | 5 +++-- .../core/dom/parser/cpp/CPPFunctionSpecialization.java | 2 +- .../internal/core/dom/parser/cpp/CPPTemplateParameter.java | 6 ++---- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexVisitorUtil.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexVisitorUtil.java index 94d92dffadd..3681e0f3a89 100644 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexVisitorUtil.java +++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexVisitorUtil.java @@ -31,6 +31,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; +import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction; import org.eclipse.cdt.internal.core.index.IIndex; /** @@ -193,7 +194,11 @@ public class IndexVisitorUtil { else if (functionBinding.isRegister()) { modifiers |= IIndex.registerSpecifier; } - else if (functionBinding.isStatic()) { + //For performance reasons, use internal interface if possible, since we know the + //index is resolving bindings in order. + else if ( (binding instanceof ICPPInternalFunction) ? ((ICPPInternalFunction)functionBinding).isStatic(false) + : functionBinding.isStatic() ) + { modifiers |= IIndex.staticSpecifier; } else if (functionBinding.isInline()) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java index cabed09251d..97f2dfc618d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassSpecialization.java @@ -128,7 +128,7 @@ public class CPPClassSpecialization extends CPPSpecialization implements */ public IBinding[] getFriends() throws DOMException { // TODO Auto-generated method stub - return null; + return IBinding.EMPTY_BINDING_ARRAY; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java index 0ac307e4e6e..5eec8a75169 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassTemplate.java @@ -274,8 +274,8 @@ public class CPPClassTemplate extends CPPTemplateDefinition implements * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType#getFriends() */ public IBinding[] getFriends() { - // TODO Auto-generated method stub - return null; + //TODO + return IBinding.EMPTY_BINDING_ARRAY; } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPField.java index 28e64ac2eca..a48057f4574 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPField.java @@ -64,8 +64,9 @@ public class CPPField extends CPPVariable implements ICPPField, ICPPInternalBind public IASTDeclaration getPrimaryDeclaration() throws DOMException{ //first check if we already know it IASTName [] declarations = (IASTName[]) getDeclarations(); - if( declarations != null ){ - for( int i = -1; i < declarations.length; i++ ){ + if( declarations != null || getDefinition() != null ){ + int len = ( declarations != null ) ? declarations.length : 0; + for( int i = -1; i < len; i++ ){ IASTNode node = ( i == -1 ) ? getDefinition() : declarations[i]; if( node != null ){ while( !(node instanceof IASTDeclaration ) ) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java index 01f544c023a..50a775bff84 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionSpecialization.java @@ -195,7 +195,7 @@ public class CPPFunctionSpecialization extends CPPSpecialization implements ICPP if( !(n instanceof ICPPASTFunctionDeclarator) ) return; updateParameterBindings( (ICPPASTFunctionDeclarator) n ); - super.addDefinition( node ); + super.addDeclaration( node ); } protected void updateParameterBindings( ICPPASTFunctionDeclarator fdtor ){ IParameter [] params = null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java index 5cbfafc56ff..62088a215a7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPTemplateParameter.java @@ -70,16 +70,14 @@ public class CPPTemplateParameter implements ICPPTemplateParameter, ICPPInternal * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding#getQualifiedName() */ public String[] getQualifiedName() { - // TODO Auto-generated method stub - return null; + return new String[] { getName() }; } /* (non-Javadoc) * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding#getQualifiedNameCharArray() */ public char[][] getQualifiedNameCharArray() { - // TODO Auto-generated method stub - return null; + return new char [][] {getNameCharArray() }; } /* (non-Javadoc)