aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <[email protected]>2010-08-11 12:26:02 +0200
committerRoberto Raggi <[email protected]>2010-08-11 15:25:18 +0200
commit354b9712e4655040930a9f18de4e6b4c71dc42d9 (patch)
tree474bab43aa8a84893f38b8a0552f8071404e6a12 /src/libs/cplusplus/ResolveExpression.cpp
parent5accc9664ea247a5b9e1fa6097a04252fb57f01b (diff)
Merged ScopedSymbol and Scope.
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index 6cb276d81b0..55c4c3ac42a 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -88,7 +88,8 @@ QList<LookupItem> ResolveExpression::operator()(ExpressionAST *ast, Scope *scope
QList<LookupItem> ResolveExpression::resolve(ExpressionAST *ast, Scope *scope)
{
- Q_ASSERT(scope != 0);
+ if (! scope)
+ return QList<LookupItem>();
Scope *previousVisibleSymbol = _scope;
_scope = scope;
@@ -174,7 +175,7 @@ bool ResolveExpression::visit(BinaryExpressionAST *ast)
bool ResolveExpression::visit(CastExpressionAST *ast)
{
- Scope *dummyScope = _context.expressionDocument()->globalSymbols();
+ Scope *dummyScope = _context.expressionDocument()->globalNamespace();
FullySpecifiedType ty = sem.check(ast->type_id, dummyScope);
addResult(ty, _scope);
return false;
@@ -199,7 +200,7 @@ bool ResolveExpression::visit(ConditionalExpressionAST *ast)
bool ResolveExpression::visit(CppCastExpressionAST *ast)
{
- Scope *dummyScope = _context.expressionDocument()->globalSymbols();
+ Scope *dummyScope = _context.expressionDocument()->globalNamespace();
FullySpecifiedType ty = sem.check(ast->type_id, dummyScope);
addResult(ty, _scope);
return false;
@@ -221,7 +222,7 @@ bool ResolveExpression::visit(ArrayInitializerAST *)
bool ResolveExpression::visit(NewExpressionAST *ast)
{
if (ast->new_type_id) {
- Scope *dummyScope = _context.expressionDocument()->globalSymbols();
+ Scope *dummyScope = _context.expressionDocument()->globalNamespace();
FullySpecifiedType ty = sem.check(ast->new_type_id->type_specifier_list, dummyScope);
ty = sem.check(ast->new_type_id->ptr_operator_list, ty, dummyScope);
FullySpecifiedType ptrTy(control()->pointerType(ty));
@@ -315,11 +316,9 @@ bool ResolveExpression::visit(ThisExpressionAST *)
void ResolveExpression::thisObject()
{
Scope *scope = _scope;
- for (; scope; scope = scope->enclosingScope()) {
- if (scope->isPrototypeScope()) {
- Function *fun = scope->owner()->asFunction();
- if (Scope *cscope = scope->enclosingClassScope()) {
- Class *klass = cscope->owner()->asClass();
+ for (; scope; scope = scope->scope()) {
+ if (Function *fun = scope->asFunction()) {
+ if (Class *klass = scope->enclosingClass()) {
FullySpecifiedType classTy(control()->namedType(klass->name()));
FullySpecifiedType ptrTy(control()->pointerType(classTy));
addResult(ptrTy, fun->scope());
@@ -562,7 +561,7 @@ QList<LookupItem> ResolveExpression::getMembers(ClassOrNamespace *binding, const
Symbol *decl = m.declaration();
- if (Class *klass = decl->enclosingSymbol()->asClass()) {
+ if (Class *klass = decl->scope()->asClass()) {
if (klass->templateParameters() != 0) {
SubstitutionMap map;