aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2010-07-12 13:41:54 +0200
committerRoberto Raggi <[email protected]>2010-07-12 15:10:00 +0200
commitadfdb51660f3d4251101283efa46b6617cbe43d4 (patch)
tree7c06bc81efca2349820b3f2e69c3d30da34f2df8 /src/libs/cplusplus/ResolveExpression.cpp
parent94264617bfdda8fbfc31921dc9ba49ffff84eaeb (diff)
Recursive definition of CPlusPlus::QualifiedNameId.
Done-with: Erik Verbruggen
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index 21fc815f031..b02b7ecf5d1 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -221,11 +221,10 @@ bool ResolveExpression::visit(NewExpressionAST *ast)
bool ResolveExpression::visit(TypeidExpressionAST *)
{
- const Name *std_type_info[2];
- std_type_info[0] = control()->nameId(control()->findOrInsertIdentifier("std"));
- std_type_info[1] = control()->nameId(control()->findOrInsertIdentifier("type_info"));
+ const Name *stdName = control()->nameId(control()->findOrInsertIdentifier("std"));
+ const Name *tiName = control()->nameId(control()->findOrInsertIdentifier("type_info"));
+ const Name *q = control()->qualifiedNameId(control()->qualifiedNameId(/* :: */ 0, stdName), tiName);
- const Name *q = control()->qualifiedNameId(std_type_info, 2, /*global=*/ true);
FullySpecifiedType ty(control()->namedType(q));
addResult(ty, _scope);
@@ -314,14 +313,11 @@ void ResolveExpression::thisObject()
addResult(ptrTy, fun->scope());
break;
} else if (const QualifiedNameId *q = fun->name()->asQualifiedNameId()) {
- const Name *nestedNameSpecifier = 0;
- if (q->nameCount() == 1 && q->isGlobal())
- nestedNameSpecifier = q->nameAt(0);
- else
- nestedNameSpecifier = control()->qualifiedNameId(q->names(), q->nameCount() - 1);
- FullySpecifiedType classTy(control()->namedType(nestedNameSpecifier));
- FullySpecifiedType ptrTy(control()->pointerType(classTy));
- addResult(ptrTy, fun->scope());
+ if (q->base()) {
+ FullySpecifiedType classTy(control()->namedType(q->base()));
+ FullySpecifiedType ptrTy(control()->pointerType(classTy));
+ addResult(ptrTy, fun->scope());
+ }
break;
}
}