Author: Saar Raz Date: 2020-02-05T00:58:02+02:00 New Revision: c348fb1786ba62a69ec0ee9e9ed4a77fc46e071f
URL: https://github.com/llvm/llvm-project/commit/c348fb1786ba62a69ec0ee9e9ed4a77fc46e071f DIFF: https://github.com/llvm/llvm-project/commit/c348fb1786ba62a69ec0ee9e9ed4a77fc46e071f.diff LOG: Revert "[Concepts] Add missing CXXThisScope to function template constraint substitution" This reverts commit 0c67cfdb114b4c2f5c7ec374cf12118c7fa9d768 which has a broken test. Added: Modified: clang/lib/Sema/SemaConcept.cpp clang/lib/Sema/SemaTemplateInstantiateDecl.cpp clang/test/SemaTemplate/instantiate-requires-clause.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp index 290e4cbff4fd..39169664dad5 100755 --- a/clang/lib/Sema/SemaConcept.cpp +++ b/clang/lib/Sema/SemaConcept.cpp @@ -329,13 +329,6 @@ bool Sema::CheckFunctionConstraints(const FunctionDecl *FD, Satisfaction.IsSatisfied = true; return false; } - Qualifiers ThisQuals; - CXXRecordDecl *Record = nullptr; - if (auto *Method = dyn_cast<CXXMethodDecl>(FD)) { - ThisQuals = Method->getMethodQualifiers(); - Record = const_cast<CXXRecordDecl *>(Method->getParent()); - } - CXXThisScopeRAII ThisScope(*this, Record, ThisQuals, Record != nullptr); // We substitute with empty arguments in order to rebuild the atomic // constraint in a constant-evaluated context. // FIXME: Should this be a dedicated TreeTransform? diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 7094462e74c9..0e1d5fa77c69 100755 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -4271,13 +4271,7 @@ bool Sema::CheckInstantiatedFunctionTemplateConstraints( Scope, MLTAL)) return true; } - Qualifiers ThisQuals; - CXXRecordDecl *Record = nullptr; - if (auto *Method = dyn_cast<CXXMethodDecl>(Decl)) { - ThisQuals = Method->getMethodQualifiers(); - Record = Method->getParent(); - } - CXXThisScopeRAII ThisScope(*this, Record, ThisQuals, Record != nullptr); + return CheckConstraintSatisfaction(Template, TemplateAC, TemplateArgs, PointOfInstantiation, Satisfaction); } diff --git a/clang/test/SemaTemplate/instantiate-requires-clause.cpp b/clang/test/SemaTemplate/instantiate-requires-clause.cpp index 2a42e2410fc3..8e9d5bffa906 100644 --- a/clang/test/SemaTemplate/instantiate-requires-clause.cpp +++ b/clang/test/SemaTemplate/instantiate-requires-clause.cpp @@ -57,13 +57,4 @@ struct S3 { static constexpr void f(Args...) { } }; -static_assert((S3<int>::f(), true)); - -template<typename T> -struct S4 { - template<typename> - void foo() requires (*this, true) { } - void goo() requires (*this, true) { } -}; - -static_assert((S4<int>{}.foo<int>(), S4<int>{}.goo(), true)); +static_assert((S3<int>::f(), true)); \ No newline at end of file _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits