mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-19 23:15:24 +02:00
Eliminating use of the adapter in IBinding. I'm not sure that was the right choice since you need context information since a binding can exist in more than one project.
This commit is contained in:
parent
0623b903f8
commit
5caada25a2
3 changed files with 19 additions and 14 deletions
|
@ -13,9 +13,11 @@ package org.eclipse.cdt.internal.core.pdom.dom;
|
|||
|
||||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.dom.IPDOM;
|
||||
import org.eclipse.cdt.core.dom.PDOM;
|
||||
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.model.CoreModel;
|
||||
import org.eclipse.cdt.core.model.ICProject;
|
||||
import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IAdapterFactory;
|
||||
|
@ -32,16 +34,19 @@ public class PDOMBindingAdapterFactory implements IAdapterFactory {
|
|||
|
||||
try {
|
||||
IBinding binding = (IBinding)adaptableObject;
|
||||
IScope scope = binding.getScope();
|
||||
IPDOM ipdom = scope.getPhysicalNode().getTranslationUnit().getIndex();
|
||||
if (ipdom == null)
|
||||
return null;
|
||||
PDOMDatabase pdom = (PDOMDatabase)ipdom;
|
||||
ICProject[] projects = CoreModel.getDefault().getCModel().getCProjects();
|
||||
for (int i = 0; i < projects.length; ++i) {
|
||||
IPDOM ipdom = PDOM.getPDOM(projects[i].getProject());
|
||||
|
||||
if (ipdom == null || !(ipdom instanceof PDOMDatabase))
|
||||
continue;
|
||||
PDOMDatabase pdom = (PDOMDatabase)ipdom;
|
||||
|
||||
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
|
||||
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
|
||||
if (binding != null)
|
||||
return pdomBinding;
|
||||
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
|
||||
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
|
||||
if (binding != null)
|
||||
return pdomBinding;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} catch (DOMException e) {
|
||||
|
|
|
@ -56,7 +56,7 @@ public class PDOMCLinkage extends PDOMLinkage {
|
|||
IASTName scopeName = scope.getScopeName();
|
||||
if (scopeName != null) {
|
||||
IBinding scopeBinding = scopeName.resolveBinding();
|
||||
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
|
||||
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
|
||||
if (scopePDOMBinding != null)
|
||||
parent = scopePDOMBinding;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ public class PDOMCLinkage extends PDOMLinkage {
|
|||
if (binding == null || binding instanceof IProblemBinding)
|
||||
return null;
|
||||
|
||||
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
|
||||
PDOMBinding pdomBinding = adaptBinding(binding);
|
||||
if (pdomBinding == null) {
|
||||
PDOMNode parent = getParent(binding);
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
|
|||
IASTName scopeName = scope.getScopeName();
|
||||
if (scopeName != null) {
|
||||
IBinding scopeBinding = scopeName.resolveBinding();
|
||||
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
|
||||
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
|
||||
if (scopePDOMBinding != null)
|
||||
parent = scopePDOMBinding;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
|
|||
// Can't tell what it is
|
||||
return null;
|
||||
|
||||
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
|
||||
PDOMBinding pdomBinding = adaptBinding(binding);
|
||||
if (pdomBinding == null) {
|
||||
PDOMNode parent = getParent(binding);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue