Bug 456579 - Improve CSourceHover and OpenDeclaration for TemplateIds

CSourceHover did not know how to handle UnknowMemberClasses

Change-Id: I4ef6a4ad794e670c4d5e9ccc9cea204f8d273f2a
Signed-off-by: Michael Woski <woskimi@yahoo.de>
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CSourceHover.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CSourceHover.java
index 1c9e249..53d78cf 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CSourceHover.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/CSourceHover.java
@@ -102,7 +102,9 @@
 import org.eclipse.cdt.ui.text.ICPartitions;
 
 import org.eclipse.cdt.internal.core.dom.parser.ASTQueries;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPUnknownBinding;
 import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.HeuristicResolver;
 import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
 import org.eclipse.cdt.internal.corext.util.Strings;
 
@@ -206,7 +208,13 @@
 										}
 									}
 								}
-								
+								if (binding instanceof ICPPUnknownBinding) {
+									IBinding[] resolved = HeuristicResolver
+											.resolveUnknownBinding((ICPPUnknownBinding) binding, name);
+									if (resolved.length == 1) {
+										binding = resolved[0];
+									}
+								}
 								if (binding instanceof IProblemBinding) {
 									// Report problem as source comment.
 									if (DEBUG) {