diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp
index 1022fc1374f5c38feba4b8684a45ee50a5ebc478..2850bcd92d545ffca8cd41873ca21854226ed950 100644
--- a/src/plugins/cppeditor/cpphoverhandler.cpp
+++ b/src/plugins/cppeditor/cpphoverhandler.cpp
@@ -327,8 +327,8 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
             FullySpecifiedType firstType = result.first; // result of `type of expression'.
             Symbol *lookupSymbol = result.second;        // lookup symbol
 
-            Symbol *resolvedSymbol = 0;
-            Name *resolvedName = 0;
+            Symbol *resolvedSymbol = lookupSymbol;
+            Name *resolvedName = lookupSymbol->name();
             firstType = resolve(firstType, typeOfExpression.lookupContext(),
                                 &resolvedSymbol, &resolvedName);
 
@@ -343,9 +343,8 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
             overview.setShowReturnTypes(true);
             overview.setShowFullyQualifiedNamed(true);
 
-            if (lookupSymbol && lookupSymbol->isDeclaration()) {
-                Declaration *decl = lookupSymbol->asDeclaration();
-                m_toolTip = overview.prettyType(firstType, decl->name());
+            if (lookupSymbol && (lookupSymbol->isDeclaration() || lookupSymbol->isArgument())) {
+                m_toolTip = overview.prettyType(firstType, buildHelpId(lookupSymbol, lookupSymbol->name()));
 
             } else if (firstType->isClassType() || firstType->isEnumType() ||
                        firstType->isForwardClassDeclarationType()) {