From 716c2e20a6b72b93162949b5faa6358fabad86a2 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Thu, 3 May 2007 20:05:51 +0000 Subject: [PATCH] Bug 184500 - Fixed up CCE by adding ICPPInternalFunction to PDOMCPPFunction. --- .../core/pdom/dom/cpp/PDOMCPPFunction.java | 62 ++++++++++++++++++- .../core/pdom/dom/cpp/PDOMCPPParameter.java | 2 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java index ee44c7aad49..d45b2fed516 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java @@ -16,13 +16,21 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPDelegate; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType; +import org.eclipse.cdt.core.parser.util.CharArrayUtils; import org.eclipse.cdt.internal.core.Util; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPParameter; +import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction; import org.eclipse.cdt.internal.core.index.IndexCPPSignatureUtil; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.Database; @@ -37,7 +45,8 @@ import org.eclipse.core.runtime.CoreException; * @author Doug Schaefer * */ -class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverloader { +class PDOMCPPFunction extends PDOMCPPBinding + implements ICPPFunction, ICPPInternalFunction, IPDOMOverloader { /** * Offset of total number of function parameters (relative to the @@ -233,4 +242,55 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, IPDOMOverl } return 0; } + + // Internal binding stuff, not implemented/needed + + public void addDeclaration(IASTNode node) { + // Do nothing + } + + public void addDefinition(IASTNode node) { + // Do nothing + } + + public ICPPDelegate createDelegate(IASTName name) { + throw new PDOMNotImplementedError(getClass().toString()); + } + + public IASTNode[] getDeclarations() { + return null; + } + + public IASTNode getDefinition() { + return null; + } + + public void removeDeclaration(IASTNode node) { + // Do nothing + } + + // ICPPInternalFunction + + public boolean isStatic(boolean resolveAll) { + try { + return isStatic(); + } catch (DOMException e) { + return false; + } + } + + public IBinding resolveParameter(IASTParameterDeclaration param) { + try { + for (PDOMCPPParameter pp = getFirstParameter(); pp != null; pp = pp.getNextParameter()) { + if (CharArrayUtils.equals(param.getDeclarator().getName().toCharArray(), + pp.getNameCharArray())) + return pp; + } + } catch (CoreException e) { + CCorePlugin.log(e); + } + // TODO - this points to a problem with overloads, I think... + return new CPPParameter(param.getDeclarator().getName()); + } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java index 5ebf7522382..7c289216918 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java @@ -178,7 +178,7 @@ class PDOMCPPParameter extends PDOMNamedNode implements ICPPParameter, IIndexFra } public IScope getScope() throws DOMException { - throw new PDOMNotImplementedError(); + return null; } public Object getAdapter(Class adapter) {