CppEditor: Change parsing opposite bracket

Fixed behavior:
- when comparing sign was determined as angle bracket
- when in complex combination brackets, an opposite bracket
was detected not correct
- not correct mismatch case highlightning
Added tests for the cases form bug 26395

Fixes: QTCREATORBUG-26400
Fixes: QTCREATORBUG-26395
Change-Id: Ic45566d2677f80fb9a8e4fe830307254dd1db51d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Artem Sokolovskii
2021-10-18 16:14:05 +02:00
parent 5a2b58550e
commit a013d75728
4 changed files with 49 additions and 5 deletions

View File

@@ -1794,11 +1794,10 @@ TEST_F(TokenProcessor, TemplateSeparateDeclDef)
ASSERT_THAT(infos[37], IsHighlightingMark(764u, 5u, 9u, HighlightingType::GlobalVariable));
}
TEST_F(TokenProcessor, NestedTemplate)
TEST_F(TokenProcessor, NestedTemplateIncorrect)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(773, 44));
ASSERT_THAT(infos[12], HasTwoTypes(HighlightingType::Punctuation,
HighlightingType::DoubleAngleBracketClose));
ASSERT_THAT(infos[12], HasOnlyType(HighlightingType::Punctuation));
}
TEST_F(TokenProcessor, OperatorInTemplate)
@@ -1819,6 +1818,32 @@ TEST_F(TokenProcessor, PreProcessorInStruct)
ASSERT_THAT(infos[1], HasOnlyType(HighlightingType::Preprocessor));
}
TEST_F(TokenProcessor, DefinitionWithComparison)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(798, 39));
ASSERT_THAT(infos[13], HasOnlyType(HighlightingType::Punctuation));
}
TEST_F(TokenProcessor, GlobalVariableWithComparison)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(800, 18));
ASSERT_THAT(infos[5], HasOnlyType(HighlightingType::Punctuation));
}
TEST_F(TokenProcessor, VariableWithComparison)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(803, 22));
ASSERT_THAT(infos[5], HasOnlyType(HighlightingType::Punctuation));
}
TEST_F(TokenProcessor, NestedTemplate)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(811, 44));
ASSERT_THAT(infos[12], HasTwoTypes(HighlightingType::Punctuation,
HighlightingType::DoubleAngleBracketClose));
}
Data *TokenProcessor::d;
void TokenProcessor::SetUpTestCase()