C++: add support for local types

This change addes support for class, enum definition inside blocks({}) or
functions, e.g.:
void f()
{
	struct S
	{
		int bar;
	};
	S s;
	s.bar;
}

It fixes:
* code completion
* highlighting
* follow symbol
* marking
* find usages

It fixes also problem with namespace aliases inside blocks or functions.

This change can have also impact on performance(there are additional processing)

Task-number: QTCREATORBUG-166 (namespace aliases inside function/block)
Task-number: QTCREATORBUG-3620
Task-number: QTCREATORBUG-6013
Task-number: QTCREATORBUG-8020
Change-Id: Iaea6c6dfe276f1d7b2279b50bdd2e68e375d31eb
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Przemyslaw Gorszkowski
2013-06-03 11:03:48 +02:00
committed by Erik Verbruggen
parent 2bc24b7a25
commit 68d6a762d9
6 changed files with 426 additions and 3 deletions

View File

@@ -148,6 +148,14 @@ private slots:
void test_completion_recursive_using_declarations2();
void test_completion_recursive_using_typedef_declarations();
void test_completion_class_declaration_inside_function_or_block_QTCREATORBUG3620();
void test_completion_class_declaration_inside_function_or_block_QTCREATORBUG3620_data();
void test_completion_namespace_alias_inside_function_or_block_QTCREATORBUG166();
void test_completion_namespace_alias_inside_function_or_block_QTCREATORBUG166_data();
void test_completion_class_declaration_inside_function_or_block_QTCREATORBUG3620_static_member();
void test_completion_enum_inside_block_inside_function_QTCREATORBUG5456();
void test_completion_enum_inside_function_QTCREATORBUG5456();
void test_format_pointerdeclaration_in_simpledeclarations();
void test_format_pointerdeclaration_in_simpledeclarations_data();
void test_format_pointerdeclaration_in_controlflowstatements();