forked from qt-creator/qt-creator
Clang: Add highlighting types for ObjectiveC
Builtin code model supports ObjectiveC classes, properties, etc. We can easily get the same information from clang. Change-Id: Iede5e177d4932f404e4ccb81ae356eee8faffb71 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -96,7 +96,14 @@ enum class HighlightingType : quint8
|
|||||||
Union,
|
Union,
|
||||||
TypeAlias,
|
TypeAlias,
|
||||||
Typedef,
|
Typedef,
|
||||||
QtProperty
|
QtProperty,
|
||||||
|
ObjectiveCClass,
|
||||||
|
ObjectiveCCategory,
|
||||||
|
ObjectiveCProtocol,
|
||||||
|
ObjectiveCInterface,
|
||||||
|
ObjectiveCImplementation,
|
||||||
|
ObjectiveCProperty,
|
||||||
|
ObjectiveCMethod
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class StorageClass : quint8
|
enum class StorageClass : quint8
|
||||||
|
|||||||
@@ -60,6 +60,13 @@ static const char *highlightingTypeToCStringLiteral(HighlightingType type)
|
|||||||
RETURN_TEXT_FOR_CASE(TypeAlias);
|
RETURN_TEXT_FOR_CASE(TypeAlias);
|
||||||
RETURN_TEXT_FOR_CASE(Typedef);
|
RETURN_TEXT_FOR_CASE(Typedef);
|
||||||
RETURN_TEXT_FOR_CASE(QtProperty);
|
RETURN_TEXT_FOR_CASE(QtProperty);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCClass);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCCategory);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCProtocol);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCInterface);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCImplementation);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCProperty);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCMethod);
|
||||||
default: return "UnhandledHighlightingType";
|
default: return "UnhandledHighlightingType";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,13 @@ bool ignore(ClangBackEnd::HighlightingType type)
|
|||||||
case HighlightingType::Union:
|
case HighlightingType::Union:
|
||||||
case HighlightingType::TypeAlias:
|
case HighlightingType::TypeAlias:
|
||||||
case HighlightingType::Typedef:
|
case HighlightingType::Typedef:
|
||||||
|
case HighlightingType::ObjectiveCClass:
|
||||||
|
case HighlightingType::ObjectiveCCategory:
|
||||||
|
case HighlightingType::ObjectiveCProtocol:
|
||||||
|
case HighlightingType::ObjectiveCInterface:
|
||||||
|
case HighlightingType::ObjectiveCImplementation:
|
||||||
|
case HighlightingType::ObjectiveCProperty:
|
||||||
|
case HighlightingType::ObjectiveCMethod:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,12 +158,33 @@ void TokenInfo::variableKind(const Cursor &cursor)
|
|||||||
m_types.mixinHighlightingTypes.push_back(HighlightingType::OutputArgument);
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::OutputArgument);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TokenInfo::fieldKind(const Cursor &)
|
void TokenInfo::fieldKind(const Cursor &cursor)
|
||||||
{
|
{
|
||||||
m_types.mainHighlightingType = HighlightingType::Field;
|
m_types.mainHighlightingType = HighlightingType::Field;
|
||||||
|
|
||||||
|
const CXCursorKind kind = cursor.kind();
|
||||||
|
switch (kind) {
|
||||||
|
default:
|
||||||
|
m_types.mainHighlightingType = HighlightingType::Invalid;
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCPropertyDecl:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCProperty);
|
||||||
|
Q_FALLTHROUGH();
|
||||||
|
case CXCursor_FieldDecl:
|
||||||
|
case CXCursor_MemberRef:
|
||||||
if (isOutputArgument())
|
if (isOutputArgument())
|
||||||
m_types.mixinHighlightingTypes.push_back(HighlightingType::OutputArgument);
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::OutputArgument);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCClassMethodDecl:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCMethod);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCIvarDecl:
|
||||||
|
case CXCursor_ObjCInstanceMethodDecl:
|
||||||
|
case CXCursor_ObjCSynthesizeDecl:
|
||||||
|
case CXCursor_ObjCDynamicDecl:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TokenInfo::isDefinition() const
|
bool TokenInfo::isDefinition() const
|
||||||
@@ -312,18 +333,28 @@ void TokenInfo::typeKind(const Cursor &cursor)
|
|||||||
case CXCursor_TypedefDecl:
|
case CXCursor_TypedefDecl:
|
||||||
m_types.mixinHighlightingTypes.push_back(HighlightingType::Typedef);
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::Typedef);
|
||||||
return;
|
return;
|
||||||
|
case CXCursor_ObjCClassRef:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCClass);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCProtocolDecl:
|
||||||
|
case CXCursor_ObjCProtocolRef:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCProtocol);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCInterfaceDecl:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCInterface);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCImplementationDecl:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCImplementation);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCCategoryDecl:
|
||||||
|
case CXCursor_ObjCCategoryImplDecl:
|
||||||
|
m_types.mixinHighlightingTypes.push_back(HighlightingType::ObjectiveCCategory);
|
||||||
|
return;
|
||||||
|
case CXCursor_ObjCSuperClassRef:
|
||||||
case CXCursor_TemplateTypeParameter:
|
case CXCursor_TemplateTypeParameter:
|
||||||
case CXCursor_TemplateTemplateParameter:
|
case CXCursor_TemplateTemplateParameter:
|
||||||
case CXCursor_CXXStaticCastExpr:
|
case CXCursor_CXXStaticCastExpr:
|
||||||
case CXCursor_CXXReinterpretCastExpr:
|
case CXCursor_CXXReinterpretCastExpr:
|
||||||
case CXCursor_ObjCCategoryDecl:
|
|
||||||
case CXCursor_ObjCCategoryImplDecl:
|
|
||||||
case CXCursor_ObjCImplementationDecl:
|
|
||||||
case CXCursor_ObjCInterfaceDecl:
|
|
||||||
case CXCursor_ObjCProtocolDecl:
|
|
||||||
case CXCursor_ObjCProtocolRef:
|
|
||||||
case CXCursor_ObjCClassRef:
|
|
||||||
case CXCursor_ObjCSuperClassRef:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,15 +389,13 @@ void TokenInfo::identifierKind(const Cursor &cursor, Recursion recursion)
|
|||||||
break;
|
break;
|
||||||
case CXCursor_FieldDecl:
|
case CXCursor_FieldDecl:
|
||||||
case CXCursor_MemberRef:
|
case CXCursor_MemberRef:
|
||||||
fieldKind(cursor);
|
|
||||||
break;
|
|
||||||
case CXCursor_ObjCIvarDecl:
|
|
||||||
case CXCursor_ObjCPropertyDecl:
|
case CXCursor_ObjCPropertyDecl:
|
||||||
|
case CXCursor_ObjCIvarDecl:
|
||||||
case CXCursor_ObjCClassMethodDecl:
|
case CXCursor_ObjCClassMethodDecl:
|
||||||
case CXCursor_ObjCInstanceMethodDecl:
|
case CXCursor_ObjCInstanceMethodDecl:
|
||||||
case CXCursor_ObjCSynthesizeDecl:
|
case CXCursor_ObjCSynthesizeDecl:
|
||||||
case CXCursor_ObjCDynamicDecl:
|
case CXCursor_ObjCDynamicDecl:
|
||||||
m_types.mainHighlightingType = HighlightingType::Field;
|
fieldKind(cursor);
|
||||||
break;
|
break;
|
||||||
case CXCursor_TemplateRef:
|
case CXCursor_TemplateRef:
|
||||||
case CXCursor_NamespaceRef:
|
case CXCursor_NamespaceRef:
|
||||||
|
|||||||
@@ -501,6 +501,13 @@ static const char *highlightingTypeToCStringLiteral(HighlightingType type)
|
|||||||
RETURN_TEXT_FOR_CASE(TypeAlias);
|
RETURN_TEXT_FOR_CASE(TypeAlias);
|
||||||
RETURN_TEXT_FOR_CASE(Typedef);
|
RETURN_TEXT_FOR_CASE(Typedef);
|
||||||
RETURN_TEXT_FOR_CASE(QtProperty);
|
RETURN_TEXT_FOR_CASE(QtProperty);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCClass);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCCategory);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCProtocol);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCInterface);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCImplementation);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCProperty);
|
||||||
|
RETURN_TEXT_FOR_CASE(ObjectiveCMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
|
|||||||
Reference in New Issue
Block a user