diff options
Diffstat (limited to 'lib/Sema/SemaOverload.cpp')
-rw-r--r-- | lib/Sema/SemaOverload.cpp | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index 7d4507d7f1..69f48d69a8 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -5539,11 +5539,19 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, assert(false && "Expected an overloaded operator"); break; - case OO_Star: // '*' is either unary or binary - if (NumArgs == 1) - OpBuilder.addUnaryStarPointerOverloads(); - else - OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); + case OO_New: + case OO_Delete: + case OO_Array_New: + case OO_Array_Delete: + case OO_Call: + assert(false && "Special operators don't use AddBuiltinOperatorCandidates"); + break; + + case OO_Comma: + case OO_Arrow: + // C++ [over.match.oper]p3: + // -- For the operator ',', the unary operator '&', or the + // operator '->', the built-in candidates set is empty. break; case OO_Plus: // '+' is either unary or binary @@ -5560,14 +5568,15 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, } break; - case OO_Amp: // '&' is either unary or binary + case OO_Star: // '*' is either unary or binary if (NumArgs == 1) - // C++ [over.match.oper]p3: - // -- For the operator ',', the unary operator '&', or the - // operator '->', the built-in candidates set is empty. - break; + OpBuilder.addUnaryStarPointerOverloads(); + else + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); + break; - OpBuilder.addBinaryBitwiseArithmeticOverloads(Op); + case OO_Slash: + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); break; case OO_PlusPlus: @@ -5576,25 +5585,6 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, OpBuilder.addPlusPlusMinusMinusPointerOverloads(); break; - case OO_Tilde: - OpBuilder.addUnaryTildePromotedIntegralOverloads(); - break; - - case OO_New: - case OO_Delete: - case OO_Array_New: - case OO_Array_Delete: - case OO_Call: - assert(false && "Special operators don't use AddBuiltinOperatorCandidates"); - break; - - case OO_Comma: - case OO_Arrow: - // C++ [over.match.oper]p3: - // -- For the operator ',', the unary operator '&', or the - // operator '->', the built-in candidates set is empty. - break; - case OO_EqualEqual: case OO_ExclaimEqual: OpBuilder.addEqualEqualOrNotEqualMemberPointerOverloads(); @@ -5609,10 +5599,6 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/true); break; - case OO_Slash: - OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); - break; - case OO_Percent: case OO_Caret: case OO_Pipe: @@ -5621,6 +5607,20 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, OpBuilder.addBinaryBitwiseArithmeticOverloads(Op); break; + case OO_Amp: // '&' is either unary or binary + if (NumArgs == 1) + // C++ [over.match.oper]p3: + // -- For the operator ',', the unary operator '&', or the + // operator '->', the built-in candidates set is empty. + break; + + OpBuilder.addBinaryBitwiseArithmeticOverloads(Op); + break; + + case OO_Tilde: + OpBuilder.addUnaryTildePromotedIntegralOverloads(); + break; + case OO_Equal: OpBuilder.addAssignmentMemberPointerOrEnumeralOverloads(); // Fall through. |