From 72fd8f6158c2f86b642ce64484e39e31e6b1d3d2 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 31 Mar 2010 14:48:45 +0000 Subject: [PATCH] Bug 307738: Add include for enumerators. --- .../resources/addInclude/Enumerator_307738.cpp | 3 +++ .../resources/addInclude/Enumerator_307738.cpp.expected | 4 ++++ .../resources/addInclude/Enumerator_307738.h | 3 +++ .../ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java | 5 +++++ .../cdt/internal/ui/editor/AddIncludeOnSelectionAction.java | 5 +++-- 5 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp create mode 100644 core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp.expected create mode 100644 core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.h diff --git a/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp new file mode 100644 index 00000000000..f0a3dc7fbdc --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp @@ -0,0 +1,3 @@ +void test() { + int i = Ns::ENUM_VALUE; +} diff --git a/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp.expected b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp.expected new file mode 100644 index 00000000000..0c5202a7730 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.cpp.expected @@ -0,0 +1,4 @@ +#include "Enumerator_307738.h" +void test() { + int i = Ns::ENUM_VALUE; +} diff --git a/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.h b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.h new file mode 100644 index 00000000000..9bf96c4891b --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/resources/addInclude/Enumerator_307738.h @@ -0,0 +1,3 @@ +namespace Ns { + enum MyEnum {ENUM_VALUE}; +} diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java index 9b092ee6a27..36fa9388ac0 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java @@ -149,4 +149,9 @@ public class AddIncludeTest extends TestCase { select("func306670"); assertAddIncludeResult(); } + + public void testEnumerator_307738() throws Exception { + select("ENUM_VALUE"); + assertAddIncludeResult(); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java index 38bbdb468f2..db81e5a3061 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/AddIncludeOnSelectionAction.java @@ -55,6 +55,7 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IEnumeration; +import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; @@ -260,8 +261,8 @@ public class AddIncludeOnSelectionAction extends TextEditorAction { } } IIndexName[] definitions= null; - // class, struct, union, enum - if (indexBinding instanceof ICompositeType || indexBinding instanceof IEnumeration) { + // class, struct, union, enum-type, enum-item + if (indexBinding instanceof ICompositeType || indexBinding instanceof IEnumeration || indexBinding instanceof IEnumerator) { definitions= index.findDefinitions(indexBinding); } else if (indexBinding instanceof ITypedef || (indexBinding instanceof IFunction)) { definitions = index.findDeclarations(indexBinding);