diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-04-17 01:12:17 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-04-17 01:12:17 +0000 |
commit | 688866ba3eb97738b5f7d5acedb73c06a285ea2f (patch) | |
tree | b316ba457c118932d64416516abda3aa4cc3f30a /clang/lib/Sema/TreeTransform.h | |
parent | 649f030819951ebd4e1c28bf479134e966ebe5e3 (diff) | |
download | bcm5719-llvm-688866ba3eb97738b5f7d5acedb73c06a285ea2f.tar.gz bcm5719-llvm-688866ba3eb97738b5f7d5acedb73c06a285ea2f.zip |
PR19452: Implement more of [over.match.oper]p3's restrictions on which non-member overloaded operators can be found when no operand is of class type. We used to fail to implement this rule if there was an operand of dependent type.
llvm-svn: 206435
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 27cf43fd742..4094f5a7166 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -9760,9 +9760,10 @@ TreeTransform<Derived>::RebuildCXXOperatorCallExpr(OverloadedOperatorKind Op, if (UnresolvedLookupExpr *ULE = dyn_cast<UnresolvedLookupExpr>(Callee)) { assert(ULE->requiresADL()); - // FIXME: Do we have to check - // IsAcceptableNonMemberOperatorCandidate for each of these? - Functions.append(ULE->decls_begin(), ULE->decls_end()); + for (auto I = ULE->decls_begin(), E = ULE->decls_end(); I != E; ++I) + SemaRef.addOverloadedOperatorToUnresolvedSet( + Functions, I.getPair(), First->getType(), + Second ? Second->getType() : QualType()); } else { // If we've resolved this to a particular non-member function, just call // that function. If we resolved it to a member function, |