diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-07-16 15:23:26 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-07-16 16:04:58 +0200 |
commit | f7a8c5f05d3c46d3d1f68341b211d74d888634ad (patch) | |
tree | 05642b126ba7af02eb4c8a00d0fc013d99fd2036 /src/libs/cplusplus/LookupContext.cpp | |
parent | 52f4a6d8e14afe31a9bbc31baaff69a330e8f31a (diff) | |
download | qt-creator-f7a8c5f05d3c46d3d1f68341b211d74d888634ad.tar.gz |
Fixed lookup to skip over friend declarations.
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 5c935eb6a1..dc8d3c06d5 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. |