From c3aab566fdb6218cd3b4e33d3d1ba03a54379083 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Sat, 27 May 2006 04:59:19 +0000 Subject: [PATCH] Improved resolution of qualified names during indexing. --- .../cdt/internal/core/pdom/dom/PDOMLinkage.java | 2 +- .../cdt/internal/core/pdom/dom/c/PDOMCLinkage.java | 2 +- .../internal/core/pdom/dom/cpp/PDOMCPPLinkage.java | 12 +++++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java index 36e700591a1..9a148e2ff26 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java @@ -170,7 +170,7 @@ public abstract class PDOMLinkage extends PDOMNamedNode { 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; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java index 4676247455a..5fd1f6e09b8 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java @@ -206,7 +206,7 @@ public class PDOMCLinkage extends PDOMLinkage { return super.getNode(record); } - public PDOMBinding resolveBinding(IASTName name) throws CoreException { + public IBinding resolveBinding(IASTName name) throws CoreException { IASTNode parent = name.getParent(); if (parent instanceof IASTIdExpression) { // reference diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java index 30535f14062..c574f92b94f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java @@ -231,10 +231,16 @@ public class PDOMCPPLinkage extends PDOMLinkage { return null; } - public PDOMBinding resolveBinding(IASTName name) throws CoreException { + public IBinding resolveBinding(IASTName name) throws CoreException { if (name instanceof ICPPASTQualifiedName) { - IASTName lastName = ((ICPPASTQualifiedName)name).getLastName(); - return lastName != null ? resolveBinding(lastName) : null; + IASTName[] names = ((ICPPASTQualifiedName)name).getNames(); + 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(); if (parent instanceof ICPPASTQualifiedName) {