diff options
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 11 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 6 |
2 files changed, 11 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index ba4d450984a..239aaf65c86 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -7599,7 +7599,8 @@ public: // Per C++2a [class.spaceship]p3, as a fallback add: // return static_cast<R>(std::strong_ordering::equal); QualType StrongOrdering = S.CheckComparisonCategoryType( - ComparisonCategoryType::StrongOrdering, Loc); + ComparisonCategoryType::StrongOrdering, Loc, + Sema::ComparisonCategoryUsage::DefaultedOperator); if (StrongOrdering.isNull()) return StmtError(); VarDecl *EqualVD = S.Context.CompCategories.getInfoForType(StrongOrdering) @@ -8057,7 +8058,8 @@ bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, RetLoc = FD->getBeginLoc(); // FIXME: Should we really care whether we have the complete type and the // 'enumerator' constants here? A forward declaration seems sufficient. - QualType Cat = CheckComparisonCategoryType(Info.Category, RetLoc); + QualType Cat = CheckComparisonCategoryType( + Info.Category, RetLoc, ComparisonCategoryUsage::DefaultedOperator); if (Cat.isNull()) return true; Context.adjustDeducedFunctionResultType( @@ -10591,7 +10593,8 @@ struct InvalidSTLDiagnoser { } // namespace QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, - SourceLocation Loc) { + SourceLocation Loc, + ComparisonCategoryUsage Usage) { assert(getLangOpts().CPlusPlus && "Looking for comparison category type outside of C++."); @@ -10620,7 +10623,7 @@ QualType Sema::CheckComparisonCategoryType(ComparisonCategoryType Kind, std::string NameForDiags = "std::"; NameForDiags += ComparisonCategories::getCategoryString(Kind); Diag(Loc, diag::err_implied_comparison_category_type_not_found) - << NameForDiags; + << NameForDiags << (int)Usage; return QualType(); } diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 36eef4f425e..a57ee7b0ff2 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -10601,7 +10601,8 @@ static QualType checkArithmeticOrEnumeralThreeWayCompare(Sema &S, assert(!Type.isNull() && "composite type for <=> has not been set"); return S.CheckComparisonCategoryType( - *getComparisonCategoryForBuiltinCmp(Type), Loc); + *getComparisonCategoryForBuiltinCmp(Type), Loc, + Sema::ComparisonCategoryUsage::OperatorInExpression); } static QualType checkArithmeticOrEnumeralCompare(Sema &S, ExprResult &LHS, @@ -10738,7 +10739,8 @@ QualType Sema::CheckCompareOperands(ExprResult &LHS, ExprResult &RHS, CCT = ComparisonCategoryType::StrongEquality; } - return CheckComparisonCategoryType(*CCT, Loc); + return CheckComparisonCategoryType( + *CCT, Loc, ComparisonCategoryUsage::OperatorInExpression); }; if (!IsRelational && LHSIsNull != RHSIsNull) { |