mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-21 16:05:25 +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.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.IPDOM;
|
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.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.model.CoreModel;
|
||||||
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
|
import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IAdapterFactory;
|
import org.eclipse.core.runtime.IAdapterFactory;
|
||||||
|
@ -32,16 +34,19 @@ public class PDOMBindingAdapterFactory implements IAdapterFactory {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IBinding binding = (IBinding)adaptableObject;
|
IBinding binding = (IBinding)adaptableObject;
|
||||||
IScope scope = binding.getScope();
|
ICProject[] projects = CoreModel.getDefault().getCModel().getCProjects();
|
||||||
IPDOM ipdom = scope.getPhysicalNode().getTranslationUnit().getIndex();
|
for (int i = 0; i < projects.length; ++i) {
|
||||||
if (ipdom == null)
|
IPDOM ipdom = PDOM.getPDOM(projects[i].getProject());
|
||||||
return null;
|
|
||||||
PDOMDatabase pdom = (PDOMDatabase)ipdom;
|
|
||||||
|
|
||||||
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
|
if (ipdom == null || !(ipdom instanceof PDOMDatabase))
|
||||||
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
|
continue;
|
||||||
if (binding != null)
|
PDOMDatabase pdom = (PDOMDatabase)ipdom;
|
||||||
return pdomBinding;
|
|
||||||
|
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
|
||||||
|
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
|
||||||
|
if (binding != null)
|
||||||
|
return pdomBinding;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} catch (DOMException e) {
|
} catch (DOMException e) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class PDOMCLinkage extends PDOMLinkage {
|
||||||
IASTName scopeName = scope.getScopeName();
|
IASTName scopeName = scope.getScopeName();
|
||||||
if (scopeName != null) {
|
if (scopeName != null) {
|
||||||
IBinding scopeBinding = scopeName.resolveBinding();
|
IBinding scopeBinding = scopeName.resolveBinding();
|
||||||
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
|
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
|
||||||
if (scopePDOMBinding != null)
|
if (scopePDOMBinding != null)
|
||||||
parent = scopePDOMBinding;
|
parent = scopePDOMBinding;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ public class PDOMCLinkage extends PDOMLinkage {
|
||||||
if (binding == null || binding instanceof IProblemBinding)
|
if (binding == null || binding instanceof IProblemBinding)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
|
PDOMBinding pdomBinding = adaptBinding(binding);
|
||||||
if (pdomBinding == null) {
|
if (pdomBinding == null) {
|
||||||
PDOMNode parent = getParent(binding);
|
PDOMNode parent = getParent(binding);
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
|
||||||
IASTName scopeName = scope.getScopeName();
|
IASTName scopeName = scope.getScopeName();
|
||||||
if (scopeName != null) {
|
if (scopeName != null) {
|
||||||
IBinding scopeBinding = scopeName.resolveBinding();
|
IBinding scopeBinding = scopeName.resolveBinding();
|
||||||
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
|
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
|
||||||
if (scopePDOMBinding != null)
|
if (scopePDOMBinding != null)
|
||||||
parent = scopePDOMBinding;
|
parent = scopePDOMBinding;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
|
||||||
// Can't tell what it is
|
// Can't tell what it is
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
|
PDOMBinding pdomBinding = adaptBinding(binding);
|
||||||
if (pdomBinding == null) {
|
if (pdomBinding == null) {
|
||||||
PDOMNode parent = getParent(binding);
|
PDOMNode parent = getParent(binding);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue