summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-05-20 12:54:59 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-05-20 12:54:59 +0200
commit36a36799028609ed069f66d557e504f17d0b502a (patch)
tree89fe151e01598d52d489060abca1be93181dccee /src/shared/cplusplus
parent8d5dde66c0a1d9e46f68fddf96454ec4639c0407 (diff)
downloadqt-creator-36a36799028609ed069f66d557e504f17d0b502a.tar.gz
Fixed ObjC selector name creation.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/CheckName.cpp6
1 files changed, 5 insertions, 1 deletions
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<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;
}