From d9a409f83040d090b333f31ed3253007483efe3a Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 30 Sep 2009 08:57:29 +0000 Subject: [PATCH] Use c++ specific navigation algorithms in c++ files, only. Bug 282335. --- .../ui/search/actions/OpenDeclarationsJob.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsJob.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsJob.java index ddc1cf5d583..1bf40d5d2fb 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsJob.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsJob.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.ui.search.actions; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -50,6 +51,7 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter; @@ -593,7 +595,13 @@ class OpenDeclarationsJob extends Job implements ASTRunnable { } } - Collection secondaryBindings= removeSecondaryBindings(primaryBindings, sourceName); + Collection secondaryBindings; + if (ast instanceof ICPPASTTranslationUnit) { + secondaryBindings= cppRemoveSecondaryBindings(primaryBindings, sourceName); + } else { + secondaryBindings= Collections.emptyList(); + } + // Convert bindings to CElements Collection bs= primaryBindings; for (int k=0; k<2; k++) { @@ -627,7 +635,7 @@ class OpenDeclarationsJob extends Job implements ASTRunnable { return false; } - private Collection removeSecondaryBindings(Set primaryBindings, IASTName sourceName) { + private Collection cppRemoveSecondaryBindings(Set primaryBindings, IASTName sourceName) { List result= new ArrayList(); String[] sourceQualifiedName= null; int funcArgCount= -1;