1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 17:56:01 +02:00

Improved resolution of qualified names during indexing.

This commit is contained in:
Doug Schaefer 2006-05-27 04:59:19 +00:00
parent 6334301ac3
commit c3aab566fd
3 changed files with 11 additions and 5 deletions

View file

@ -170,7 +170,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode {
public abstract PDOMBinding adaptBinding(IBinding binding) throws CoreException; public abstract PDOMBinding adaptBinding(IBinding binding) throws CoreException;
public abstract PDOMBinding resolveBinding(IASTName name) throws CoreException; public abstract IBinding resolveBinding(IASTName name) throws CoreException;
public abstract void findBindings(String pattern, List bindings) throws CoreException; public abstract void findBindings(String pattern, List bindings) throws CoreException;

View file

@ -206,7 +206,7 @@ public class PDOMCLinkage extends PDOMLinkage {
return super.getNode(record); return super.getNode(record);
} }
public PDOMBinding resolveBinding(IASTName name) throws CoreException { public IBinding resolveBinding(IASTName name) throws CoreException {
IASTNode parent = name.getParent(); IASTNode parent = name.getParent();
if (parent instanceof IASTIdExpression) { if (parent instanceof IASTIdExpression) {
// reference // reference

View file

@ -231,10 +231,16 @@ public class PDOMCPPLinkage extends PDOMLinkage {
return null; return null;
} }
public PDOMBinding resolveBinding(IASTName name) throws CoreException { public IBinding resolveBinding(IASTName name) throws CoreException {
if (name instanceof ICPPASTQualifiedName) { if (name instanceof ICPPASTQualifiedName) {
IASTName lastName = ((ICPPASTQualifiedName)name).getLastName(); IASTName[] names = ((ICPPASTQualifiedName)name).getNames();
return lastName != null ? resolveBinding(lastName) : null; if (names.length == 1)
return resolveBinding(names[0]);
IASTName lastName = names[names.length - 1];
PDOMBinding nsBinding = adaptBinding(names[names.length - 2].resolveBinding());
if (nsBinding instanceof IScope) {
return ((IScope)nsBinding).getBinding(lastName, true);
}
} }
IASTNode parent = name.getParent(); IASTNode parent = name.getParent();
if (parent instanceof ICPPASTQualifiedName) { if (parent instanceof ICPPASTQualifiedName) {