From 614dd157e9e929379e01512788c05c381ae50e7a Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 21 Oct 2009 14:51:57 +0000 Subject: [PATCH] Fixes a test-case. --- .../internal/core/index/DeclaredBindingsFilter.java | 10 ++++++++++ .../ui/tests/callhierarchy/CppCallHierarchyTest.java | 10 +++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/DeclaredBindingsFilter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/DeclaredBindingsFilter.java index 10ba3088531..c5453f7e2ca 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/DeclaredBindingsFilter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/DeclaredBindingsFilter.java @@ -17,7 +17,9 @@ import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance; +import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.index.IndexFilter; +import org.eclipse.cdt.internal.core.index.composite.CompositeIndexBinding; import org.eclipse.core.runtime.CoreException; public class DeclaredBindingsFilter extends IndexFilter { @@ -50,6 +52,14 @@ public class DeclaredBindingsFilter extends IndexFilter { || (fAcceptImplicit && isImplicit(binding)); } // composite bindings don't support that kind of check. + if (binding instanceof CompositeIndexBinding) { + IIndexBinding raw= ((CompositeIndexBinding) binding).getRawBinding(); + if (raw instanceof IIndexFragmentBinding) { + if (((IIndexFragmentBinding) raw).hasDeclaration()) { + return true; + } + } + } return fAcceptImplicit || !isImplicit(binding); } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CppCallHierarchyTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CppCallHierarchyTest.java index 8ca646a3443..21c4ca6d839 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CppCallHierarchyTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CppCallHierarchyTest.java @@ -377,7 +377,7 @@ public class CppCallHierarchyTest extends CallHierarchyBaseTest { } // template void f(T t) {} - // template<> void f(int t) {} + // template<> void f(char t) {} // // template class CT { // public: @@ -415,18 +415,18 @@ public class CppCallHierarchyTest extends CallHierarchyBaseTest { String source = content[0].toString(); IFile file= createFile(getProject(), "testTemplates.cpp", source); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - CEditor editor= openEditor(file); waitForIndexer(fIndex, file, CallHierarchyBaseTest.INDEXER_WAIT_TIME); CCorePlugin.getIndexManager().joinIndexer(INDEXER_WAIT_TIME, NPM); + CEditor editor= openEditor(file); int pos= source.indexOf("f("); editor.selectAndReveal(pos, 1); openCallHierarchy(editor, true); Tree tree = getCHTreeViewer().getTree(); checkTreeNode(tree, 0, "f(T)"); - checkTreeNode(tree, 0, 0, "testintptr()"); - checkTreeNode(tree, 0, 1, "testint()"); + checkTreeNode(tree, 0, 0, "testint()"); + checkTreeNode(tree, 0, 1, "testintptr()"); checkTreeNode(tree, 0, 2, null); pos= source.indexOf("f(", pos+1); @@ -452,7 +452,7 @@ public class CppCallHierarchyTest extends CallHierarchyBaseTest { openCallHierarchy(editor, true); tree = getCHTreeViewer().getTree(); - checkTreeNode(tree, 0, "CT::m()"); + checkTreeNode(tree, 0, "CT::m()"); checkTreeNode(tree, 0, 0, "testintptr()"); checkTreeNode(tree, 0, 1, null);