From 27b467cb112a037b8c75094affa367a52215ad2e Mon Sep 17 00:00:00 2001 From: Michael Woski Date: Thu, 10 Aug 2017 10:44:25 +0200 Subject: [PATCH] bug 520805 - [codeassist] HeuristicResolver can't resolve enum scope Change-Id: I8c820bd91c1f5775466697c2e0c63351ce69bcba Signed-off-by: Michael Woski --- .../parser/cpp/semantics/HeuristicResolver.java | 2 ++ .../text/contentassist2/CompletionTests.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/HeuristicResolver.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/HeuristicResolver.java index 6f7143b49c4..9a08b3e4d30 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/HeuristicResolver.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/HeuristicResolver.java @@ -114,6 +114,8 @@ public class HeuristicResolver { type = SemanticUtil.getNestedType(type, SemanticUtil.PTR); if (type instanceof ICompositeType) { return ((ICompositeType) type).getCompositeScope(); + } else if (type instanceof ICPPEnumeration) { + return ((ICPPEnumeration) type).asScope(); } return null; } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java index 5ccfc967e6b..8902a93084a 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist2/CompletionTests.java @@ -606,6 +606,22 @@ public class CompletionTests extends CompletionTestBase { assertCompletionResults(new String[] { "i" }); } + // template + // struct A { + // enum class AA { + // Test + // }; + // }; + // + // template + // void test() + // { + // A::AA::/*cursor*/ + // } + public void testHeuristicEnumScopeResolution_520805() throws Exception { + assertCompletionResults(new String[] { "Test" }); + } + // template // struct A { // template