From f7a8c5f05d3c46d3d1f68341b211d74d888634ad Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Fri, 16 Jul 2010 15:23:26 +0200 Subject: [PATCH] Fixed lookup to skip over friend declarations. --- src/libs/cplusplus/LookupContext.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 5c935eb6a11..dc8d3c06d59 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -449,6 +449,9 @@ void ClassOrNamespace::lookup_helper(const Name *name, ClassOrNamespace *binding const Identifier *nameId = name->identifier(); foreach (Symbol *s, binding->symbols()) { + if (s->isFriend()) + continue; + if (ScopedSymbol *scoped = s->asScopedSymbol()) { if (Class *klass = scoped->asClass()) { if (const Identifier *id = klass->identifier()) { @@ -486,6 +489,8 @@ void CreateBindings::lookupInScope(const Name *name, Scope *scope, for (Symbol *s = scope->lookat(op->kind()); s; s = s->next()) { if (! s->name()) continue; + else if (s->isFriend()) + continue; else if (! s->name()->isEqualTo(op)) continue; @@ -497,7 +502,9 @@ void CreateBindings::lookupInScope(const Name *name, Scope *scope, } else if (const Identifier *id = name->identifier()) { for (Symbol *s = scope->lookat(id); s; s = s->next()) { - if (! id->isEqualTo(s->identifier())) + if (s->isFriend()) + continue; // skip friends + else if (! id->isEqualTo(s->identifier())) continue; else if (s->name()->isQualifiedNameId()) continue; // skip qualified ids. -- GitLab