aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/clangbackend/source/clangtooltipinfocollector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clangbackend/source/clangtooltipinfocollector.cpp')
-rw-r--r--src/tools/clangbackend/source/clangtooltipinfocollector.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/tools/clangbackend/source/clangtooltipinfocollector.cpp b/src/tools/clangbackend/source/clangtooltipinfocollector.cpp
index a0b8223a18..8eb15eb89e 100644
--- a/src/tools/clangbackend/source/clangtooltipinfocollector.cpp
+++ b/src/tools/clangbackend/source/clangtooltipinfocollector.cpp
@@ -425,14 +425,24 @@ ToolTipInfo ToolTipInfoCollector::qDocInfo(const Cursor &cursor) const
return result;
}
- if (cursor.kind() == CXCursor_VarDecl || cursor.kind() == CXCursor_FieldDecl) {
- result.qdocMark = typeName(cursor.type());
+ if (cursor.kind() == CXCursor_VarDecl || cursor.kind() == CXCursor_ParmDecl
+ || cursor.kind() == CXCursor_FieldDecl) {
// maybe template instantiation
if (cursor.type().kind() == CXType_Unexposed && cursor.type().canonical().kind() == CXType_Record) {
result.qdocIdCandidates = qDocIdCandidates(cursor.type().canonical().declaration());
+ result.qdocMark = typeName(cursor.type());
result.qdocCategory = ToolTipInfo::ClassOrNamespace;
return result;
}
+
+ Type type = cursor.type();
+ while (type.pointeeType().isValid())
+ type = type.pointeeType();
+
+ const Cursor typeCursor = type.declaration();
+ result.qdocIdCandidates = qDocIdCandidates(typeCursor);
+ result.qdocCategory = qdocCategory(typeCursor);
+ result.qdocMark = typeName(type);
}
// TODO: Handle also RValueReference()