From 36a36799028609ed069f66d557e504f17d0b502a Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 20 May 2010 12:54:59 +0200 Subject: Fixed ObjC selector name creation. --- src/shared/cplusplus/CheckName.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/shared/cplusplus/CheckName.cpp') diff --git a/src/shared/cplusplus/CheckName.cpp b/src/shared/cplusplus/CheckName.cpp index 46afb78456..d98c9b9610 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 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; } -- cgit v1.2.1