mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-26 02:15:31 +02:00
176708: fix two exceptions in composite classes
This commit is contained in:
parent
1ee016eee8
commit
0c28b3d6ea
30 changed files with 313 additions and 172 deletions
|
@ -13,7 +13,11 @@ package org.eclipse.cdt.internal.index.tests;
|
||||||
|
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For testing PDOM binding resolution
|
* For testing PDOM binding resolution
|
||||||
|
@ -127,4 +131,33 @@ public class IndexBindingResolutionBugs extends IndexBindingResolutionTestBase {
|
||||||
getBindingFromASTName("k=2", 1);
|
getBindingFromASTName("k=2", 1);
|
||||||
getBindingFromASTName("l=2", 1);
|
getBindingFromASTName("l=2", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// namespace X {}
|
||||||
|
|
||||||
|
// namespace Y {
|
||||||
|
// class Ambiguity {};
|
||||||
|
// enum Ambiguity {A1,A2,A3};
|
||||||
|
// void foo() {
|
||||||
|
// Ambiguity problem;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
public void testBug176708_CCE() throws Exception {
|
||||||
|
IBinding binding= getBindingFromASTName("Y {", 1);
|
||||||
|
assertTrue(binding instanceof ICPPNamespace);
|
||||||
|
ICPPNamespace adapted= (ICPPNamespace) strategy.getIndex().adaptBinding(binding);
|
||||||
|
IASTName[] names= findNames("Ambiguity problem", 9);
|
||||||
|
assertEquals(1, names.length);
|
||||||
|
IBinding binding2= adapted.getNamespaceScope().getBinding(names[0], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// namespace X {int i;}
|
||||||
|
|
||||||
|
// // references
|
||||||
|
// #include "header.h"
|
||||||
|
// int a= X::i;
|
||||||
|
public void testBug176708_NPE() throws Exception {
|
||||||
|
IBinding binding= getBindingFromASTName("i;", 1);
|
||||||
|
assertTrue(binding instanceof ICPPVariable);
|
||||||
|
IScope scope= binding.getScope();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
|
||||||
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
|
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
|
||||||
import org.eclipse.cdt.internal.core.CCoreInternals;
|
import org.eclipse.cdt.internal.core.CCoreInternals;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor;
|
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor;
|
||||||
|
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IProjectDescription;
|
import org.eclipse.core.resources.IProjectDescription;
|
||||||
|
@ -55,7 +56,7 @@ import org.osgi.framework.Bundle;
|
||||||
* the PDOM purely from AST information (i.e. without a real binding from the DOM)
|
* the PDOM purely from AST information (i.e. without a real binding from the DOM)
|
||||||
*/
|
*/
|
||||||
public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
private ITestStrategy strategy;
|
protected ITestStrategy strategy;
|
||||||
|
|
||||||
public void setStrategy(ITestStrategy strategy) {
|
public void setStrategy(ITestStrategy strategy) {
|
||||||
this.strategy = strategy;
|
this.strategy = strategy;
|
||||||
|
@ -68,8 +69,8 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
protected void tearDown() throws Exception {
|
protected void tearDown() throws Exception {
|
||||||
strategy.tearDown();
|
strategy.tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IBinding getBindingFromASTName(String section, int len) {
|
protected IASTName[] findNames(String section, int len) {
|
||||||
// get the language from the language manager
|
// get the language from the language manager
|
||||||
ILanguage language = null;
|
ILanguage language = null;
|
||||||
ICProject cproject = strategy.getCProject();
|
ICProject cproject = strategy.getCProject();
|
||||||
|
@ -83,8 +84,11 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
|
|
||||||
assertNotNull("No language for file " + ast.getFilePath().toString(), language);
|
assertNotNull("No language for file " + ast.getFilePath().toString(), language);
|
||||||
|
|
||||||
IASTName[] names= language.getSelectedNames(ast, strategy.getTestData()[1].indexOf(section), len);
|
return language.getSelectedNames(ast, strategy.getTestData()[1].indexOf(section), len);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IBinding getBindingFromASTName(String section, int len) {
|
||||||
|
IASTName[] names= findNames(section, len);
|
||||||
assertEquals("<>1 name found for \""+section+"\"", 1, names.length);
|
assertEquals("<>1 name found for \""+section+"\"", 1, names.length);
|
||||||
IBinding binding = names[0].resolveBinding();
|
IBinding binding = names[0].resolveBinding();
|
||||||
assertNotNull("No binding for "+names[0].getRawSignature(), binding);
|
assertNotNull("No binding for "+names[0].getRawSignature(), binding);
|
||||||
|
@ -163,6 +167,7 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
public IASTTranslationUnit getAst();
|
public IASTTranslationUnit getAst();
|
||||||
public StringBuffer[] getTestData();
|
public StringBuffer[] getTestData();
|
||||||
public ICProject getCProject();
|
public ICProject getCProject();
|
||||||
|
public boolean isCompositeIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
class SinglePDOMTestStrategy implements ITestStrategy {
|
class SinglePDOMTestStrategy implements ITestStrategy {
|
||||||
|
@ -200,6 +205,7 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
|
|
||||||
IFile cppfile= TestSourceReader.createFile(cproject.getProject(), new Path("references.c" + (cpp ? "pp" : "")), testData[1].toString());
|
IFile cppfile= TestSourceReader.createFile(cproject.getProject(), new Path("references.c" + (cpp ? "pp" : "")), testData[1].toString());
|
||||||
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
||||||
|
// ((PDOM)CCoreInternals.getPDOMManager().getPDOM(cproject)).accept(new PDOMPrettyPrinter());
|
||||||
|
|
||||||
index= CCorePlugin.getIndexManager().getIndex(cproject);
|
index= CCorePlugin.getIndexManager().getIndex(cproject);
|
||||||
|
|
||||||
|
@ -219,6 +225,10 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
public IIndex getIndex() {
|
public IIndex getIndex() {
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCompositeIndex() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ReferencedProject implements ITestStrategy {
|
class ReferencedProject implements ITestStrategy {
|
||||||
|
@ -249,8 +259,8 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
cproject= cpp ? CProjectHelper.createCCProject("OnlineContent", "bin", IPDOMManager.ID_NO_INDEXER)
|
cproject= cpp ? CProjectHelper.createCCProject("OnlineContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER)
|
||||||
: CProjectHelper.createCProject("OnlineContent", "bin", IPDOMManager.ID_NO_INDEXER);
|
: CProjectHelper.createCProject("OnlineContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER);
|
||||||
Bundle b= CTestPlugin.getDefault().getBundle();
|
Bundle b= CTestPlugin.getDefault().getBundle();
|
||||||
testData= TestSourceReader.getContentsForTest(b, "parser", IndexBindingResolutionTestBase.this.getClass(), getName(), 2);
|
testData= TestSourceReader.getContentsForTest(b, "parser", IndexBindingResolutionTestBase.this.getClass(), getName(), 2);
|
||||||
referenced = createReferencedContent();
|
referenced = createReferencedContent();
|
||||||
|
@ -262,8 +272,13 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
pd.setReferencedProjects(refs);
|
pd.setReferencedProjects(refs);
|
||||||
cproject.getProject().setDescription(pd, new NullProgressMonitor());
|
cproject.getProject().setDescription(pd, new NullProgressMonitor());
|
||||||
|
|
||||||
CCoreInternals.getPDOMManager().setIndexerId(cproject, IPDOMManager.ID_FAST_INDEXER);
|
IndexerPreferences.set(cproject.getProject(), IndexerPreferences.KEY_INDEX_ALL_FILES, "true");
|
||||||
|
IndexerPreferences.set(cproject.getProject(), IndexerPreferences.KEY_INDEXER_ID, IPDOMManager.ID_FAST_INDEXER);
|
||||||
|
CCoreInternals.getPDOMManager().reindex(cproject);
|
||||||
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
||||||
|
|
||||||
|
// System.out.println("Online: "+getName());
|
||||||
|
// ((PDOM)CCoreInternals.getPDOMManager().getPDOM(cproject)).accept(new PDOMPrettyPrinter());
|
||||||
|
|
||||||
index= CCorePlugin.getIndexManager().getIndex(cproject);
|
index= CCorePlugin.getIndexManager().getIndex(cproject);
|
||||||
index.acquireReadLock();
|
index.acquireReadLock();
|
||||||
|
@ -274,11 +289,16 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
ICProject referenced = cpp ? CProjectHelper.createCCProject("ReferencedContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER)
|
ICProject referenced = cpp ? CProjectHelper.createCCProject("ReferencedContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER)
|
||||||
: CProjectHelper.createCProject("ReferencedContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER);
|
: CProjectHelper.createCProject("ReferencedContent"+System.currentTimeMillis(), "bin", IPDOMManager.ID_NO_INDEXER);
|
||||||
String content = testData[0].toString();
|
String content = testData[0].toString();
|
||||||
IFile file = TestSourceReader.createFile(cproject.getProject(), new Path("header.h"), content);
|
IFile file = TestSourceReader.createFile(referenced.getProject(), new Path("header.h"), content);
|
||||||
|
|
||||||
CCoreInternals.getPDOMManager().setIndexerId(referenced, IPDOMManager.ID_FAST_INDEXER);
|
IndexerPreferences.set(referenced.getProject(), IndexerPreferences.KEY_INDEX_ALL_FILES, "true");
|
||||||
|
IndexerPreferences.set(referenced.getProject(), IndexerPreferences.KEY_INDEXER_ID, IPDOMManager.ID_FAST_INDEXER);
|
||||||
|
CCoreInternals.getPDOMManager().reindex(referenced);
|
||||||
|
|
||||||
|
//System.out.println("Referenced: "+getName());
|
||||||
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor()));
|
||||||
|
//((PDOM)CCoreInternals.getPDOMManager().getPDOM(referenced)).accept(new PDOMPrettyPrinter());
|
||||||
|
|
||||||
return referenced;
|
return referenced;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,5 +313,9 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase {
|
||||||
public StringBuffer[] getTestData() {
|
public StringBuffer[] getTestData() {
|
||||||
return testData;
|
return testData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCompositeIndex() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -67,5 +67,7 @@ public class IndexCBindingResolutionBugs extends IndexBindingResolutionTestBase
|
||||||
assertEquals(1, params.length);
|
assertEquals(1, params.length);
|
||||||
IType param= params[0].getType();
|
IType param= params[0].getType();
|
||||||
assertTrue(param instanceof IBasicType);
|
assertTrue(param instanceof IBasicType);
|
||||||
|
IType returnType= f0.getType().getReturnType();
|
||||||
|
assertTrue(returnType instanceof IBasicType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,9 +71,10 @@ public abstract class IndexCPPBindingResolutionTest extends IndexBindingResoluti
|
||||||
// };
|
// };
|
||||||
|
|
||||||
// // referencing file
|
// // referencing file
|
||||||
// #include "referenced.h"
|
// #include "header.h"
|
||||||
|
//
|
||||||
|
// C *cp = new C(); /*b0, b1*/
|
||||||
// void references() {
|
// void references() {
|
||||||
// C *cp = new C(); /*b0, b1*/
|
|
||||||
// long l = 5, *lp;
|
// long l = 5, *lp;
|
||||||
// lp = &l;
|
// lp = &l;
|
||||||
// cp->cs.*cp->ouch = lp = cp->cs.*cp->autsch; /*b2, b3, b4*/
|
// cp->cs.*cp->ouch = lp = cp->cs.*cp->autsch; /*b2, b3, b4*/
|
||||||
|
@ -1039,8 +1040,18 @@ public abstract class IndexCPPBindingResolutionTest extends IndexBindingResoluti
|
||||||
assertEquals(binding2, getBindingFromASTName("f(const_int_ptr_const)", 1));
|
assertEquals(binding2, getBindingFromASTName("f(const_int_ptr_const)", 1));
|
||||||
assertEquals(binding2, getBindingFromASTName("f(int_const_ptr_const)", 1));
|
assertEquals(binding2, getBindingFromASTName("f(int_const_ptr_const)", 1));
|
||||||
|
|
||||||
assertEquals(2, getIndex().findNames(binding1, IIndex.FIND_DECLARATIONS).length);
|
if(strategy.isCompositeIndex()) {
|
||||||
assertEquals(4, getIndex().findNames(binding2, IIndex.FIND_DECLARATIONS).length);
|
// getIndex() returns the index for the referencing content only
|
||||||
|
assertEquals(0, getIndex().findNames(binding1, IIndex.FIND_DECLARATIONS).length);
|
||||||
|
assertEquals(0, getIndex().findNames(binding2, IIndex.FIND_DECLARATIONS).length);
|
||||||
|
assertEquals(1, getIndex().findNames(binding1, IIndex.FIND_DEFINITIONS).length);
|
||||||
|
assertEquals(1, getIndex().findNames(binding2, IIndex.FIND_DEFINITIONS).length);
|
||||||
|
} else {
|
||||||
|
assertEquals(2, getIndex().findNames(binding1, IIndex.FIND_DECLARATIONS).length);
|
||||||
|
assertEquals(4, getIndex().findNames(binding2, IIndex.FIND_DECLARATIONS).length);
|
||||||
|
assertEquals(1, getIndex().findNames(binding1, IIndex.FIND_DEFINITIONS).length);
|
||||||
|
assertEquals(1, getIndex().findNames(binding2, IIndex.FIND_DEFINITIONS).length);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// typedef struct S {int a;} S;
|
// typedef struct S {int a;} S;
|
||||||
|
|
|
@ -54,7 +54,8 @@ public class CIndex implements IIndex {
|
||||||
final private IIndexFragment[] fFragments;
|
final private IIndexFragment[] fFragments;
|
||||||
final private int fPrimaryFragmentCount;
|
final private int fPrimaryFragmentCount;
|
||||||
private int fReadLock;
|
private int fReadLock;
|
||||||
|
private ICompositesFactory cppCF, cCF, fCF;
|
||||||
|
|
||||||
public CIndex(IIndexFragment[] fragments, int primaryFragmentCount) {
|
public CIndex(IIndexFragment[] fragments, int primaryFragmentCount) {
|
||||||
fFragments= fragments;
|
fFragments= fragments;
|
||||||
fPrimaryFragmentCount= primaryFragmentCount;
|
fPrimaryFragmentCount= primaryFragmentCount;
|
||||||
|
@ -328,18 +329,23 @@ public class CIndex implements IIndex {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIndexBinding adaptBinding(IBinding binding) {
|
public IIndexBinding adaptBinding(IBinding binding) {
|
||||||
try {
|
try {
|
||||||
if(SPECIALCASE_SINGLES && fFragments.length==1) {
|
if(SPECIALCASE_SINGLES && fFragments.length==1) {
|
||||||
return fFragments[0].adaptBinding(binding);
|
return fFragments[0].adaptBinding(binding);
|
||||||
} else {
|
} else {
|
||||||
return getCompositesFactory(binding.getLinkage().getID()).getCompositeBinding(binding);
|
for (int i = 0; i < fPrimaryFragmentCount; i++) {
|
||||||
|
IIndexFragmentBinding adaptedBinding= fFragments[i].adaptBinding(binding);
|
||||||
|
if (adaptedBinding != null) {
|
||||||
|
return getCompositesFactory(binding.getLinkage().getID()).getCompositeBinding(adaptedBinding);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch(CoreException ce) {
|
} catch(CoreException ce) {
|
||||||
CCorePlugin.log(ce);
|
CCorePlugin.log(ce);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIndexBinding[] findBindings(char[] name, IndexFilter filter, IProgressMonitor monitor) throws CoreException {
|
public IIndexBinding[] findBindings(char[] name, IndexFilter filter, IProgressMonitor monitor) throws CoreException {
|
||||||
|
@ -391,7 +397,6 @@ public class CIndex implements IIndex {
|
||||||
return (IIndexFragmentBinding[]) result.toArray(new IIndexFragmentBinding[result.size()]);
|
return (IIndexFragmentBinding[]) result.toArray(new IIndexFragmentBinding[result.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICompositesFactory cppCF, cCF, fCF;
|
|
||||||
private ICompositesFactory getCompositesFactory(String linkageID) {
|
private ICompositesFactory getCompositesFactory(String linkageID) {
|
||||||
if(linkageID.equals(ILinkage.CPP_LINKAGE_ID)) {
|
if(linkageID.equals(ILinkage.CPP_LINKAGE_ID)) {
|
||||||
if(cppCF==null) {
|
if(cppCF==null) {
|
||||||
|
@ -423,7 +428,7 @@ public class CIndex implements IIndex {
|
||||||
}
|
}
|
||||||
public boolean acceptImplicitMethods() {
|
public boolean acceptImplicitMethods() {
|
||||||
return filter.acceptImplicitMethods();
|
return filter.acceptImplicitMethods();
|
||||||
};
|
}
|
||||||
public boolean acceptLinkage(ILinkage other) {
|
public boolean acceptLinkage(ILinkage other) {
|
||||||
return linkage.getID().equals(other.getID());
|
return linkage.getID().equals(other.getID());
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ public abstract class AbstractCompositeFactory implements ICompositesFactory {
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.ICompositesFactory#getCompositeBindings(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.internal.core.index.IIndexFragmentBinding[])
|
* @see org.eclipse.cdt.internal.core.index.composite.ICompositesFactory#getCompositeBindings(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.internal.core.index.IIndexFragmentBinding[])
|
||||||
*/
|
*/
|
||||||
public final IIndexBinding[] getCompositeBindings(IBinding[] bindings) {
|
public final IIndexBinding[] getCompositeBindings(IIndexFragmentBinding[] bindings) {
|
||||||
IIndexBinding[] result = new IIndexBinding[bindings.length];
|
IIndexBinding[] result = new IIndexBinding[bindings.length];
|
||||||
for(int i=0; i<result.length; i++)
|
for(int i=0; i<result.length; i++)
|
||||||
result[i] = getCompositeBinding(bindings[i]);
|
result[i] = getCompositeBinding(bindings[i]);
|
||||||
|
|
|
@ -13,9 +13,10 @@ package org.eclipse.cdt.internal.core.index.composite;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ILinkage;
|
import org.eclipse.cdt.core.dom.ILinkage;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,9 +37,9 @@ public abstract class CompositeIndexBinding implements IIndexBinding {
|
||||||
* and some ignore it as a representative binding from each fragment is needed to meet interface
|
* and some ignore it as a representative binding from each fragment is needed to meet interface
|
||||||
* contracts.
|
* contracts.
|
||||||
*/
|
*/
|
||||||
protected final IBinding rbinding;
|
protected final IIndexFragmentBinding rbinding;
|
||||||
|
|
||||||
public CompositeIndexBinding(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeIndexBinding(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
if(rbinding == null || cf == null)
|
if(rbinding == null || cf == null)
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
this.cf = cf;
|
this.cf = cf;
|
||||||
|
@ -69,7 +70,7 @@ public abstract class CompositeIndexBinding implements IIndexBinding {
|
||||||
}
|
}
|
||||||
|
|
||||||
public IScope getScope() throws DOMException {
|
public IScope getScope() throws DOMException {
|
||||||
return cf.getCompositeScope(rbinding.getScope());
|
return cf.getCompositeScope((IIndexScope)rbinding.getScope());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasDefinition() throws CoreException {
|
public boolean hasDefinition() throws CoreException {
|
||||||
|
|
|
@ -10,10 +10,14 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.index.composite;
|
package org.eclipse.cdt.internal.core.index.composite;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.IName;
|
import org.eclipse.cdt.core.dom.IName;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
|
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPCompositeBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
||||||
|
|
||||||
public abstract class CompositeScope implements IIndexScope {
|
public abstract class CompositeScope implements IIndexScope {
|
||||||
|
@ -27,9 +31,9 @@ public abstract class CompositeScope implements IIndexScope {
|
||||||
* and some ignore it as a representative binding from each fragment is needed to meet interface
|
* and some ignore it as a representative binding from each fragment is needed to meet interface
|
||||||
* contracts.
|
* contracts.
|
||||||
*/
|
*/
|
||||||
protected final IBinding rbinding;
|
protected final IIndexFragmentBinding rbinding;
|
||||||
|
|
||||||
public CompositeScope(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeScope(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
if(cf==null || rbinding==null)
|
if(cf==null || rbinding==null)
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
this.cf = cf;
|
this.cf = cf;
|
||||||
|
@ -37,15 +41,14 @@ public abstract class CompositeScope implements IIndexScope {
|
||||||
}
|
}
|
||||||
|
|
||||||
final public IScope getParent() throws DOMException {
|
final public IScope getParent() throws DOMException {
|
||||||
IScope rscope = rbinding.getScope();
|
IIndexScope rscope = (IIndexScope) rbinding.getScope();
|
||||||
if(rscope!=null) {
|
if(rscope!=null) {
|
||||||
return cf.getCompositeScope(rscope);
|
return cf.getCompositeScope(rscope);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: for c++ namespaces we are returning an arbitrary name
|
public IName getScopeName() throws DOMException {
|
||||||
final public IName getScopeName() throws DOMException {
|
|
||||||
if(rbinding instanceof IScope)
|
if(rbinding instanceof IScope)
|
||||||
return ((IScope) rbinding).getScopeName();
|
return ((IScope) rbinding).getScopeName();
|
||||||
return null;
|
return null;
|
||||||
|
@ -59,4 +62,39 @@ public abstract class CompositeScope implements IIndexScope {
|
||||||
public IBinding getRawScopeBinding() {
|
public IBinding getRawScopeBinding() {
|
||||||
return rbinding;
|
return rbinding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For bindings that are not known statically to be index bindings, we must decide how to
|
||||||
|
* process them by run-time type. This method processes a single binding accordingly.
|
||||||
|
* @param binding
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected final IBinding processUncertainBinding(IBinding binding) {
|
||||||
|
if(binding instanceof IIndexFragmentBinding) {
|
||||||
|
return cf.getCompositeBinding((IIndexFragmentBinding)binding);
|
||||||
|
} else if(binding instanceof ProblemBinding) {
|
||||||
|
return binding;
|
||||||
|
} else if(binding instanceof CPPCompositeBinding /* AST composite */) {
|
||||||
|
return new CPPCompositeBinding(
|
||||||
|
processUncertainBindings(((CPPCompositeBinding)binding).getBindings())
|
||||||
|
);
|
||||||
|
} else if(binding == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
CCorePlugin.log("CompositeFactory unsure how to process: "+binding.getClass().getName()); //$NON-NLS-1$
|
||||||
|
return binding;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience method for processing an array of bindings with {@link CompositeScope#processUncertainBinding(IBinding)}
|
||||||
|
* @param fragmentBindings
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected final IBinding[] processUncertainBindings(IBinding[] fragmentBindings) {
|
||||||
|
IBinding[] result= new IBinding[fragmentBindings.length];
|
||||||
|
for(int i=0; i<result.length; i++) {
|
||||||
|
result[i]= processUncertainBinding(fragmentBindings[i]);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ public abstract class CompositeType implements IType, IIndexType, ITypeContainer
|
||||||
}
|
}
|
||||||
|
|
||||||
public final IType getType() throws DOMException {
|
public final IType getType() throws DOMException {
|
||||||
return cf.getCompositeType(type.getType());
|
return cf.getCompositeType((IIndexType)type.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void fail() {
|
protected void fail() {
|
||||||
|
|
|
@ -11,15 +11,16 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite;
|
package org.eclipse.cdt.internal.core.index.composite;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
|
|
||||||
public interface ICompositesFactory {
|
public interface ICompositesFactory {
|
||||||
|
|
||||||
public IScope getCompositeScope(IScope rscope) throws DOMException;
|
public IScope getCompositeScope(IIndexScope rscope) throws DOMException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a composite (in the sense of potentially spanning multiple index fragments - i.e. not to be confused
|
* Returns a composite (in the sense of potentially spanning multiple index fragments - i.e. not to be confused
|
||||||
|
@ -28,7 +29,7 @@ public interface ICompositesFactory {
|
||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public IType getCompositeType(IType rtype) throws DOMException;
|
public IType getCompositeType(IIndexType rtype) throws DOMException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a composite (index context carrying) binding for the specified binding. It does not
|
* Returns a composite (index context carrying) binding for the specified binding. It does not
|
||||||
|
@ -38,16 +39,8 @@ public interface ICompositesFactory {
|
||||||
* binding methods
|
* binding methods
|
||||||
* @return a composite (index context carrying) binding for the specified binding
|
* @return a composite (index context carrying) binding for the specified binding
|
||||||
*/
|
*/
|
||||||
public IIndexBinding getCompositeBinding(IBinding binding);
|
public IIndexBinding getCompositeBinding(IIndexFragmentBinding binding);
|
||||||
|
|
||||||
/**
|
|
||||||
* A convenience method that operates as getCompositeBinding but over the contents of an array
|
|
||||||
* @param index the context to construct the composite binding for
|
|
||||||
* @param bindings an array of composite bindings to use when pair-wise constructing the result via getCompositeBinding
|
|
||||||
* @return an array of composite bindings pair-wise constructed via getCompositeBinding
|
|
||||||
*/
|
|
||||||
public IIndexBinding[] getCompositeBindings(IBinding[] bindings);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Identifies common bindings, calls getCompositeBindings
|
* Identifies common bindings, calls getCompositeBindings
|
||||||
* @param index
|
* @param index
|
||||||
|
|
|
@ -14,7 +14,6 @@ import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IArrayType;
|
import org.eclipse.cdt.core.dom.ast.IArrayType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBasicType;
|
import org.eclipse.cdt.core.dom.ast.IBasicType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IEnumeration;
|
import org.eclipse.cdt.core.dom.ast.IEnumeration;
|
||||||
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
||||||
|
@ -31,6 +30,8 @@ import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
|
||||||
import org.eclipse.cdt.core.index.IIndex;
|
import org.eclipse.cdt.core.index.IIndex;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.AbstractCompositeFactory;
|
import org.eclipse.cdt.internal.core.index.composite.AbstractCompositeFactory;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositeArrayType;
|
import org.eclipse.cdt.internal.core.index.composite.CompositeArrayType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositePointerType;
|
import org.eclipse.cdt.internal.core.index.composite.CompositePointerType;
|
||||||
|
@ -47,7 +48,7 @@ public class CCompositesFactory extends AbstractCompositeFactory implements ICom
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeScope(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IScope)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeScope(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IScope)
|
||||||
*/
|
*/
|
||||||
public IScope getCompositeScope(IScope rscope) {
|
public IScope getCompositeScope(IIndexScope rscope) {
|
||||||
if(rscope==null)
|
if(rscope==null)
|
||||||
return null;
|
return null;
|
||||||
if(rscope instanceof ICCompositeTypeScope) {
|
if(rscope instanceof ICCompositeTypeScope) {
|
||||||
|
@ -65,7 +66,7 @@ public class CCompositesFactory extends AbstractCompositeFactory implements ICom
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
|
||||||
*/
|
*/
|
||||||
public IType getCompositeType(IType rtype) throws DOMException {
|
public IType getCompositeType(IIndexType rtype) throws DOMException {
|
||||||
IType result;
|
IType result;
|
||||||
|
|
||||||
if(rtype==null) {
|
if(rtype==null) {
|
||||||
|
@ -95,7 +96,7 @@ public class CCompositesFactory extends AbstractCompositeFactory implements ICom
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeBinding(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IBinding)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeBinding(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IBinding)
|
||||||
*/
|
*/
|
||||||
public IIndexBinding getCompositeBinding(IBinding rbinding) {
|
public IIndexBinding getCompositeBinding(IIndexFragmentBinding rbinding) {
|
||||||
IIndexBinding result;
|
IIndexBinding result;
|
||||||
|
|
||||||
if(rbinding==null) {
|
if(rbinding==null) {
|
||||||
|
|
|
@ -10,12 +10,12 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositeIndexBinding;
|
import org.eclipse.cdt.internal.core.index.composite.CompositeIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
abstract class CompositeCBinding extends CompositeIndexBinding {
|
abstract class CompositeCBinding extends CompositeIndexBinding {
|
||||||
public CompositeCBinding(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCBinding(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,17 +14,15 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IProblemBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
|
import org.eclipse.cdt.core.dom.ast.c.ICCompositeTypeScope;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositeScope;
|
import org.eclipse.cdt.internal.core.index.composite.CompositeScope;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositingNotImplementedError;
|
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCCompositeScope extends CompositeScope implements ICCompositeTypeScope {
|
class CompositeCCompositeScope extends CompositeScope implements ICCompositeTypeScope {
|
||||||
|
|
||||||
public CompositeCCompositeScope(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCCompositeScope(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,25 +36,18 @@ class CompositeCCompositeScope extends CompositeScope implements ICCompositeType
|
||||||
|
|
||||||
public IBinding getBinding(IASTName name, boolean resolve) throws DOMException {
|
public IBinding getBinding(IASTName name, boolean resolve) throws DOMException {
|
||||||
IBinding binding = ((ICompositeType)rbinding).getCompositeScope().getBinding(name, resolve);
|
IBinding binding = ((ICompositeType)rbinding).getCompositeScope().getBinding(name, resolve);
|
||||||
if(binding instanceof IIndexFragmentBinding) {
|
return processUncertainBinding(binding);
|
||||||
IIndexFragmentBinding preresult = (IIndexFragmentBinding) binding;
|
|
||||||
return cf.getCompositeBinding(preresult);
|
|
||||||
}
|
|
||||||
if(binding!=null && !(binding instanceof IProblemBinding)) {
|
|
||||||
throw new CompositingNotImplementedError(binding.getClass().toString());
|
|
||||||
}
|
|
||||||
return binding;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBinding[] find(String name, boolean prefixLookup)
|
public IBinding[] find(String name, boolean prefixLookup)
|
||||||
throws DOMException {
|
throws DOMException {
|
||||||
IBinding[] preresult = ((ICompositeType)rbinding).getCompositeScope().find(name, prefixLookup);
|
IBinding[] preresult = ((ICompositeType)rbinding).getCompositeScope().find(name, prefixLookup);
|
||||||
return cf.getCompositeBindings(preresult);
|
return processUncertainBindings(preresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBinding[] find(String name) throws DOMException {
|
public IBinding[] find(String name) throws DOMException {
|
||||||
IBinding[] preresult = ((ICompositeType)rbinding).getCompositeScope().find(name);
|
IBinding[] preresult = ((ICompositeType)rbinding).getCompositeScope().find(name);
|
||||||
return cf.getCompositeBindings(preresult);
|
return processUncertainBindings(preresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIndexBinding getScopeBinding() {
|
public IIndexBinding getScopeBinding() {
|
||||||
|
|
|
@ -11,18 +11,19 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCEnumerator extends CompositeCBinding implements IIndexBinding, IEnumerator {
|
class CompositeCEnumerator extends CompositeCBinding implements IIndexBinding, IEnumerator {
|
||||||
public CompositeCEnumerator(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCEnumerator(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
return cf.getCompositeType(((IEnumerator)rbinding).getType());
|
return cf.getCompositeType((IIndexType)((IEnumerator)rbinding).getType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,15 +15,16 @@ import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IField;
|
import org.eclipse.cdt.core.dom.ast.IField;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCField extends CompositeCVariable implements IIndexBinding, IField {
|
class CompositeCField extends CompositeCVariable implements IIndexBinding, IField {
|
||||||
public CompositeCField(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCField(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICompositeType getCompositeTypeOwner() throws DOMException {
|
public ICompositeType getCompositeTypeOwner() throws DOMException {
|
||||||
IBinding preresult = ((IField)rbinding).getCompositeTypeOwner();
|
IBinding preresult = ((IField)rbinding).getCompositeTypeOwner();
|
||||||
return (ICompositeType) cf.getCompositeBinding(preresult);
|
return (ICompositeType) cf.getCompositeBinding((IIndexFragmentBinding)preresult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,18 +11,19 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IFunction;
|
import org.eclipse.cdt.core.dom.ast.IFunction;
|
||||||
import org.eclipse.cdt.core.dom.ast.IFunctionType;
|
import org.eclipse.cdt.core.dom.ast.IFunctionType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IParameter;
|
import org.eclipse.cdt.core.dom.ast.IParameter;
|
||||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCFunction extends CompositeCBinding implements IIndexBinding, IFunction {
|
class CompositeCFunction extends CompositeCBinding implements IIndexBinding, IFunction {
|
||||||
|
|
||||||
public CompositeCFunction(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCFunction(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,11 +33,11 @@ class CompositeCFunction extends CompositeCBinding implements IIndexBinding, IFu
|
||||||
IParameter[] preResult = ((IFunction)rbinding).getParameters();
|
IParameter[] preResult = ((IFunction)rbinding).getParameters();
|
||||||
IParameter[] result = new IParameter[preResult.length];
|
IParameter[] result = new IParameter[preResult.length];
|
||||||
for(int i=0; i<preResult.length; i++) {
|
for(int i=0; i<preResult.length; i++) {
|
||||||
result[i] = (IParameter) cf.getCompositeBinding(preResult[i]);
|
result[i] = (IParameter) cf.getCompositeBinding((IIndexFragmentBinding) preResult[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IFunctionType getType() throws DOMException {
|
public IFunctionType getType() throws DOMException {
|
||||||
/* @see PDOMCFunction.getType() */
|
/* @see PDOMCFunction.getType() */
|
||||||
return new IFunctionType() {
|
return new IFunctionType() {
|
||||||
|
@ -45,18 +46,22 @@ class CompositeCFunction extends CompositeCBinding implements IIndexBinding, IFu
|
||||||
IType[] result = new IType[preresult.length];
|
IType[] result = new IType[preresult.length];
|
||||||
for(int i=0; i<preresult.length; i++) {
|
for(int i=0; i<preresult.length; i++) {
|
||||||
assert preresult!=null;
|
assert preresult!=null;
|
||||||
result[i] = cf.getCompositeType(preresult[i]);
|
result[i] = cf.getCompositeType((IIndexType)preresult[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getReturnType() throws DOMException {
|
public IType getReturnType() throws DOMException {
|
||||||
IType type = ((IFunctionType)rbinding).getReturnType();
|
IType type = ((IFunction)rbinding).getType().getReturnType();
|
||||||
return cf.getCompositeType(type);
|
return cf.getCompositeType((IIndexType)type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSameType(IType type) {
|
public boolean isSameType(IType type) {
|
||||||
return ((IFunctionType)rbinding).isSameType(type);
|
try {
|
||||||
|
return ((IFunction)rbinding).getType().isSameType(type);
|
||||||
|
} catch(DOMException de) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object clone() {fail(); return null;}
|
public Object clone() {fail(); return null;}
|
||||||
|
|
|
@ -11,21 +11,22 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IParameter;
|
import org.eclipse.cdt.core.dom.ast.IParameter;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCParameter extends CompositeCBinding implements IIndexBinding, IParameter {
|
class CompositeCParameter extends CompositeCBinding implements IIndexBinding, IParameter {
|
||||||
|
|
||||||
public CompositeCParameter(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCParameter(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType rtype = ((IParameter)rbinding).getType();
|
IType rtype = ((IParameter)rbinding).getType();
|
||||||
return cf.getCompositeType(rtype);
|
return cf.getCompositeType((IIndexType)rtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAuto() throws DOMException {
|
public boolean isAuto() throws DOMException {
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IField;
|
import org.eclipse.cdt.core.dom.ast.IField;
|
||||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
|
@ -23,7 +22,7 @@ import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCStructure extends CompositeCBinding implements IIndexBinding, ICompositeType, IIndexType {
|
class CompositeCStructure extends CompositeCBinding implements IIndexBinding, ICompositeType, IIndexType {
|
||||||
|
|
||||||
public CompositeCStructure(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCStructure(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,21 +11,21 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
|
import org.eclipse.cdt.internal.core.dom.parser.ITypeContainer;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexType;
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCTypedef extends CompositeCBinding implements ITypedef, IIndexType, ITypeContainer {
|
class CompositeCTypedef extends CompositeCBinding implements ITypedef, IIndexType, ITypeContainer {
|
||||||
public CompositeCTypedef(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCTypedef(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType type = ((ITypedef)rbinding).getType();
|
IType type = ((ITypedef)rbinding).getType();
|
||||||
return cf.getCompositeType(type);
|
return cf.getCompositeType((IIndexType)type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSameType(IType type) {
|
public boolean isSameType(IType type) {
|
||||||
|
|
|
@ -11,21 +11,22 @@
|
||||||
package org.eclipse.cdt.internal.core.index.composite.c;
|
package org.eclipse.cdt.internal.core.index.composite.c;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.IVariable;
|
import org.eclipse.cdt.core.dom.ast.IVariable;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCVariable extends CompositeCBinding implements IIndexBinding, IVariable {
|
class CompositeCVariable extends CompositeCBinding implements IIndexBinding, IVariable {
|
||||||
|
|
||||||
public CompositeCVariable(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCVariable(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType rtype = ((IVariable)rbinding).getType();
|
IType rtype = ((IVariable)rbinding).getType();
|
||||||
return cf.getCompositeType(rtype);
|
return cf.getCompositeType((IIndexType)rtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAuto() throws DOMException {
|
public boolean isAuto() throws DOMException {
|
||||||
|
|
|
@ -40,7 +40,8 @@ import org.eclipse.cdt.core.index.IIndex;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.CIndex;
|
import org.eclipse.cdt.internal.core.index.CIndex;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentName;
|
import org.eclipse.cdt.internal.core.index.IIndexScope;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.AbstractCompositeFactory;
|
import org.eclipse.cdt.internal.core.index.composite.AbstractCompositeFactory;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositeArrayType;
|
import org.eclipse.cdt.internal.core.index.composite.CompositeArrayType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositePointerType;
|
import org.eclipse.cdt.internal.core.index.composite.CompositePointerType;
|
||||||
|
@ -54,41 +55,46 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
public CPPCompositesFactory(IIndex index) {
|
public CPPCompositesFactory(IIndex index) {
|
||||||
super(index);
|
super(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeScope(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IScope)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeScope(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IScope)
|
||||||
*/
|
*/
|
||||||
public IScope getCompositeScope(IScope rscope) throws DOMException {
|
public IScope getCompositeScope(IIndexScope rscope) throws DOMException {
|
||||||
IScope result;
|
IScope result;
|
||||||
|
|
||||||
if(rscope == null) {
|
try {
|
||||||
return null;
|
if(rscope == null) {
|
||||||
} else if(rscope instanceof ICPPClassScope) {
|
return null;
|
||||||
ICPPClassScope classScope = (ICPPClassScope) rscope;
|
} else if(rscope instanceof ICPPClassScope) {
|
||||||
result = new CompositeCPPClassScope(this,
|
ICPPClassScope classScope = (ICPPClassScope) rscope;
|
||||||
findOneDefinition(classScope.getClassType()));
|
result = new CompositeCPPClassScope(this,
|
||||||
} else if(rscope instanceof ICPPNamespaceScope) {
|
findOneDefinition(classScope.getClassType()));
|
||||||
ICPPNamespaceScope nScope = (ICPPNamespaceScope) rscope;
|
} else if(rscope instanceof ICPPNamespaceScope) {
|
||||||
try {
|
ICPPNamespace[] namespaces;
|
||||||
IBinding binding = ((IIndexFragmentName) nScope.getScopeName()).getBinding();
|
if(rscope instanceof CompositeCPPNamespace) {
|
||||||
result = ((ICPPNamespace)binding).getNamespaceScope();
|
// avoid duplicating the search
|
||||||
} catch(CoreException ce) {
|
namespaces = ((CompositeCPPNamespace)rscope).namespaces;
|
||||||
CCorePlugin.log(ce);
|
} else {
|
||||||
throw new CompositingNotImplementedError(ce.getMessage());
|
namespaces = getNamespaces(rscope.getScopeBinding());
|
||||||
|
}
|
||||||
|
return new CompositeCPPNamespaceScope(this, namespaces);
|
||||||
|
} else {
|
||||||
|
throw new CompositingNotImplementedError();
|
||||||
}
|
}
|
||||||
} else {
|
} catch(CoreException ce) {
|
||||||
throw new CompositingNotImplementedError();
|
CCorePlugin.log(ce);
|
||||||
}
|
throw new CompositingNotImplementedError(ce.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeType(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IType)
|
||||||
*/
|
*/
|
||||||
public IType getCompositeType(IType rtype) throws DOMException {
|
public IType getCompositeType(IIndexType rtype) throws DOMException {
|
||||||
IType result;
|
IType result;
|
||||||
|
|
||||||
if(rtype instanceof ICPPClassType) {
|
if(rtype instanceof ICPPClassType) {
|
||||||
result = (ICPPClassType) getCompositeBinding((IIndexFragmentBinding) rtype);
|
result = (ICPPClassType) getCompositeBinding((IIndexFragmentBinding) rtype);
|
||||||
} else if(rtype instanceof ITypedef) {
|
} else if(rtype instanceof ITypedef) {
|
||||||
|
@ -116,7 +122,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private ICPPNamespace[] getNamespaces(IBinding rbinding) throws CoreException {
|
private ICPPNamespace[] getNamespaces(IBinding rbinding) throws CoreException {
|
||||||
CIndex cindex = (CIndex) index;
|
CIndex cindex = (CIndex) index;
|
||||||
IIndexBinding[] ibs = cindex.findEquivalentBindings(rbinding);
|
IIndexBinding[] ibs = cindex.findEquivalentBindings(rbinding);
|
||||||
|
@ -129,7 +135,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeBinding(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IBinding)
|
* @see org.eclipse.cdt.internal.core.index.composite.cpp.ICompositesFactory#getCompositeBinding(org.eclipse.cdt.core.index.IIndex, org.eclipse.cdt.core.dom.ast.IBinding)
|
||||||
*/
|
*/
|
||||||
public IIndexBinding getCompositeBinding(IBinding binding) {
|
public IIndexBinding getCompositeBinding(IIndexFragmentBinding binding) {
|
||||||
IIndexBinding result;
|
IIndexBinding result;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -169,7 +175,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
CCorePlugin.log(ce);
|
CCorePlugin.log(ce);
|
||||||
throw new CompositingNotImplementedError(ce.getMessage());
|
throw new CompositingNotImplementedError(ce.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,19 +14,16 @@ import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.IProblemBinding;
|
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPCompositeBinding;
|
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositeScope;
|
import org.eclipse.cdt.internal.core.index.composite.CompositeScope;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.CompositingNotImplementedError;
|
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCPPClassScope extends CompositeScope implements ICPPClassScope {
|
class CompositeCPPClassScope extends CompositeScope implements ICPPClassScope {
|
||||||
public CompositeCPPClassScope(ICompositesFactory cf, IBinding rbinding) {
|
public CompositeCPPClassScope(ICompositesFactory cf, IIndexFragmentBinding rbinding) {
|
||||||
super(cf, rbinding);
|
super(cf, rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +36,7 @@ class CompositeCPPClassScope extends CompositeScope implements ICPPClassScope {
|
||||||
ICPPClassScope rscope = (ICPPClassScope) ((ICPPClassType)rbinding).getCompositeScope();
|
ICPPClassScope rscope = (ICPPClassScope) ((ICPPClassType)rbinding).getCompositeScope();
|
||||||
ICPPMethod[] result = rscope.getImplicitMethods();
|
ICPPMethod[] result = rscope.getImplicitMethods();
|
||||||
for(int i=0; i<result.length; i++) {
|
for(int i=0; i<result.length; i++) {
|
||||||
result[i] = (ICPPMethod) cf.getCompositeBinding(result[i]);
|
result[i] = (ICPPMethod) cf.getCompositeBinding((IIndexFragmentBinding)result[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} catch (DOMException de) {
|
} catch (DOMException de) {
|
||||||
|
@ -50,29 +47,18 @@ class CompositeCPPClassScope extends CompositeScope implements ICPPClassScope {
|
||||||
|
|
||||||
public IBinding getBinding(IASTName name, boolean resolve) throws DOMException {
|
public IBinding getBinding(IASTName name, boolean resolve) throws DOMException {
|
||||||
IBinding binding = ((ICPPClassType)rbinding).getCompositeScope().getBinding(name, resolve);
|
IBinding binding = ((ICPPClassType)rbinding).getCompositeScope().getBinding(name, resolve);
|
||||||
if(binding instanceof IIndexFragmentBinding) {
|
return processUncertainBinding(binding);
|
||||||
return cf.getCompositeBinding((IIndexFragmentBinding) binding);
|
|
||||||
}
|
|
||||||
if(binding instanceof CPPCompositeBinding /* AST composite */) {
|
|
||||||
return new CPPCompositeBinding(
|
|
||||||
cf.getCompositeBindings(((CPPCompositeBinding)binding).getBindings())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if(binding!=null && !(binding instanceof IProblemBinding)) {
|
|
||||||
throw new CompositingNotImplementedError(binding.getClass().toString());
|
|
||||||
}
|
|
||||||
return binding;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBinding[] find(String name, boolean prefixLookup)
|
public IBinding[] find(String name, boolean prefixLookup)
|
||||||
throws DOMException {
|
throws DOMException {
|
||||||
IBinding[] preresult = ((ICPPClassType)rbinding).getCompositeScope().find(name, prefixLookup);
|
IBinding[] preresult = ((ICPPClassType)rbinding).getCompositeScope().find(name, prefixLookup);
|
||||||
return cf.getCompositeBindings(preresult);
|
return processUncertainBindings(preresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBinding[] find(String name) throws DOMException {
|
public IBinding[] find(String name) throws DOMException {
|
||||||
IBinding[] preresult = ((ICPPClassType)rbinding).getCompositeScope().find(name);
|
IBinding[] preresult = ((ICPPClassType)rbinding).getCompositeScope().find(name);
|
||||||
return cf.getCompositeBindings(preresult);
|
return processUncertainBindings(preresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIndexBinding getScopeBinding() {
|
public IIndexBinding getScopeBinding() {
|
||||||
|
|
|
@ -21,6 +21,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndexType;
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
|
@ -35,14 +36,13 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
|
||||||
|
|
||||||
public IField findField(String name) throws DOMException {
|
public IField findField(String name) throws DOMException {
|
||||||
IField preResult = ((ICPPClassType)rbinding).findField(name);
|
IField preResult = ((ICPPClassType)rbinding).findField(name);
|
||||||
return (IField) cf.getCompositeBinding(preResult);
|
return (IField) cf.getCompositeBinding((IIndexFragmentBinding)preResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICPPMethod[] getAllDeclaredMethods() throws DOMException {
|
public ICPPMethod[] getAllDeclaredMethods() throws DOMException {
|
||||||
ICPPMethod[] preResult = ((ICPPClassType)rbinding).getAllDeclaredMethods();
|
ICPPMethod[] result = ((ICPPClassType)rbinding).getAllDeclaredMethods();
|
||||||
ICPPMethod[] result = new ICPPMethod[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i] = (ICPPMethod) cf.getCompositeBinding((IIndexFragmentBinding)result[i]);
|
||||||
result[i] = (ICPPMethod) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
|
||||||
final int n = i;
|
final int n = i;
|
||||||
result[i] = new ICPPBase() {
|
result[i] = new ICPPBase() {
|
||||||
public IBinding getBaseClass() throws DOMException {
|
public IBinding getBaseClass() throws DOMException {
|
||||||
return cf.getCompositeBinding(preresult[n].getBaseClass());
|
return cf.getCompositeBinding((IIndexFragmentBinding)preresult[n].getBaseClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getVisibility() throws DOMException {
|
public int getVisibility() throws DOMException {
|
||||||
|
@ -74,37 +74,33 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICPPConstructor[] getConstructors() throws DOMException {
|
public ICPPConstructor[] getConstructors() throws DOMException {
|
||||||
ICPPConstructor[] preResult = ((ICPPClassType)rbinding).getConstructors();
|
ICPPConstructor[] result = ((ICPPClassType)rbinding).getConstructors();
|
||||||
ICPPConstructor[] result = new ICPPConstructor[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i] = (ICPPConstructor) cf.getCompositeBinding((IIndexFragmentBinding) result[i]);
|
||||||
result[i] = (ICPPConstructor) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICPPField[] getDeclaredFields() throws DOMException {
|
public ICPPField[] getDeclaredFields() throws DOMException {
|
||||||
ICPPField[] preResult = ((ICPPClassType)rbinding).getDeclaredFields();
|
ICPPField[] result = ((ICPPClassType)rbinding).getDeclaredFields();
|
||||||
ICPPField[] result = new ICPPField[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i] = (ICPPField) cf.getCompositeBinding((IIndexFragmentBinding)result[i]);
|
||||||
result[i] = (ICPPField) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICPPMethod[] getDeclaredMethods() throws DOMException {
|
public ICPPMethod[] getDeclaredMethods() throws DOMException {
|
||||||
ICPPMethod[] preResult = ((ICPPClassType)rbinding).getDeclaredMethods();
|
ICPPMethod[] result = ((ICPPClassType)rbinding).getDeclaredMethods();
|
||||||
ICPPMethod[] result = new ICPPMethod[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i]= (ICPPMethod) cf.getCompositeBinding((IIndexFragmentBinding)result[i]);
|
||||||
result[i] = (ICPPMethod) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IField[] getFields() throws DOMException {
|
public IField[] getFields() throws DOMException {
|
||||||
IField[] preResult = ((ICPPClassType)rbinding).getFields();
|
IField[] result = ((ICPPClassType)rbinding).getFields();
|
||||||
IField[] result = new IField[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i]= (IField) cf.getCompositeBinding((IIndexFragmentBinding)result[i]);
|
||||||
result[i] = (IField) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -113,7 +109,7 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
|
||||||
IBinding[] preResult = ((ICPPClassType)rbinding).getFriends();
|
IBinding[] preResult = ((ICPPClassType)rbinding).getFriends();
|
||||||
IBinding[] result = new IBinding[preResult.length];
|
IBinding[] result = new IBinding[preResult.length];
|
||||||
for(int i=0; i<preResult.length; i++) {
|
for(int i=0; i<preResult.length; i++) {
|
||||||
result[i] = cf.getCompositeBinding(preResult[i]);
|
result[i] = cf.getCompositeBinding((IIndexFragmentBinding) preResult[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -121,16 +117,15 @@ class CompositeCPPClassType extends CompositeCPPBinding implements ICPPClassType
|
||||||
public ICPPMethod[] getMethods() throws DOMException {
|
public ICPPMethod[] getMethods() throws DOMException {
|
||||||
ICPPMethod[] result = ((ICPPClassType)rbinding).getMethods();
|
ICPPMethod[] result = ((ICPPClassType)rbinding).getMethods();
|
||||||
for(int i=0; i<result.length; i++) {
|
for(int i=0; i<result.length; i++) {
|
||||||
result[i] = (ICPPMethod) cf.getCompositeBinding(result[i]);
|
result[i] = (ICPPMethod) cf.getCompositeBinding((IIndexFragmentBinding) result[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICPPClassType[] getNestedClasses() throws DOMException {
|
public ICPPClassType[] getNestedClasses() throws DOMException {
|
||||||
ICPPClassType[] preResult = ((ICPPClassType)rbinding).getNestedClasses();
|
ICPPClassType[] result = ((ICPPClassType)rbinding).getNestedClasses();
|
||||||
ICPPClassType[] result = new ICPPClassType[preResult.length];
|
for(int i=0; i<result.length; i++) {
|
||||||
for(int i=0; i<preResult.length; i++) {
|
result[i] = (ICPPClassType) cf.getCompositeBinding((IIndexFragmentBinding) result[i]);
|
||||||
result[i] = (ICPPClassType) cf.getCompositeBinding(preResult[i]);
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
import org.eclipse.cdt.core.dom.ast.IEnumerator;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCPPEnumerator extends CompositeCPPBinding implements IEnumerator {
|
class CompositeCPPEnumerator extends CompositeCPPBinding implements IEnumerator {
|
||||||
|
@ -23,6 +24,6 @@ class CompositeCPPEnumerator extends CompositeCPPBinding implements IEnumerator
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType type = ((IEnumerator)rbinding).getType();
|
IType type = ((IEnumerator)rbinding).getType();
|
||||||
return cf.getCompositeType(type);
|
return cf.getCompositeType((IIndexType)type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,6 @@ class CompositeCPPField extends CompositeCPPVariable implements ICPPField {
|
||||||
|
|
||||||
public ICompositeType getCompositeTypeOwner() throws DOMException {
|
public ICompositeType getCompositeTypeOwner() throws DOMException {
|
||||||
IBinding preresult = ((IField)rbinding).getCompositeTypeOwner();
|
IBinding preresult = ((IField)rbinding).getCompositeTypeOwner();
|
||||||
return (ICompositeType) cf.getCompositeBinding(preresult);
|
return (ICompositeType) cf.getCompositeBinding((IIndexFragmentBinding) preresult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,13 +83,13 @@ class CompositeCPPFunction extends CompositeCPPBinding implements ICPPFunction,
|
||||||
public IType[] getParameterTypes() throws DOMException {
|
public IType[] getParameterTypes() throws DOMException {
|
||||||
IType[] result = ((ICPPFunctionType)rbinding).getParameterTypes();
|
IType[] result = ((ICPPFunctionType)rbinding).getParameterTypes();
|
||||||
for(int i=0; i<result.length; i++) {
|
for(int i=0; i<result.length; i++) {
|
||||||
result[i] = cf.getCompositeType(result[i]);
|
result[i] = cf.getCompositeType((IIndexType)result[i]);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IType getReturnType() throws DOMException {
|
public IType getReturnType() throws DOMException {
|
||||||
return cf.getCompositeType(((ICPPFunctionType)rbinding).getReturnType());
|
return cf.getCompositeType((IIndexType)((ICPPFunctionType)rbinding).getReturnType());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSameType(IType type) {
|
public boolean isSameType(IType type) {
|
||||||
|
|
|
@ -10,10 +10,12 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.index.composite.cpp;
|
package org.eclipse.cdt.internal.core.index.composite.cpp;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.IName;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTNode;
|
import org.eclipse.cdt.core.dom.ast.IASTNode;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
|
||||||
import org.eclipse.cdt.core.index.IIndexBinding;
|
import org.eclipse.cdt.core.index.IIndexBinding;
|
||||||
|
@ -25,7 +27,7 @@ class CompositeCPPNamespaceScope extends CompositeScope implements ICPPNamespace
|
||||||
ICPPNamespace[] namespaces;
|
ICPPNamespace[] namespaces;
|
||||||
|
|
||||||
public CompositeCPPNamespaceScope(ICompositesFactory cf, ICPPNamespace[] namespaces) {
|
public CompositeCPPNamespaceScope(ICompositesFactory cf, ICPPNamespace[] namespaces) {
|
||||||
super(cf, namespaces[0]);
|
super(cf, (IIndexFragmentBinding) namespaces[0]);
|
||||||
this.namespaces = namespaces;
|
this.namespaces = namespaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,11 +41,11 @@ class CompositeCPPNamespaceScope extends CompositeScope implements ICPPNamespace
|
||||||
|
|
||||||
public IBinding getBinding(IASTName name, boolean resolve)
|
public IBinding getBinding(IASTName name, boolean resolve)
|
||||||
throws DOMException {
|
throws DOMException {
|
||||||
IIndexFragmentBinding preresult = null;
|
IBinding preresult = null;
|
||||||
for(int i=0; preresult==null && i<namespaces.length; i++) {
|
for(int i=0; preresult==null && i<namespaces.length; i++) {
|
||||||
preresult = (IIndexFragmentBinding) namespaces[i].getNamespaceScope().getBinding(name, resolve);
|
preresult = namespaces[i].getNamespaceScope().getBinding(name, resolve);
|
||||||
}
|
}
|
||||||
return cf.getCompositeBinding(preresult);
|
return processUncertainBinding(preresult);
|
||||||
}
|
}
|
||||||
|
|
||||||
final public IBinding[] find(String name) throws DOMException {
|
final public IBinding[] find(String name) throws DOMException {
|
||||||
|
@ -69,4 +71,16 @@ class CompositeCPPNamespaceScope extends CompositeScope implements ICPPNamespace
|
||||||
public IIndexBinding getScopeBinding() {
|
public IIndexBinding getScopeBinding() {
|
||||||
return cf.getCompositeBinding(rbinding);
|
return cf.getCompositeBinding(rbinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IName getScopeName() throws DOMException {
|
||||||
|
for(int i=0; i<namespaces.length; i++) {
|
||||||
|
if(namespaces[i] instanceof IScope) {
|
||||||
|
IScope s= (IScope) namespaces[i];
|
||||||
|
IName nm= s.getScopeName();
|
||||||
|
if(nm!=null)
|
||||||
|
return nm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ class CompositeCPPTypedef extends CompositeCPPBinding implements ITypedef, IInde
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType type = ((ITypedef)rbinding).getType();
|
IType type = ((ITypedef)rbinding).getType();
|
||||||
return cf.getCompositeType(type);
|
return cf.getCompositeType((IIndexType)type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSameType(IType type) {
|
public boolean isSameType(IType type) {
|
||||||
|
|
|
@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.index.composite.cpp;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexType;
|
||||||
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
import org.eclipse.cdt.internal.core.index.composite.ICompositesFactory;
|
||||||
|
|
||||||
class CompositeCPPVariable extends CompositeCPPBinding implements ICPPVariable {
|
class CompositeCPPVariable extends CompositeCPPBinding implements ICPPVariable {
|
||||||
|
@ -27,7 +28,7 @@ class CompositeCPPVariable extends CompositeCPPBinding implements ICPPVariable {
|
||||||
|
|
||||||
public IType getType() throws DOMException {
|
public IType getType() throws DOMException {
|
||||||
IType rtype = ((ICPPVariable)rbinding).getType();
|
IType rtype = ((ICPPVariable)rbinding).getType();
|
||||||
return cf.getCompositeType(rtype);
|
return cf.getCompositeType((IIndexType)rtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAuto() throws DOMException {
|
public boolean isAuto() throws DOMException {
|
||||||
|
|
|
@ -21,6 +21,8 @@ import org.eclipse.cdt.core.dom.ast.IScope;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
||||||
import org.eclipse.cdt.internal.core.Util;
|
import org.eclipse.cdt.internal.core.Util;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragment;
|
||||||
|
import org.eclipse.cdt.internal.core.index.IIndexFragmentBinding;
|
||||||
import org.eclipse.cdt.internal.core.pdom.PDOM;
|
import org.eclipse.cdt.internal.core.pdom.PDOM;
|
||||||
import org.eclipse.cdt.internal.core.pdom.db.Database;
|
import org.eclipse.cdt.internal.core.pdom.db.Database;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
|
||||||
|
@ -34,7 +36,7 @@ import org.eclipse.core.runtime.CoreException;
|
||||||
*
|
*
|
||||||
* @author Doug Schaefer
|
* @author Doug Schaefer
|
||||||
*/
|
*/
|
||||||
class PDOMCParameter extends PDOMNamedNode implements IParameter {
|
class PDOMCParameter extends PDOMNamedNode implements IParameter, IIndexFragmentBinding {
|
||||||
|
|
||||||
private static final int NEXT_PARAM = PDOMNamedNode.RECORD_SIZE + 0;
|
private static final int NEXT_PARAM = PDOMNamedNode.RECORD_SIZE + 0;
|
||||||
private static final int TYPE = PDOMNamedNode.RECORD_SIZE + 4;
|
private static final int TYPE = PDOMNamedNode.RECORD_SIZE + 4;
|
||||||
|
@ -137,4 +139,33 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter {
|
||||||
return new char[0];
|
return new char[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IIndexFragment getFragment() {
|
||||||
|
return pdom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasDefinition() throws CoreException {
|
||||||
|
// parameter bindings do not span index fragments
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int compareTo(Object arg0) {
|
||||||
|
throw new PDOMNotImplementedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFileLocal() throws CoreException {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getQualifiedName() {
|
||||||
|
throw new PDOMNotImplementedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
public char[][] getQualifiedNameCharArray() throws DOMException {
|
||||||
|
throw new PDOMNotImplementedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isGloballyQualified() throws DOMException {
|
||||||
|
throw new PDOMNotImplementedError();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue