From 98e2f01a972e41e5530690a73be57b08a04e8338 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Wed, 27 Aug 2014 14:14:59 -0700 Subject: Bug 442742 - "Organize Includes" removes a header required for a namespace alias --- .../tests/refactoring/includes/BindingClassifierTest.java | 13 +++++++++++++ .../internal/ui/refactoring/includes/BindingClassifier.java | 3 +++ 2 files changed, 16 insertions(+) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java index ccee2c7c1e8..a4f8afe32e1 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/includes/BindingClassifierTest.java @@ -348,6 +348,19 @@ public class BindingClassifierTest extends OneSourceMultipleHeadersTestCase { assertDeclared(); } + // namespace ns1 { + // namespace ns2 { + // class A {}; + // } + // } + // namespace ns = ns1::ns2; + + // ns::A a; + public void testNamespaceAlias() throws Exception { + assertDefined("A", "ns"); + assertDeclared(); + } + // struct A { // A(const char* s); // }; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java index 72286ab5758..199c09434af 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/includes/BindingClassifier.java @@ -103,6 +103,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceAlias; import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPReferenceType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization; @@ -1020,6 +1021,8 @@ public class BindingClassifier { * or an empty list if no such binding is available. */ private Set getRequiredBindings(IBinding binding) { + if (binding instanceof ICPPNamespaceAlias) + return Collections.singleton(binding); if (binding instanceof ICPPNamespace) return Collections.emptySet(); -- cgit v1.2.3