### Eclipse Workspace Patch 1.0 #P org.eclipse.cdt.core Index: parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java,v retrieving revision 1.22 diff -u -r1.22 CPPASTQualifiedName.java --- parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java 29 Jan 2007 10:27:46 -0000 1.22 +++ parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTQualifiedName.java 31 Jan 2007 15:15:02 -0000 @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNameOwner; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; +import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConversionName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTOperatorName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; @@ -301,41 +302,71 @@ public IBinding[] resolvePrefix(IASTName n) { IBinding binding = names[names.length - 2].resolveBinding(); if (binding instanceof ICPPClassType) { - ICPPClassType classType = (ICPPClassType) binding; - List bindings = new ArrayList(); - char[] name = n.toCharArray(); - - try { - ICPPMethod[] methods = classType.getDeclaredMethods(); - for (int i = 0; i < methods.length; i++) { - char[] potential = methods[i].getNameCharArray(); + return resolveClassScopePrefix((ICPPClassType) binding, + n.toCharArray()); + } else if (binding instanceof ICPPNamespace) { + return resolveNamespaceScopePrefix((ICPPNamespace) binding, + n.toCharArray()); + } + + return null; + } + + private IBinding[] resolveClassScopePrefix(ICPPClassType classType, char[] name) { + List bindings = new ArrayList(); + + try { + IField[] fields = classType.getFields(); + for (int i = 0; i < fields.length; i++) { + if (fields[i].isStatic()) { + char[] potential = fields[i].getNameCharArray(); if (CharArrayUtils.equals(potential, 0, name.length, name, false)) { - bindings.add(methods[i]); + bindings.add(fields[i]); } } - } catch (DOMException e) { } - - return (IBinding[]) bindings.toArray(new IBinding[bindings.size()]); - } else if (binding instanceof ICPPNamespace) { - ICPPNamespace namespace = (ICPPNamespace) binding; - List bindings = new ArrayList(); - char[] name = n.toCharArray(); - - try { - IBinding[] members = namespace.getMemberBindings(); - for (int i = 0 ; i < members.length; i++) { - char[] potential = members[i].getNameCharArray(); - if (CharArrayUtils.equals(potential, 0, name.length, name, false)) { - bindings.add(members[i]); - } + } catch (DOMException e) { + } + + try { + ICPPMethod[] methods = classType.getDeclaredMethods(); + for (int i = 0; i < methods.length; i++) { + char[] potential = methods[i].getNameCharArray(); + if (CharArrayUtils.equals(potential, 0, name.length, name, false)) { + bindings.add(methods[i]); } - } catch (DOMException e) { } - - return (IBinding[]) bindings.toArray(new IBinding[bindings.size()]); + } catch (DOMException e) { } - return null; + try { + ICPPClassType[] nested = classType.getNestedClasses(); + for (int i = 0; i < nested.length; i++) { + char[] potential = nested[i].getNameCharArray(); + if (CharArrayUtils.equals(potential, 0, name.length, name, false)) { + bindings.add(nested[i]); + } + } + } catch (DOMException e) { + } + + return (IBinding[]) bindings.toArray(new IBinding[bindings.size()]); + } + + private IBinding[] resolveNamespaceScopePrefix(ICPPNamespace namespace, char[] name) { + List bindings = new ArrayList(); + + try { + IBinding[] members = namespace.getMemberBindings(); + for (int i = 0 ; i < members.length; i++) { + char[] potential = members[i].getNameCharArray(); + if (CharArrayUtils.equals(potential, 0, name.length, name, false)) { + bindings.add(members[i]); + } + } + } catch (DOMException e) { + } + + return (IBinding[]) bindings.toArray(new IBinding[bindings.size()]); } } #P org.eclipse.cdt.ui.tests Index: ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java,v retrieving revision 1.4 diff -u -r1.4 CompletionTest_ScopedReference_NonCodeScope.java --- ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java 26 Jan 2007 15:46:53 -0000 1.4 +++ ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_ScopedReference_NonCodeScope.java 31 Jan 2007 15:15:02 -0000 @@ -30,14 +30,11 @@ "Foo(void) ", "bar(void) void", "fum(void) void", - // missing: "x : int" }; public CompletionTest_ScopedReference_NonCodeScope(String name) { super(name); - // unknown problem - setExpectFailure(77777); } public static Test suite() { Index: ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java,v retrieving revision 1.4 diff -u -r1.4 CompletionTest_VariableType_NestedPrefix.java --- ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java 26 Jan 2007 15:46:53 -0000 1.4 +++ ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTest_VariableType_NestedPrefix.java 31 Jan 2007 15:15:02 -0000 @@ -30,15 +30,12 @@ "Foo(void) ", "bar(void) void", "fum(void) void", - // missing: "DEF", "x : int" }; public CompletionTest_VariableType_NestedPrefix(String name) { super(name); - // unknown problem - setExpectFailure(77777); } public static Test suite() {