Author: Arthur O'Dwyer Date: 2022-01-27T17:36:08-05:00 New Revision: f9a00b3cbc580cf79688fa813c6e898e90b4fd43
URL: https://github.com/llvm/llvm-project/commit/f9a00b3cbc580cf79688fa813c6e898e90b4fd43 DIFF: https://github.com/llvm/llvm-project/commit/f9a00b3cbc580cf79688fa813c6e898e90b4fd43.diff LOG: Revert "[clang] Don't typo-fix an expression in a SFINAE context." This reverts commit 9be5f4d5afd9a1b6e88a268f6ea6eb282d77d9fe. I'm not sure if this caused https://lab.llvm.org/buildbot/#/builders/60/builds/6350 https://lab.llvm.org/buildbot/#/builders/119/builds/7433 but I'm acting as if it did. Added: Modified: clang/lib/Sema/Sema.cpp clang/lib/Sema/SemaExprMember.cpp Removed: clang/test/SemaCXX/PR52970.cpp ################################################################################ diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 20b4a9a5d4e6c..a5a62276043dc 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -2554,11 +2554,6 @@ static bool IsCPUDispatchCPUSpecificMultiVersion(const Expr *E) { bool Sema::tryToRecoverWithCall(ExprResult &E, const PartialDiagnostic &PD, bool ForceComplain, bool (*IsPlausibleResult)(QualType)) { - if (isSFINAEContext()) { - // If this is a SFINAE context, don't try anything that might trigger ADL - // prematurely. - return false; - } SourceLocation Loc = E.get()->getExprLoc(); SourceRange Range = E.get()->getSourceRange(); diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp index dfd93aa4638d2..f67ef030feb70 100644 --- a/clang/lib/Sema/SemaExprMember.cpp +++ b/clang/lib/Sema/SemaExprMember.cpp @@ -1645,9 +1645,6 @@ static ExprResult LookupMemberExpr(Sema &S, LookupResult &R, << BaseType << int(IsArrow) << BaseExpr.get()->getSourceRange() << FixItHint::CreateReplacement(OpLoc, "->"); - if (S.isSFINAEContext()) - return ExprError(); - // Recurse as an -> access. IsArrow = true; return LookupMemberExpr(S, R, BaseExpr, IsArrow, OpLoc, SS, diff --git a/clang/test/SemaCXX/PR52970.cpp b/clang/test/SemaCXX/PR52970.cpp deleted file mode 100644 index fcbb61af18e6a..0000000000000 --- a/clang/test/SemaCXX/PR52970.cpp +++ /dev/null @@ -1,57 +0,0 @@ -// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s -// RUN: %clang_cc1 -fsyntax-only -std=c++14 -verify %s -// RUN: %clang_cc1 -fsyntax-only -std=c++17 -verify %s -// RUN: %clang_cc1 -fsyntax-only -std=c++20 -verify %s -// expected-no-diagnostics - -struct Incomplete; -template <class T> struct Holder { T t; }; - -namespace DotFollowingFunctionName { -struct Good { - struct Nested { - int b; - } a; -}; - -struct Bad { - Holder<Incomplete> a(); -}; - -template <class T> -constexpr auto f(T t) -> decltype((t.a.b, true)) { return true; } -constexpr bool f(...) { return false; } - -static_assert(DotFollowingFunctionName::f(Good{}), ""); -static_assert(!DotFollowingFunctionName::f(Bad{}), ""); - -#if __cplusplus >= 202002L -template <class T> -concept C = requires(T t) { t.a.b; }; - -static_assert(C<Good>); -static_assert(!C<Bad>); -#endif -} // namespace DotFollowingFunctionName - -namespace DotFollowingPointer { -struct Good { - int begin(); -}; -using Bad = Holder<Incomplete> *; - -template <class T> -constexpr auto f(T t) -> decltype((t.begin(), true)) { return true; } -constexpr bool f(...) { return false; } - -static_assert(DotFollowingPointer::f(Good{}), ""); -static_assert(!DotFollowingPointer::f(Bad{}), ""); - -#if __cplusplus >= 202002L -template <class T> -concept C = requires(T t) { t.begin(); }; - -static_assert(C<Good>); -static_assert(!C<Bad>); -#endif -} // namespace DotFollowingPointer _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits