aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/clangbackend/source/fulltokeninfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clangbackend/source/fulltokeninfo.cpp')
-rw-r--r--src/tools/clangbackend/source/fulltokeninfo.cpp36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/tools/clangbackend/source/fulltokeninfo.cpp b/src/tools/clangbackend/source/fulltokeninfo.cpp
index 36fabc6cd2..d539138ce9 100644
--- a/src/tools/clangbackend/source/fulltokeninfo.cpp
+++ b/src/tools/clangbackend/source/fulltokeninfo.cpp
@@ -216,16 +216,16 @@ void FullTokenInfo::memberReferenceKind(const Cursor &cursor)
}
}
-void FullTokenInfo::keywordKind(const Cursor &cursor)
+void FullTokenInfo::keywordKind()
{
- TokenInfo::keywordKind(cursor);
+ TokenInfo::keywordKind();
- CXCursorKind cursorKind = cursor.kind();
+ CXCursorKind cursorKind = m_originalCursor.kind();
bool anonymous = false;
- if (clang_Cursor_isAnonymous(cursor.cx())) {
+ if (clang_Cursor_isAnonymous(m_originalCursor.cx())) {
anonymous = true;
} else {
- const Utf8String type = fullyQualifiedType(cursor);
+ const Utf8String type = fullyQualifiedType(m_originalCursor);
if (type.endsWith(Utf8StringLiteral(")"))
&& static_cast<const QByteArray &>(type).indexOf("(anonymous") >= 0) {
anonymous = true;
@@ -242,11 +242,33 @@ void FullTokenInfo::keywordKind(const Cursor &cursor)
m_types.mixinHighlightingTypes.push_back(HighlightingType::Namespace);
m_extraInfo.declaration = m_extraInfo.definition = true;
m_extraInfo.token = Utf8StringLiteral("anonymous");
- updateTypeSpelling(cursor);
- m_extraInfo.cursorRange = cursor.sourceRange();
+ updateTypeSpelling(m_originalCursor);
+ m_extraInfo.cursorRange = m_originalCursor.sourceRange();
}
}
+void FullTokenInfo::overloadedOperatorKind()
+{
+ TokenInfo::overloadedOperatorKind();
+
+ if (m_types.mixinHighlightingTypes.front() != HighlightingType::OverloadedOperator)
+ return;
+
+ // Overloaded operator
+ m_extraInfo.identifier = true;
+ if (!m_originalCursor.isDeclaration())
+ return;
+
+ // Overloaded operator declaration
+ m_extraInfo.declaration = true;
+ m_extraInfo.definition = m_originalCursor.isDefinition();
+
+ updateTypeSpelling(m_originalCursor, true);
+ m_extraInfo.cursorRange = m_originalCursor.sourceRange();
+ m_extraInfo.accessSpecifier = m_originalCursor.accessSpecifier();
+ m_extraInfo.storageClass = m_originalCursor.storageClass();
+}
+
void FullTokenInfo::evaluate()
{
m_extraInfo.token = ClangString(clang_getTokenSpelling(m_cxTranslationUnit, *m_cxToken));