forked from qt-creator/qt-creator
Clang: Filter scope operators
Scope operators are not really user defined. Change-Id: I1ab08dc3db7c39b98da02b6ef10bf78b75a6856d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
bd10e9b020
commit
2e499b73d6
@@ -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()
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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()
|
||||||
|
Reference in New Issue
Block a user