From eea81e9d95c1b8dadd23fc29d09f5aded43c2a32 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 17 Dec 2008 16:18:50 +0000 Subject: [PATCH] Static variables shown as global in search, bug 255192. --- .../org/eclipse/cdt/core/browser/IndexTypeInfo.java | 9 ++++++++- .../cdt/internal/core/browser/IndexModelUtil.java | 5 ++--- .../ui/browser/typeinfo/TypeInfoLabelProvider.java | 11 ++++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/IndexTypeInfo.java b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/IndexTypeInfo.java index 94949ed3626..502c22990ea 100644 --- a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/IndexTypeInfo.java +++ b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/core/browser/IndexTypeInfo.java @@ -51,7 +51,7 @@ import org.eclipse.core.runtime.Path; /** * @author Doug Schaefer - * + * @noextend This class is not intended to be subclassed by clients. */ public class IndexTypeInfo implements ITypeInfo, IFunctionInfo { private static int hashCode(String[] array) { @@ -562,4 +562,11 @@ public class IndexTypeInfo implements ITypeInfo, IFunctionInfo { return false; return true; } + + /** + * @since 5.1 + */ + public boolean isFileLocal() { + return fileLocal != null; + } } diff --git a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/IndexModelUtil.java b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/IndexModelUtil.java index f06677dc29f..48b1d9f502d 100644 --- a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/IndexModelUtil.java +++ b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/IndexModelUtil.java @@ -17,6 +17,7 @@ package org.eclipse.cdt.internal.core.browser; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.EScopeKind; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IEnumeration; @@ -27,8 +28,6 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; -import org.eclipse.cdt.core.dom.ast.c.ICFunctionScope; -import org.eclipse.cdt.core.dom.ast.cpp.ICPPBlockScope; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceAlias; @@ -141,7 +140,7 @@ public class IndexModelUtil { scope = binding.getScope(); } catch (DOMException e) { } - if (scope instanceof ICPPBlockScope || scope instanceof ICFunctionScope) { + if (scope != null && scope.getKind() == EScopeKind.eLocal) { elementType= ICElement.C_VARIABLE_LOCAL; } else { elementType = ICElement.C_VARIABLE; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java index 5c10cad31bb..d2c447b9a1e 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/ui/browser/typeinfo/TypeInfoLabelProvider.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.core.browser.IFunctionInfo; import org.eclipse.cdt.core.browser.IQualifiedTypeName; import org.eclipse.cdt.core.browser.ITypeInfo; import org.eclipse.cdt.core.browser.ITypeReference; +import org.eclipse.cdt.core.browser.IndexTypeInfo; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICElement; @@ -91,9 +92,13 @@ public class TypeInfoLabelProvider extends LabelProvider { buf.append(TypeInfoMessages.TypeInfoLabelProvider_globalScope); } } else if (isSet(SHOW_FULLY_QUALIFIED)) { - if (typeInfo.getCElementType() != ICElement.C_VARIABLE_LOCAL && qualifiedName.isGlobal()) { - buf.append(TypeInfoMessages.TypeInfoLabelProvider_globalScope); - buf.append(' '); + final int elemType = typeInfo.getCElementType(); + if (elemType != ICElement.C_VARIABLE_LOCAL && qualifiedName.isGlobal()) { + if ((elemType != ICElement.C_FUNCTION && elemType != ICElement.C_VARIABLE) || + !(typeInfo instanceof IndexTypeInfo && ((IndexTypeInfo) typeInfo).isFileLocal())) { + buf.append(TypeInfoMessages.TypeInfoLabelProvider_globalScope); + buf.append(' '); + } } buf.append(qualifiedName.getFullyQualifiedName()); }