diff options
| author | Roberto Raggi <[email protected]> | 2010-07-12 13:41:54 +0200 |
|---|---|---|
| committer | Roberto Raggi <[email protected]> | 2010-07-12 15:10:00 +0200 |
| commit | adfdb51660f3d4251101283efa46b6617cbe43d4 (patch) | |
| tree | 7c06bc81efca2349820b3f2e69c3d30da34f2df8 /src/libs/cplusplus/ResolveExpression.cpp | |
| parent | 94264617bfdda8fbfc31921dc9ba49ffff84eaeb (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.cpp | 20 |
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; } } |
