Bring operator name lookup (as required for C++ operator overloading)
into the general name-lookup fold. This cleans up some ugly,
not-quite-working code in the handling of operator overloading.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63735 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index c1e4c0e..d408def 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -1190,7 +1190,8 @@
 
     // Build the candidate set for overloading
     OverloadCandidateSet CandidateSet;
-    AddOperatorCandidates(OverOp, S, Args, 2, CandidateSet);
+    if (AddOperatorCandidates(OverOp, S, OpLoc, Args, 2, CandidateSet))
+      return ExprError();
 
     // Perform overload resolution.
     OverloadCandidateSet::iterator Best;
@@ -1281,7 +1282,9 @@
     // to the candidate set.
     OverloadCandidateSet CandidateSet;
     Expr *Args[2] = { LHSExp, RHSExp };
-    AddOperatorCandidates(OO_Subscript, S, Args, 2, CandidateSet);
+    if (AddOperatorCandidates(OO_Subscript, S, LLoc, Args, 2, CandidateSet,
+                              SourceRange(LLoc, RLoc)))
+      return ExprError();
 
     // Perform overload resolution.
     OverloadCandidateSet::iterator Best;
@@ -3738,7 +3741,8 @@
     // to the candidate set.
     OverloadCandidateSet CandidateSet;
     Expr *Args[2] = { lhs, rhs };
-    AddOperatorCandidates(OverOp, S, Args, 2, CandidateSet);
+    if (AddOperatorCandidates(OverOp, S, TokLoc, Args, 2, CandidateSet))
+      return ExprError();
 
     // Perform overload resolution.
     OverloadCandidateSet::iterator Best;
@@ -3840,8 +3844,9 @@
     // Add the appropriate overloaded operators (C++ [over.match.oper]) 
     // to the candidate set.
     OverloadCandidateSet CandidateSet;
-    if (OverOp != OO_None)
-      AddOperatorCandidates(OverOp, S, &Input, 1, CandidateSet);    
+    if (OverOp != OO_None &&
+        AddOperatorCandidates(OverOp, S, OpLoc, &Input, 1, CandidateSet))
+      return ExprError();
 
     // Perform overload resolution.
     OverloadCandidateSet::iterator Best;