Clang: Properly handle Q_PROPERTY in TokenInfo

Transform Q_PROPERTY into unique AST node.
Mark different parts with types and search for parent
in FullTokenInfos.

Change-Id: Iaa1ec0c73d34773edf5605d3682bd6a290d195de
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Ivan Donchevskii
2018-01-26 15:12:38 +01:00
parent b5f63a76b2
commit 66c7629814
15 changed files with 235 additions and 27 deletions

View File

@@ -1257,18 +1257,53 @@ TEST_F(TokenProcessor, NamespaceTypeSpelling)
TEST_F(TokenProcessor, DISABLED_WITHOUT_INVALIDDECL_PATCH(TypeNameOfInvalidDeclarationIsInvalid))
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(592, 14));
const auto infos = translationUnit.tokenInfosInRange(sourceRange(594, 14));
ASSERT_THAT(infos[0], HasOnlyType(HighlightingType::Invalid));
}
TEST_F(TokenProcessor, DISABLED_WITHOUT_INVALIDDECL_PATCH(VariableNameOfInvalidDeclarationIsInvalid))
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(592, 14));
const auto infos = translationUnit.tokenInfosInRange(sourceRange(594, 14));
ASSERT_THAT(infos[1], HasOnlyType(HighlightingType::Invalid));
}
TEST_F(TokenProcessor, QtPropertyName)
{
const auto infos = translationUnit.fullTokenInfosInRange(sourceRange(599, 103));
ASSERT_THAT(infos[8], HasOnlyType(HighlightingType::QtProperty));
}
TEST_F(TokenProcessor, QtPropertyFunction)
{
const auto infos = translationUnit.fullTokenInfosInRange(sourceRange(599, 103));
ASSERT_THAT(infos[10], HasOnlyType(HighlightingType::Function));
}
TEST_F(TokenProcessor, QtPropertyInternalKeyword)
{
const auto infos = translationUnit.fullTokenInfosInRange(sourceRange(599, 103));
ASSERT_THAT(infos[9], HasOnlyType(HighlightingType::Invalid));
}
TEST_F(TokenProcessor, QtPropertyLastToken)
{
const auto infos = translationUnit.fullTokenInfosInRange(sourceRange(599, 103));
ASSERT_THAT(infos[14], HasOnlyType(HighlightingType::Function));
}
TEST_F(TokenProcessor, QtPropertyType)
{
const auto infos = translationUnit.fullTokenInfosInRange(sourceRange(600, 46));
ASSERT_THAT(infos[3], HasOnlyType(HighlightingType::Type));
}
Data *TokenProcessor::d;
void TokenProcessor::SetUpTestCase()