summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/CheckName.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-10 15:12:04 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-10 16:20:12 +0100
commit380bce45276e2bff94dcd4453e5d65ffa53bd385 (patch)
tree56e541b869943b9fc218391b4d0b00dafd531868 /src/shared/cplusplus/CheckName.cpp
parentb47eee88695ab5ea499a0197a779e37ad745fd5d (diff)
downloadqt-creator-380bce45276e2bff94dcd4453e5d65ffa53bd385.tar.gz
Cleanup nested name specifiers
Diffstat (limited to 'src/shared/cplusplus/CheckName.cpp')
-rw-r--r--src/shared/cplusplus/CheckName.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/shared/cplusplus/CheckName.cpp b/src/shared/cplusplus/CheckName.cpp
index 4b1c62ff0e..bd899bb7bb 100644
--- a/src/shared/cplusplus/CheckName.cpp
+++ b/src/shared/cplusplus/CheckName.cpp
@@ -82,17 +82,19 @@ Name *CheckName::check(NameAST *name, Scope *scope)
return switchName(previousName);
}
-Name *CheckName::check(NestedNameSpecifierAST *nested_name_specifier, Scope *scope)
+Name *CheckName::check(NestedNameSpecifierListAST *nested_name_specifier_list, Scope *scope)
{
Name *previousName = switchName(0);
Scope *previousScope = switchScope(scope);
std::vector<Name *> names;
- for (NestedNameSpecifierAST *it = nested_name_specifier;
- it; it = it->next) {
- names.push_back(semantic()->check(it->class_or_namespace_name, _scope));
+ for (NestedNameSpecifierListAST *it = nested_name_specifier_list; it; it = it->next) {
+ NestedNameSpecifierAST *nested_name_specifier = it->value;
+ names.push_back(semantic()->check(nested_name_specifier->class_or_namespace_name, _scope));
}
- _name = control()->qualifiedNameId(&names[0], names.size());
+
+ if (! names.empty())
+ _name = control()->qualifiedNameId(&names[0], names.size());
(void) switchScope(previousScope);
return switchName(previousName);
@@ -137,9 +139,9 @@ Scope *CheckName::switchScope(Scope *scope)
bool CheckName::visit(QualifiedNameAST *ast)
{
std::vector<Name *> names;
- for (NestedNameSpecifierAST *it = ast->nested_name_specifier;
- it; it = it->next) {
- names.push_back(semantic()->check(it->class_or_namespace_name, _scope));
+ for (NestedNameSpecifierListAST *it = ast->nested_name_specifier; it; it = it->next) {
+ NestedNameSpecifierAST *nested_name_specifier = it->value;
+ names.push_back(semantic()->check(nested_name_specifier->class_or_namespace_name, _scope));
}
names.push_back(semantic()->check(ast->unqualified_name, _scope));
_name = control()->qualifiedNameId(&names[0], names.size(),