diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp index 8833822c40d..c42c125b90e 100644 --- a/src/libs/cplusplus/FindUsages.cpp +++ b/src/libs/cplusplus/FindUsages.cpp @@ -345,7 +345,7 @@ bool FindUsages::visit(DeclaratorAST *ast) return false; } -void FindUsages::declarator(DeclaratorAST *ast) +void FindUsages::declarator(DeclaratorAST *ast, ScopedSymbol *symbol) { if (! ast) return; @@ -356,6 +356,9 @@ void FindUsages::declarator(DeclaratorAST *ast) for (PtrOperatorListAST *it = ast->ptr_operator_list; it; it = it->next) { this->ptrOperator(it->value); } + + Scope *previousScope = switchScope(symbol); + this->coreDeclarator(ast->core_declarator); for (PostfixDeclaratorListAST *it = ast->postfix_declarator_list; it; it = it->next) { this->postfixDeclarator(it->value); @@ -365,6 +368,7 @@ void FindUsages::declarator(DeclaratorAST *ast) } // unsigned equals_token = ast->equals_token; this->expression(ast->initializer); + (void) switchScope(previousScope); } bool FindUsages::visit(QtPropertyDeclarationItemAST *ast) @@ -1544,8 +1548,8 @@ bool FindUsages::visit(FunctionDefinitionAST *ast) for (SpecifierListAST *it = ast->decl_specifier_list; it; it = it->next) { this->specifier(it->value); } - Scope *previousScope = switchScope(ast->symbol); // ### not exactly. - this->declarator(ast->declarator); + this->declarator(ast->declarator, ast->symbol); + Scope *previousScope = switchScope(ast->symbol); this->ctorInitializer(ast->ctor_initializer); this->statement(ast->function_body); // Function *symbol = ast->symbol; diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h index f48ac945829..bf9e86bfd83 100644 --- a/src/libs/cplusplus/FindUsages.h +++ b/src/libs/cplusplus/FindUsages.h @@ -97,7 +97,7 @@ protected: void objCSelectorArgument(ObjCSelectorArgumentAST *ast); void attribute(AttributeAST *ast); - void declarator(DeclaratorAST *ast); + void declarator(DeclaratorAST *ast, ScopedSymbol *symbol = 0); void qtPropertyDeclarationItem(QtPropertyDeclarationItemAST *ast); void qtInterfaceName(QtInterfaceNameAST *ast); void baseSpecifier(BaseSpecifierAST *ast);