diff --git a/src/shared/cplusplus/CheckName.cpp b/src/shared/cplusplus/CheckName.cpp index 46afb784569426f341c1973f8a374e5cb93ab444..d98c9b9610dac7f3a767bb2599949acf886ae654 100644 --- a/src/shared/cplusplus/CheckName.cpp +++ b/src/shared/cplusplus/CheckName.cpp @@ -367,11 +367,15 @@ bool CheckName::visit(TemplateIdAST *ast) bool CheckName::visit(ObjCSelectorAST *ast) { std::vector<const Name *> names; + bool hasArgs = false; for (ObjCSelectorArgumentListAST *it = ast->selector_argument_list; it; it = it->next) { if (it->value->name_token) { const Identifier *id = control()->findOrInsertIdentifier(spell(it->value->name_token)); const NameId *nameId = control()->nameId(id); names.push_back(nameId); + + if (!hasArgs && it->value->colon_token) + hasArgs = true; } else { // we have an incomplete name due, probably due to error recovery. So, back out completely return false; @@ -379,7 +383,7 @@ bool CheckName::visit(ObjCSelectorAST *ast) } if (!names.empty()) { - _name = control()->selectorNameId(&names[0], names.size(), true); + _name = control()->selectorNameId(&names[0], names.size(), hasArgs); ast->name = _name; }