diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-09-30 00:03:47 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-09-30 00:03:47 +0000 |
commit | 5d64e5b6bc03462e8b7d0cd804565829afb1b508 (patch) | |
tree | 812ecce43c64a8ba4119c93212d51e3e64bbada1 /lib/Sema/SemaExprCXX.cpp | |
parent | bf1cc05907ceb2081e8158b26f3d3f48b31caad3 (diff) |
Find operators new/delete in base classes. FIXME -= 2;
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83119 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprCXX.cpp')
-rw-r--r-- | lib/Sema/SemaExprCXX.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 0ad18cdb31..3ca8849e6c 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -589,10 +589,8 @@ bool Sema::FindAllocationOverload(SourceLocation StartLoc, SourceRange Range, DeclarationName Name, Expr** Args, unsigned NumArgs, DeclContext *Ctx, bool AllowMissing, FunctionDecl *&Operator) { - // FIXME: Change to use LookupQualifiedName! - DeclContext::lookup_iterator Alloc, AllocEnd; - llvm::tie(Alloc, AllocEnd) = Ctx->lookup(Name); - if (Alloc == AllocEnd) { + LookupResult R = LookupQualifiedName(Ctx, Name, LookupOrdinaryName); + if (!R) { if (AllowMissing) return false; return Diag(StartLoc, diag::err_ovl_no_viable_function_in_call) @@ -600,7 +598,8 @@ bool Sema::FindAllocationOverload(SourceLocation StartLoc, SourceRange Range, } OverloadCandidateSet Candidates; - for (; Alloc != AllocEnd; ++Alloc) { + for (LookupResult::iterator Alloc = R.begin(), AllocEnd = R.end(); + Alloc != AllocEnd; ++Alloc) { // Even member operator new/delete are implicitly treated as // static, so don't use AddMemberCandidate. if (FunctionDecl *Fn = dyn_cast<FunctionDecl>(*Alloc)) { |