Commit 2e499b73 authored by Marco Bubke's avatar Marco Bubke Committed by Nikolai Kosjar
Browse files

Clang: Filter scope operators



Scope operators are not really user defined.

Change-Id: I1ab08dc3db7c39b98da02b6ef10bf78b75a6856d
Reviewed-by: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
parent bd10e9b0
...@@ -241,11 +241,23 @@ HighlightingType literalKind(const Cursor &cursor) ...@@ -241,11 +241,23 @@ HighlightingType literalKind(const Cursor &cursor)
Q_UNREACHABLE(); Q_UNREACHABLE();
} }
bool hasOperatorName(const char *operatorString)
{
return std::strncmp(operatorString, "operator", 8) == 0;
}
HighlightingType operatorKind(const Cursor &cursor)
{
if (hasOperatorName(cursor.spelling().cString()))
return HighlightingType::Operator;
else
return HighlightingType::Invalid;
}
HighlightingType punctationKind(const Cursor &cursor) HighlightingType punctationKind(const Cursor &cursor)
{ {
switch (cursor.kind()) { switch (cursor.kind()) {
case CXCursor_DeclRefExpr: return HighlightingType::Operator; case CXCursor_DeclRefExpr: return operatorKind(cursor);
default: return HighlightingType::Invalid; default: return HighlightingType::Invalid;
} }
} }
......
...@@ -383,3 +383,19 @@ void f17() ...@@ -383,3 +383,19 @@ void f17()
{ {
TemplatedType<int> TemplatedTypeDeclaration; TemplatedType<int> TemplatedTypeDeclaration;
} }
void f18()
{
auto value = 1 + 2;
}
class ScopeClass
{
public:
static void ScopeOperator();
};
void f19()
{
ScopeClass::ScopeOperator();
}
...@@ -881,6 +881,20 @@ TEST_F(HighlightingInformations, TemplatedTypeDeclaration) ...@@ -881,6 +881,20 @@ TEST_F(HighlightingInformations, TemplatedTypeDeclaration)
ASSERT_THAT(infos[0], HasType(HighlightingType::Type)); ASSERT_THAT(infos[0], HasType(HighlightingType::Type));
} }
TEST_F(HighlightingInformations, NoOperator)
{
const auto infos = translationUnit.highlightingInformationsInRange(sourceRange(389, 24));
ASSERT_THAT(infos[2], HasType(HighlightingType::Invalid));
}
TEST_F(HighlightingInformations, ScopeOperator)
{
const auto infos = translationUnit.highlightingInformationsInRange(sourceRange(400, 33));
ASSERT_THAT(infos[1], HasType(HighlightingType::Invalid));
}
Data *HighlightingInformations::d; Data *HighlightingInformations::d;
void HighlightingInformations::SetUpTestCase() void HighlightingInformations::SetUpTestCase()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment