Commit 3fe1b925 authored by Orgad Shaneh's avatar Orgad Shaneh Committed by Nikolai Kosjar

CppTools: Fix highlighting and follow for template using argument

Use-case:
template<class T>
using Foo = Bar<T>; // T not highlighted

Task-number: QTCREATORBUG-9944
Change-Id: I04cb62ea6a21f158f7fb4fb7ac79ccd6eb1bbfbb
Reviewed-by: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
parent 7389f469
......@@ -177,7 +177,7 @@ protected:
virtual bool visit(Template *symbol)
{
if (Symbol *decl = symbol->declaration()) {
if (decl->isFunction() || decl->isClass())
if (decl->isFunction() || decl->isClass() || decl->isDeclaration())
return process(symbol);
}
return true;
......
......@@ -967,6 +967,11 @@ void CppEditorPlugin::test_FollowSymbolUnderCursor_data()
"struct $Foo {};\n"
"auto foo() -> @Foo {}\n"
);
QTest::newRow("template_alias") << _(
"template<class $T>\n"
"using Foo = Bar<@T>;\n"
);
}
void CppEditorPlugin::test_FollowSymbolUnderCursor()
......
......@@ -423,12 +423,8 @@ Scope *CheckSymbols::enclosingScope() const
return funDef->symbol;
} else if (TemplateDeclarationAST *templateDeclaration = ast->asTemplateDeclaration()) {
if (DeclarationAST *decl = templateDeclaration->declaration) {
if (FunctionDefinitionAST *funDef = decl->asFunctionDefinition()) {
if (funDef->symbol)
return funDef->symbol;
}
}
if (templateDeclaration->symbol)
return templateDeclaration->symbol;
} else if (CompoundStatementAST *blockStmt = ast->asCompoundStatement()) {
if (blockStmt->symbol)
......
......@@ -996,10 +996,11 @@ void tst_CheckSymbols::test_checksymbols_data()
QTest::newRow("template_alias")
<< _("template<class T>\n"
"using Foo = Bar;\n")
"using Foo = Bar<T>;\n")
<< (QList<Use>()
<< Use(1, 16, 1, Highlighting::TypeUse)
<< Use(2, 7, 3, Highlighting::TypeUse)
<< Use(2, 17, 1, Highlighting::TypeUse)
);
QTest::newRow("using_inside_different_namespace_QTCREATORBUG7978")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment