diff --git a/src/plugins/cppeditor/cppchecksymbols.cpp b/src/plugins/cppeditor/cppchecksymbols.cpp index 1f968d275332ca62ea10e5ab4aee0f69f768a380..6d8a2e3905dcefd69954162d4e1610cdc5f6fded 100644 --- a/src/plugins/cppeditor/cppchecksymbols.cpp +++ b/src/plugins/cppeditor/cppchecksymbols.cpp @@ -480,6 +480,23 @@ bool CheckSymbols::visit(NamedTypeSpecifierAST *) return true; } +bool CheckSymbols::visit(ElaboratedTypeSpecifierAST *ast) +{ + accept(ast->attribute_list); + + if (ast->name) { + if (const Name *name = ast->name->name) { + if (name->isNameId() || name->isTemplateNameId()) { + addUse(ast->name, Use::Type); + return false; + } + } + } + + accept(ast->name); + return false; +} + bool CheckSymbols::visit(MemberAccessAST *ast) { accept(ast->base_expression); diff --git a/src/plugins/cppeditor/cppchecksymbols.h b/src/plugins/cppeditor/cppchecksymbols.h index 848b18365ad3a86a971d598507104321e9d67a84..83e3f5ed52fb9e0be931c70c34ec22bc6022d2b0 100644 --- a/src/plugins/cppeditor/cppchecksymbols.h +++ b/src/plugins/cppeditor/cppchecksymbols.h @@ -130,6 +130,7 @@ protected: virtual bool visit(UsingDirectiveAST *); virtual bool visit(SimpleDeclarationAST *); virtual bool visit(NamedTypeSpecifierAST *); + virtual bool visit(ElaboratedTypeSpecifierAST *ast); virtual bool visit(EnumeratorAST *);