C++: fix auto completion for template parameters

Fix auto completion for the case when template parameter should be
found somewhere of scope of template instantiation declaration.
Example:
struct A
{
    void foo();
    struct B
    {
        int b;
    };
};

template<typename T>
struct Template
{
    T* get() { return 0; }
    T t;
};

void A::foo()
{
    Template<B> templ;
    templ.get()->//no autocompletion
    templ.t.//no autocompletion
}

Task-number: QTCREATORBUG-8852
Task-number: QTCREATORBUG-9169
Change-Id: I56b40776e66740f995ae6fc5d69e3c50139a3af2
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Przemyslaw Gorszkowski
2013-06-18 23:05:57 +02:00
committed by Nikolai Kosjar
parent 62af817175
commit bfbf93e64f
4 changed files with 302 additions and 34 deletions

View File

@@ -156,6 +156,12 @@ private slots:
void test_completion_enum_inside_block_inside_function_QTCREATORBUG5456();
void test_completion_enum_inside_function_QTCREATORBUG5456();
void test_completion_template_parameter_defined_inside_scope_of_declaration_QTCREATORBUG9169_1();
void test_completion_template_parameter_defined_inside_scope_of_declaration_QTCREATORBUG9169_2();
void test_completion_template_parameter_defined_inside_scope_of_declaration_QTCREATORBUG8852_1();
void test_completion_template_parameter_defined_inside_scope_of_declaration_QTCREATORBUG8852_2();
void test_completion_template_parameter_defined_inside_scope_of_declaration_QTCREATORBUG8852_3();
//lambda
void test_completion_lambdaCalls_1();
void test_completion_lambdaCalls_2();