C++: fix support for nested anonymous class

The case when anonymous class is inside function. Fixed:
* highlighting
* completion

Task-number: QTCREATORBUG-11711
Change-Id: Ic8fc5fdfb1aed62a74bf148ab7ed449d08214dda
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Przemyslaw Gorszkowski
2014-03-14 08:24:54 +01:00
committed by Erik Verbruggen
parent 31cad45c0e
commit 6bf75acac7
4 changed files with 45 additions and 1 deletions

View File

@@ -193,6 +193,7 @@ private slots:
void test_checksymbols_QTCREATORBUG9098();
void test_checksymbols_AnonymousClass();
void test_checksymbols_AnonymousClass_insideNamespace();
void test_checksymbols_AnonymousClass_insideFunction();
void test_checksymbols_AnonymousClass_QTCREATORBUG8963();
void test_checksymbols_class_declaration_with_object_name_nested_in_function();
void test_checksymbols_highlightingTypeWhenUsingNamespaceClass_QTCREATORBUG7903_globalNamespace();
@@ -1548,6 +1549,27 @@ void tst_CheckSymbols::test_checksymbols_AnonymousClass_insideNamespace()
TestData::check(source, expectedUses);
}
void tst_CheckSymbols::test_checksymbols_AnonymousClass_insideFunction()
{
const QByteArray source =
"int foo()\n"
"{\n"
" union\n"
" {\n"
" int foo1;\n"
" int foo2;\n"
" };\n"
"}\n"
;
const QList<Use> expectedUses = QList<Use>()
<< Use(1, 5, 3, CppHighlightingSupport::FunctionUse)
<< Use(5, 13, 4, CppHighlightingSupport::FieldUse)
<< Use(6, 13, 4, CppHighlightingSupport::FieldUse)
;
TestData::check(source, expectedUses);
}
void tst_CheckSymbols::test_checksymbols_AnonymousClass_QTCREATORBUG8963()
{
const QByteArray source =